-
Notifications
You must be signed in to change notification settings - Fork 79
140 lines (119 loc) · 4.78 KB
/
positron-windows-nightly.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: "Positron: Windows Full Test Suite"
# Run tests daily at 4am UTC (11p EST) on weekdays for now, or manually
on:
schedule:
- cron: "0 4 * * 1-5"
workflow_dispatch:
permissions:
id-token: write
contents: read
jobs:
windows:
name: Tests on Windows
runs-on:
labels: [windows-latest-8x]
timeout-minutes: 60
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
POSITRON_BUILD_NUMBER: 0 # CI skips building releases
BUILD_ARTIFACTSTAGINGDIRECTORY: ..\..\.build\logs\smoke-tests-electron
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Install System Level Python
uses: actions/setup-python@v5
with:
python-version: "3.10.10"
- name: Cache node_modules, build, extensions, and remote
uses: ./.github/actions/cache-multi-paths
- name: Install node dependencies with yarn
env:
npm_config_arch: x64
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
POSITRON_GITHUB_PAT: ${{ github.token }}
shell: pwsh
# nvm on windows does not see .nvmrc
#
# the installation of the npm package windows-process-tree is known to fail
# intermittently in the Github Actions build environment, so we retry
# this step a few times if necessary.
#
# see https://github.com/posit-dev/positron/issues/3481
run: |
corepack enable
.\scripts\run-with-retry.ps1 -maxAttempts 3 -command "yarn --network-timeout 120000"
yarn --cwd test/automation install --frozen-lockfile
yarn --cwd test/smoke install --frozen-lockfile
- name: Compile and Download
run: yarn npm-run-all --max-old-space-size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions
- name: Compile Smoke Tests
run: |
yarn --cwd test/automation compile
yarn --cwd test/smoke compile
- name: Install python dependencies
run: |
curl https://raw.githubusercontent.com/posit-dev/qa-example-content/main/requirements.txt --output requirements.txt
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install ipykernel trcli
- name: Set up R
uses: r-lib/actions/setup-r@v2
with:
r-version: '4.4.0'
- name: Install R packages
run: |
curl https://raw.githubusercontent.com/posit-dev/qa-example-content/main/DESCRIPTION --output DESCRIPTION
Rscript -e "install.packages('pak')"
Rscript -e "pak::local_install_dev_deps(ask = FALSE)"
- name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@v2.0.2
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tinytex: true
- name: Run Smoke Tests (Electron)
env:
POSITRON_PY_VER_SEL: 3.10.10
POSITRON_R_VER_SEL: 4.4.0
id: electron-smoke-tests
run: |
Write-Output $env:BUILD_ARTIFACTSTAGINGDIRECTORY # debug
cd test\smoke
node run-tests.js --tracing --win
Get-ChildItem -Recurse -Filter "*results.xml" # debug
- name: Set TestRail Run Title
id: set-testrail-run-title
if: success() || failure()
run: echo "TESTRAIL_TITLE=$(Get-Date -Format 'yyyy-MM-dd') Nightly Smoke Tests - $env:GITHUB_REF_NAME" >> $env:GITHUB_ENV
shell: pwsh
- name: Upload Test Results to TestRail
id: testrail-upload
if: success() || failure()
shell: pwsh
run: |
trcli --host "https://posit.testrail.io/" --project Positron --username testrailautomation@posit.co --key ${{ secrets.TESTRAIL_API_KEY}} parse_junit --file ".build/logs/smoke-tests-electron/test-results/xunit-results.xml" --case-matcher name --title "$env:TESTRAIL_TITLE" --close-run
- name: Upload run artifacts - electron
if: always()
uses: actions/upload-artifact@v4
with:
name: run-artifacts-electron
path: .build/logs/smoke-tests-electron/
slack-notification:
name: "Send Slack notification"
runs-on: ubuntu-latest
needs: windows
if: ${{ failure() && github.ref == 'refs/heads/main' }}
steps:
- name: "Send Slack notification"
uses: testlabauto/action-test-results-to-slack@v0.0.6
with:
github_token: ${{ secrets.POSITRON_GITHUB_PAT }}
slack_token: ${{ secrets.SMOKE_TESTS_SLACK_TOKEN }}
slack_channel: C07FR1JNZNJ #positron-test-results channel
suite_name: Positron Full Test Suite (Windows)