2023-03-22 13:17:19 +00:00
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
2023-08-21 14:07:49 +00:00
name : Nightly Frontend Test Main
2022-04-27 19:51:51 +00:00
on :
schedule :
- cron : '0 4 * * *'
workflow_dispatch : {}
env :
2023-06-21 15:26:27 +00:00
EMBER_PARTITION_TOTAL : 4 # Has to be changed in tandem with the matrix.partition
2022-05-09 18:57:54 +00:00
BRANCH : "main"
2023-06-21 15:26:27 +00:00
BRANCH_NAME : "main" # Used for naming artifacts
GOPRIVATE : github.com/hashicorp # Required for enterprise deps
2022-04-27 19:51:51 +00:00
jobs :
frontend-test-workspace-node :
runs-on : ubuntu-latest
steps :
2023-07-19 23:56:50 +00:00
- uses : actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
ref : ${{ env.BRANCH }}
2022-04-27 19:51:51 +00:00
# Not necessary to use yarn, but enables caching
2023-07-19 23:56:50 +00:00
- uses : actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0
2022-04-27 19:51:51 +00:00
with :
node-version : 14
cache : 'yarn'
cache-dependency-path : ./ui/yarn.lock
- name : Install
id : install
working-directory : ./ui
run : make deps
- name : Workspace Tests
id : workspace-test
working-directory : ./ui
run : make test-workspace
- name : Node Tests
id : node-test
working-directory : ./ui/packages/consul-ui
run : make test-node
frontend-build-oss :
runs-on : ubuntu-latest
env :
JOBS : 2
CONSUL_NSPACES_ENABLED : 0
steps :
2023-07-19 23:56:50 +00:00
- uses : actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
ref : ${{ env.BRANCH }}
2022-04-27 19:51:51 +00:00
# Not necessary to use yarn, but enables caching
2023-07-19 23:56:50 +00:00
- uses : actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0
2022-04-27 19:51:51 +00:00
with :
node-version : 14
cache : 'yarn'
cache-dependency-path : ./ui/yarn.lock
- name : Install
id : install
working-directory : ./ui
run : make deps
- name : Ember Build OSS
id : build-oss
working-directory : ./ui/packages/consul-ui
run : make build-ci
- name : Upload OSS Frontend
2023-06-13 17:00:55 +00:00
uses : actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
name : frontend-oss-${{ env.BRANCH_NAME }}
path : ./ui/packages/consul-ui/dist
if-no-files-found : error
2022-04-27 19:51:51 +00:00
frontend-test-oss :
runs-on : ubuntu-latest
needs : [ frontend-build-oss]
strategy :
matrix :
2022-05-09 18:57:54 +00:00
partition : [ 1 , 2 , 3 , 4 ]
2022-04-27 19:51:51 +00:00
env :
CONSUL_NSPACES_ENABLED : 0
2023-04-19 16:19:29 +00:00
EMBER_TEST_REPORT : test-results/report-oss.xml #outputs test report for CI test summary
2022-04-27 19:51:51 +00:00
EMBER_TEST_PARALLEL : true #enables test parallelization with ember-exam
steps :
2023-07-19 23:56:50 +00:00
- uses : actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
ref : ${{ env.BRANCH }}
2022-04-27 19:51:51 +00:00
# Not necessary to use yarn, but enables caching
2023-07-19 23:56:50 +00:00
- uses : actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0
2022-04-27 19:51:51 +00:00
with :
node-version : 14
cache : 'yarn'
cache-dependency-path : ./ui/yarn.lock
- name : Install
id : install
working-directory : ./ui
run : make deps
- name : Download OSS Frontend
2023-06-13 17:00:55 +00:00
uses : actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
name : frontend-oss-${{ env.BRANCH_NAME }}
path : ./ui/packages/consul-ui/dist
2022-04-27 19:51:51 +00:00
- name : Ember Test OSS
id : cache
working-directory : ./ui/packages/consul-ui
run : node_modules/.bin/ember exam --split=$EMBER_PARTITION_TOTAL --partition=${{ matrix.partition }} --path dist --silent -r xunit
frontend-build-ent :
runs-on : ubuntu-latest
env :
JOBS : 2
CONSUL_NSPACES_ENABLED : 1
steps :
2023-07-19 23:56:50 +00:00
- uses : actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
ref : ${{ env.BRANCH }}
2022-04-27 19:51:51 +00:00
# Not necessary to use yarn, but enables caching
2023-07-19 23:56:50 +00:00
- uses : actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0
2022-04-27 19:51:51 +00:00
with :
node-version : 14
cache : 'yarn'
cache-dependency-path : ./ui/yarn.lock
- name : Install
id : install
working-directory : ./ui
run : make deps
- name : Ember Build ENT
id : build-oss
working-directory : ./ui/packages/consul-ui
run : make build-ci
- name : Upload ENT Frontend
2023-06-13 17:00:55 +00:00
uses : actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
name : frontend-ent-${{ env.BRANCH_NAME }}
path : ./ui/packages/consul-ui/dist
if-no-files-found : error
2022-04-27 19:51:51 +00:00
frontend-test-ent :
runs-on : ubuntu-latest
needs : [ frontend-build-ent]
strategy :
matrix :
2022-05-09 18:57:54 +00:00
partition : [ 1 , 2 , 3 , 4 ]
2022-04-27 19:51:51 +00:00
env :
CONSUL_NSPACES_ENABLED : 1
2023-04-19 16:19:29 +00:00
EMBER_TEST_REPORT : test-results/report-oss.xml #outputs test report for CI test summary
2022-04-27 19:51:51 +00:00
EMBER_TEST_PARALLEL : true #enables test parallelization with ember-exam
steps :
2023-07-19 23:56:50 +00:00
- uses : actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
ref : ${{ env.BRANCH }}
2022-04-27 19:51:51 +00:00
# Not necessary to use yarn, but enables caching
2023-07-19 23:56:50 +00:00
- uses : actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0
2022-04-27 19:51:51 +00:00
with :
node-version : 14
cache : 'yarn'
cache-dependency-path : ./ui/yarn.lock
- name : Install
id : install
working-directory : ./ui
run : make deps
- name : Download ENT Frontend
2023-06-13 17:00:55 +00:00
uses : actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
name : frontend-ent-${{ env.BRANCH_NAME }}
path : ./ui/packages/consul-ui/dist
2022-04-27 19:51:51 +00:00
- name : Ember Test ENT
id : cache
working-directory : ./ui/packages/consul-ui
run : node_modules/.bin/ember exam --split=$EMBER_PARTITION_TOTAL --partition=${{ matrix.partition }} --path dist --silent -r xunit
frontend-test-coverage-ent :
runs-on : ubuntu-latest
needs : [ frontend-build-ent]
steps :
2023-07-19 23:56:50 +00:00
- uses : actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
ref : ${{ env.BRANCH }}
2022-04-27 19:51:51 +00:00
# Not necessary to use yarn, but enables caching
2023-07-19 23:56:50 +00:00
- uses : actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0
2022-04-27 19:51:51 +00:00
with :
node-version : 14
cache : 'yarn'
cache-dependency-path : ./ui/yarn.lock
- name : Install
id : install
working-directory : ./ui
run : make deps
2022-05-09 18:57:54 +00:00
- name : Download ENT Frontend
2023-06-13 17:00:55 +00:00
uses : actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
2022-05-09 18:57:54 +00:00
with :
name : frontend-ent-${{ env.BRANCH_NAME }}
path : ./ui/packages/consul-ui/dist
2022-04-27 19:51:51 +00:00
- name : Run ENT Code Coverage
working-directory : ./ui/packages/consul-ui
run : make test-coverage-ci
slack-failure-notification :
runs-on : ubuntu-latest
needs : [ frontend-test-oss, frontend-test-ent]
if : ${{ failure() }}
steps :
- name : Slack Notification
id : slack
2023-06-13 17:00:55 +00:00
uses : slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0
2022-04-27 19:51:51 +00:00
with :
2022-05-09 18:57:54 +00:00
payload : |
{
"message": "One or more nightly UI tests have failed on branch ${{ env.BRANCH }} for Consul. ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}
2022-04-27 19:51:51 +00:00
env :
2022-05-09 18:57:54 +00:00
SLACK_WEBHOOK_URL : ${{ secrets.CONSUL_UI_SLACK_WEBHOOK }}