Enable manual CI dispatch #704
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: CI | |
on: | |
push: | |
workflow_dispatch: | |
jobs: | |
check: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: "opensafely-core/setup-action@v1" | |
with: | |
python-version: "3.10" | |
install-just: true | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.node-version' | |
cache: "npm" | |
cache-dependency-path: | | |
package-lock.json | |
sacro-app/package-lock.json | |
- name: Install dependencies | |
run: just assets-install && just sacro-app/npm-ci | |
- name: Check formatting, linting and import sorting | |
run: just check | |
test: | |
strategy: | |
matrix: | |
os: [ubuntu-22.04, windows-2022, macos-12] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: "opensafely-core/setup-action@v1" | |
with: | |
python-version: "3.10" | |
install-just: true | |
# our just setup doesn't make just available on the path | |
- uses: extractions/setup-just@69d82fb0233557aec017ef13706851d0694e0f1d | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.node-version' | |
cache: "npm" | |
cache-dependency-path: | | |
**/package-lock.json | |
sacro-app/package-lock.json | |
- name: dumpenv | |
if: matrix.os == 'macos-12' | |
run: | | |
echo "$DEVELOPER_DIR" | |
ls /Applications/Xcode* | |
xcode-select --print-path | |
- name: Run tests | |
run: just test | |
- name: Cypress run | |
uses: cypress-io/github-action@d69252d52b9a31bad4f418f05ba2bc83687a02eb #v5.8.3 | |
with: | |
start: just run | |
wait-on: "http://localhost:8000/" | |
- uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: cypress-screenshots | |
path: cypress/screenshots | |
if-no-files-found: ignore | |
- uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: cypress-videos | |
path: cypress/videos | |
if-no-files-found: ignore | |
build: | |
needs: [check, test] | |
permissions: | |
contents: write | |
strategy: | |
matrix: | |
os: [ubuntu-22.04, windows-2022, macos-12] | |
include: | |
- os: ubuntu-22.04 | |
build_name: linux | |
build_path: sacro-app/dist/@opensafely/sacro*.deb | |
upload_path: sacro*.deb | |
- os: windows-2022 | |
build_name: windows | |
build_path: sacro-app/dist/SACRO*.msi | |
upload_path: SACRO*.msi | |
- os: macos-12 | |
build_name: macos | |
build_path: sacro-app/dist/sacro*.dmg | |
upload_path: sacro*.dmg | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: "opensafely-core/setup-action@v1" | |
with: | |
python-version: "3.10" | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.node-version' | |
cache: "npm" | |
cache-dependency-path: | | |
**/package-lock.json | |
sacro-app/package-lock.json | |
# our just setup doesn't make just available on the path | |
- uses: extractions/setup-just@69d82fb0233557aec017ef13706851d0694e0f1d | |
- name: Download sample data | |
run: just test-outputs | |
# record asset build step separately for CI timings. | |
- name: Build assets and collect | |
run: just collectstatic | |
- name: Build Python pyoxidizer binary | |
run: just build | |
- name: Build app | |
run: | | |
mkdir -p sacro-app/dist/@opensafely | |
just sacro-app/build | |
# copy build artifact current directory | |
- name: Copy built artifact | |
run: cp ${{ matrix.build_path }} . | |
- name: Upload build | |
if: success() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: SACRO-latest-${{ matrix.build_name }}-build | |
path: | | |
${{ matrix.upload_path }} | |
outputs/* | |
!outputs/.keep |