# Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 name: frontend on: push: paths: - ui/** permissions: contents: read jobs: setup: name: Setup runs-on: ubuntu-latest outputs: compute-small: ${{ steps.setup-outputs.outputs.compute-small }} compute-medium: ${{ steps.setup-outputs.outputs.compute-medium }} compute-large: ${{ steps.setup-outputs.outputs.compute-large }} compute-xl: ${{ steps.setup-outputs.outputs.compute-xl }} steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - id: setup-outputs name: Setup outputs run: ./.github/scripts/get_runner_classes.sh workspace-tests: needs: setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} defaults: run: working-directory: ui steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: '18' - name: Install Yarn run: corepack enable # Install dependencies. - name: install yarn packages working-directory: ui run: make deps - run: make test-workspace node-tests: needs: setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: '18' - name: Install Yarn run: corepack enable # Install dependencies. - name: install yarn packages working-directory: ui run: make deps - run: make test-node working-directory: ui/packages/consul-ui ember-build-test: needs: setup if: ${{ !endsWith(github.repository, '-enterprise') }} runs-on: ${{ fromJSON(needs.setup.outputs.compute-large ) }} strategy: matrix: partition: [1, 2, 3, 4] env: EMBER_TEST_REPORT: test-results/report-ce.xml # outputs test report for CI test summary EMBER_TEST_PARALLEL: true # enables test parallelization with ember-exam CONSUL_NSPACES_ENABLED: 0 # NOTE: this should be 1 in ENT. JOBS: 2 # limit parallelism for broccoli-babel-transpiler steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: '18' - name: Install Yarn run: corepack enable - name: Install Chrome uses: browser-actions/setup-chrome@82b9ce628cc5595478a9ebadc480958a36457dc2 # v1.6.0 - name: Install dependencies working-directory: ui run: make deps - name: Build CI working-directory: ui/packages/consul-ui run: make build-ci - name: Ember exam working-directory: ui/packages/consul-ui run: node_modules/.bin/ember exam --split=4 --partition=${{ matrix.partition }} --path dist --silent -r xunit - name: Test Coverage CI working-directory: ui/packages/consul-ui run: make test-coverage-ci ember-build-test-ent: needs: setup runs-on: ${{ fromJSON(needs.setup.outputs.compute-large ) }} strategy: matrix: partition: [1, 2, 3, 4] env: EMBER_TEST_REPORT: test-results/report-ce.xml # outputs test report for CI test summary EMBER_TEST_PARALLEL: true # enables test parallelization with ember-exam CONSUL_NSPACES_ENABLED: 1 # NOTE: this should be 1 in ENT. JOBS: 2 # limit parallelism for broccoli-babel-transpiler steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: '18' - name: Install Yarn run: corepack enable - name: Install Chrome uses: browser-actions/setup-chrome@82b9ce628cc5595478a9ebadc480958a36457dc2 # v1.6.0 - name: Install dependencies working-directory: ui run: make deps - name: Build CI working-directory: ui/packages/consul-ui run: make build-ci - name: Ember exam working-directory: ui/packages/consul-ui run: node_modules/.bin/ember exam --split=4 --partition=${{ matrix.partition }} --path dist --silent -r xunit - name: Test Coverage CI working-directory: ui/packages/consul-ui run: make test-coverage-ci # This is job is required for branch protection as a required gihub check # because GitHub actions show up as checks at the job level and not the # workflow level. This is currently a feature request: # https://github.com/orgs/community/discussions/12395 # # This job must: # - be placed after the fanout of a workflow so that everything fans back in # to this job. # - "need" any job that is part of the fan out / fan in # - implement the if logic because we have conditional jobs # (go-test-enteprise) that this job needs and this would potentially get # skipped if a previous job got skipped. So we use the if clause to make # sure it does not get skipped. frontend-success: needs: - setup - workspace-tests - node-tests - ember-build-test runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} if: ${{ always() }} steps: - name: evaluate upstream job results run: | # exit 1 if failure or cancelled result for any upstream job if printf '${{ toJSON(needs) }}' | grep -E -i '\"result\": \"(failure|cancelled)\"'; then printf "Tests failed or workflow cancelled:\n\n${{ toJSON(needs) }}" exit 1 fi