test on macos, use matrix #693
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: | |
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: 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 | |
- name: Build Python 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 |