Skip to content

test on macos, use matrix #699

test on macos, use matrix

test on macos, use matrix #699

Workflow file for this run

---
name: CI
on:
push:
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