backport of commit 4fb9ec5dfed5e556ef0abecb2c390f21c39b06a3 #2411
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 |