backport of commit 64cf21e0d1de52df797e4cf3bd7e3730758ed642 #2449
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
# 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 |