Lock file maintenance #414
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: | |
branches: | |
- main | |
- master | |
pull_request: {} | |
concurrency: | |
group: ci-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
env: | |
TURBO_API: http://127.0.0.1:9080 | |
TURBO_TOKEN: this-is-not-a-secret | |
TURBO_TEAM: myself | |
jobs: | |
setup: | |
name: 'Setup' | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
outputs: | |
pending: ${{ steps.set-pending.outputs.pending }} | |
steps: | |
- uses: wyvox/action@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: pnpm build | |
- id: set-pending | |
run: echo "pending=$(./cache-status.sh)" >> $GITHUB_OUTPUT | |
debug: | |
name: Debug | |
runs-on: ubuntu-latest | |
needs: [setup] | |
timeout-minutes: 5 | |
steps: | |
- name: raw json | |
run: echo "${{ needs.setup.outputs.pending }}" | |
continue-on-error: true | |
- name: json | |
run: echo '${{ needs.setup.outputs.pending }}' | jq -C | |
continue-on-error: true | |
- name: test condition | |
run: echo '${{ fromJSON(needs.setup.outputs.pending).test-app.test.status }}' | |
continue-on-error: true | |
- name: types condition | |
run: echo "${{ fromJSON(needs.setup.outputs.pending).test-app['lint:types'].status }}" | |
continue-on-error: true | |
# Every PR will need linting. Turbo's cache can optimize per-package | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
needs: [setup] | |
timeout-minutes: 5 | |
steps: | |
- uses: wyvox/action@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: pnpm lint | |
test: | |
name: "Default Tests" | |
runs-on: ubuntu-latest | |
needs: [setup] | |
timeout-minutes: 5 | |
if: ${{ fromJSON(needs.setup.outputs.pending).test-app.test.status != 'HIT' }} | |
steps: | |
- uses: wyvox/action@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: pnpm turbo test --filter test-app | |
floating: | |
name: "Floating Dependencies" | |
runs-on: ubuntu-latest | |
needs: [test] | |
timeout-minutes: 5 | |
if: ${{ fromJSON(needs.setup.outputs.pending).test-app.test.status != 'HIT' }} | |
steps: | |
- uses: wyvox/action@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
pnpm-args: --no-lockfile | |
- run: pnpm build | |
- run: pnpm i -f | |
- run: pnpm turbo test --filter test-app | |
try-scenarios: | |
name: ${{ matrix.try-scenario }} | |
runs-on: ubuntu-latest | |
needs: [test] | |
timeout-minutes: 10 | |
if: ${{ fromJSON(needs.setup.outputs.pending).test-app.test.status != 'HIT' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
try-scenario: | |
- "ember-3.13" | |
- "ember-3.14" | |
- "ember-3.16" | |
- "ember-3.18" | |
- "ember-3.20" | |
- "ember-3.24" | |
- "ember-3.28" | |
- "ember-4.4" | |
- "ember-4.8" | |
- "ember-4.12" | |
- "ember-5.0" | |
- ember-release | |
- ember-beta | |
- ember-canary | |
steps: | |
- uses: wyvox/action@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: pnpm build | |
- name: Run Tests | |
run: ./node_modules/.bin/ember try:one ${{ matrix.try-scenario }} --skip-cleanup | |
working-directory: test-app | |
# NOTE: Docs' types don't need checking because we check types in the | |
# Lint phase up above | |
# This job is for checking specific versions of typescript | |
typecheck: | |
name: '${{ matrix.typescript-scenario }}' | |
runs-on: ubuntu-latest | |
if: ${{ fromJSON(needs.setup.outputs.pending).test-app['lint:types'].status != 'HIT' }} | |
timeout-minutes: 5 | |
needs: [test] | |
continue-on-error: true | |
strategy: | |
fail-fast: true | |
matrix: | |
typescript-scenario: | |
- [email protected] | |
- [email protected] | |
- [email protected] | |
- [email protected] | |
- typescript@rc | |
- typescript@next | |
steps: | |
- uses: wyvox/action@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: pnpm build | |
- run: pnpm i -f | |
- name: 'Change TS to ${{ matrix.typescript-scenario }}' | |
run: 'pnpm add --save-dev ${{ matrix.typescript-scenario}}' | |
working-directory: ./test-app | |
- name: 'Type checking' | |
run: pnpm turbo --filter 'test-app' lint:types | |