NAS-142557 / 27.0.0-BETA.1 / Bump @truenas/ui-components to 0.7.1 and… #24822
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: WebUI | |
| on: | |
| push: | |
| branches: | |
| - master | |
| paths-ignore: | |
| - 'src/assets/i18n/**' | |
| - 'tests/**' | |
| pull_request: | |
| branches: | |
| - '**' | |
| paths-ignore: | |
| - 'src/assets/i18n/**' | |
| - 'tests/**' | |
| permissions: | |
| contents: read | |
| # Superseded commits on an open PR were running the full suite to completion, | |
| # including `yarn test:pr --maxWorkers=50` on the self-hosted runner. | |
| # | |
| # The group is a literal, NOT `${{ github.workflow }}`: validate-translations.yml | |
| # is also named "WebUI", so keying on the workflow name would put both in one | |
| # group and let a translation-only push cancel this pipeline, and vice versa. | |
| # | |
| # Cancelling is limited to pull_request. On a push to master the run is the only | |
| # record of that commit — report-coverage uploads to Codecov from it — so a | |
| # rapid second merge must not cancel the first one's coverage. | |
| concurrency: | |
| group: webui-main-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| install: | |
| name: Checkout and Install | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install | |
| uses: iXsystems/ux-github-workflows/.github/actions/prepare@master | |
| with: | |
| cache-jest: 'true' | |
| build: | |
| name: Build | |
| needs: [install] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install | |
| uses: iXsystems/ux-github-workflows/.github/actions/prepare@master | |
| with: | |
| cache-jest: 'true' | |
| - name: Build | |
| run: yarn build:prod | |
| - name: Check strict null checks | |
| run: yarn run check-env && yarn run strict-null-checks | |
| lint: | |
| name: Validate code style | |
| needs: [install] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install | |
| uses: iXsystems/ux-github-workflows/.github/actions/prepare@master | |
| with: | |
| cache-jest: 'true' | |
| - name: Generate default environment file | |
| run: yarn run check-env | |
| - name: Run linter | |
| run: yarn lint | |
| # `e2e/` is outside the root tsconfig's project — the Playwright runner is | |
| # Node-hosted and cannot share the Angular compiler options (see | |
| # e2e/tsconfig.json). Without this step nothing type-checks the suite. | |
| - name: Type-check the E2E suite | |
| run: yarn e2e:typecheck | |
| # Decides which runner the tests below go to. Shared with the Claude review | |
| # gate and with truenas-connect/ui, which needs the same answer for the same | |
| # reason. Reports as "check-ux-team / Check member access" — the job id stays | |
| # `check-ux-team` so the downstream `needs:` references are unchanged. | |
| check-ux-team: | |
| if: github.event_name == 'pull_request' | |
| permissions: | |
| contents: read | |
| uses: iXsystems/ux-github-workflows/.github/workflows/check-member.yml@master | |
| test-ux-team: | |
| name: Run tests (UX Team - Self-hosted) | |
| needs: [install, check-ux-team] | |
| if: needs.check-ux-team.outputs.is_member == 'true' | |
| strategy: | |
| fail-fast: false | |
| runs-on: self-hosted | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install | |
| uses: iXsystems/ux-github-workflows/.github/actions/prepare@master | |
| with: | |
| cache-jest: 'true' | |
| - name: Run tests | |
| run: yarn test:pr --maxWorkers=50 | |
| - name: Upload coverage | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage | |
| path: coverage/webui/coverage-final.json | |
| - name: Upload test data | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-junit | |
| path: coverage/webui/junit.xml | |
| test: | |
| name: Run tests (Standard) | |
| needs: [install, check-ux-team] | |
| if: | | |
| always() && | |
| needs.install.result == 'success' && | |
| (github.event_name != 'pull_request' || needs.check-ux-team.outputs.is_member != 'true') | |
| strategy: | |
| fail-fast: false | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install | |
| uses: iXsystems/ux-github-workflows/.github/actions/prepare@master | |
| with: | |
| cache-jest: 'true' | |
| - name: Run tests | |
| run: yarn test:pr --maxWorkers=2 | |
| - name: Upload coverage | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage | |
| path: coverage/webui/coverage-final.json | |
| - name: Upload test data | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-junit | |
| path: coverage/webui/junit.xml | |
| report-coverage: | |
| name: Collect coverage | |
| runs-on: ubuntu-latest | |
| if: ${{ !cancelled() && github.repository == 'truenas/webui' }} | |
| needs: [test, test-ux-team] | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Download coverage and test data | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: 'coverage*' | |
| path: coverage | |
| merge-multiple: true | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v7 | |
| with: | |
| name: webui | |
| token: ${{ env.CODECOV_TOKEN }} | |
| files: coverage/coverage-final.json | |
| fail_ci_if_error: true | |
| - name: Upload extra test data to Codecov | |
| if: ${{ !cancelled() }} | |
| uses: codecov/test-results-action@v1 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| file: coverage/junit.xml |