[Line Diagram]: Set up new line page LiveView to use the same header & tabs layout as the existing one #10208
Workflow file for this run
This file contains hidden or 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] | |
| pull_request: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| MIX_ENV: test | |
| MBTA_API_BASE_URL: ${{ secrets.MBTA_API_BASE_URL }} | |
| MBTA_API_KEY: ${{ secrets.MBTA_API_KEY }} | |
| permissions: | |
| contents: read | |
| jobs: | |
| file_changes: | |
| runs-on: ubuntu-latest | |
| # Skip this workflow if the commit message contains "AUTOMATED TRANSLATIONS" | |
| if: ${{ !contains(github.event.head_commit.message, 'AUTOMATED TRANSLATIONS') }} | |
| outputs: | |
| ts: ${{ steps.changes.outputs.ts == 'true' }} | |
| js: ${{ steps.changes.outputs.js == 'true' }} | |
| ex: ${{ steps.changes.outputs.ex == 'true' }} | |
| scss: ${{ steps.changes.outputs.scss == 'true' }} | |
| run_all: ${{ steps.set_run_all.outputs.run_all == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - id: set_run_all | |
| run: echo "run_all=${{ github.event_name == 'push' || contains(github.head_ref, 'dependabot/') }}" >> $GITHUB_OUTPUT | |
| - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2 | |
| id: changes | |
| with: | |
| filters: | | |
| ts: | |
| - 'assets/ts/**' | |
| js: | |
| - 'assets/js/**' | |
| ex: | |
| - '**.ex' | |
| - '**.exs' | |
| - '**.eex' | |
| - '**.heex' | |
| scss: | |
| - 'assets/css/**.scss' | |
| build_image: | |
| name: Build Docker image | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - run: docker build . | |
| eslintts: | |
| name: Linting / TypeScript | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ts == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: npm run ci:lint:ts | |
| jslint: | |
| name: Linting / JavaScript | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.js == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: npm run ci:lint:js | |
| stylelint: | |
| name: Linting / CSS | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.scss == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: npm run ci:lint:scss | |
| elixirlint: | |
| name: Linting / Elixir | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ (needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ex == 'true') && github.event_name == 'pull_request' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: git fetch origin main:main | |
| - run: npm run ci:lint:ex | |
| zizmor: | |
| name: Security / Zizmor | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - name: Run zizmor | |
| uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1 | |
| with: | |
| advanced-security: false | |
| build_app: | |
| name: Build application and assets | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - name: Cache _build | |
| uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25 # v5.1.0 | |
| with: | |
| path: | | |
| _build | |
| priv | |
| key: ci-application-cache-${{ github.sha }} | |
| - run: | # zizmor: ignore[adhoc-packages] Zizmor is incorrectly pattern-matching the npm command as something like npm install foo@1.0, which would be an adhoc package installation worth avoiding | |
| npm install --prefix assets | |
| - run: npm --prefix assets run webpack:build | |
| - run: mix compile --all-warnings | |
| elixir_unit: | |
| name: Unit tests / Elixir / mix coveralls.html | |
| runs-on: ubuntu-latest | |
| needs: [file_changes, build_app] | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ex == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - uses: actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25 # v5.1.0 | |
| with: | |
| path: | | |
| _build | |
| priv | |
| key: ci-application-cache-${{ github.sha }} | |
| restore-keys: | | |
| ci-application-cache- | |
| - run: npm run ci:unit:exunit | |
| - name: Upload coverage artifact | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: Elixir test coverage report | |
| path: cover/ | |
| js_unit_1: | |
| name: Unit tests / JavaScript / Mocha | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.js == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: npm run ci:unit:mocha | |
| js_unit_2: | |
| name: Unit tests / JavaScript & TypeScript / Jest | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ts == 'true' || needs.file_changes.outputs.js == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: TZ="America/New_York" npm run ci:unit:jest | |
| type_dialyzer: | |
| name: Type checks / Elixir | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ex == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - uses: mbta/actions/dialyzer@d37877022d4ae12e96663d2e0a970a5214a2e232 # v2.20 | |
| type_typescript: | |
| name: Type checks / TypeScript | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ts == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: npm run ci:types:ts | |
| elixir_format_check: | |
| name: Formatting / Elixir | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ex == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: npm run ci:format:ex | |
| js_format_check: | |
| name: Formatting / JavaScript & TypeScript | |
| runs-on: ubuntu-latest | |
| needs: file_changes | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.js == 'true' || needs.file_changes.outputs.ts == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - run: npm run ci:format:ts | |
| check_translations: | |
| name: Translations / Check | |
| runs-on: ubuntu-latest | |
| needs: [file_changes, build_app] | |
| if: ${{ needs.file_changes.outputs.run_all == 'true' || needs.file_changes.outputs.ex == 'true' }} | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/setup-all | |
| - uses: actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25 # v5.1.0 | |
| with: | |
| path: | | |
| _build | |
| priv | |
| key: ci-application-cache-${{ github.sha }} | |
| restore-keys: | | |
| ci-application-cache- | |
| - run: mix gettext.extract --check-up-to-date --verbose |