Add instructions for yearly update #1179
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
name: Deploy CARTSv3 | |
on: | |
push: | |
branches: | |
- "*" | |
- "dependabot/**" | |
- "!skipci*" | |
concurrency: | |
# Ensuring group key matches the destroy workflow currently in master | |
group: dev-${{ github.ref_name }} | |
cancel-in-progress: false | |
permissions: | |
id-token: write | |
contents: read | |
actions: read | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
env: | |
SLS_DEPRECATION_DISABLE: "*" # Turn off deprecation warnings in the pipeline | |
steps: | |
- name: set branch_name | |
run: | | |
if [[ "$GITHUB_REF" =~ ^refs/heads/dependabot/.* ]]; then # Dependabot builds very long branch names. This is a switch to make it shorter. | |
echo "branch_name=`echo ${GITHUB_REF#refs/heads/} | md5sum | head -c 10 | sed 's/^/x/'`" >> $GITHUB_ENV | |
else | |
echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV | |
fi | |
- uses: actions/checkout@v3 | |
- name: Validate branch name | |
run: ./.github/branchNameValidation.sh $STAGE_PREFIX$branch_name | |
- name: set branch specific variable names | |
run: ./.github/build_vars.sh set_names | |
- name: set variable values | |
run: ./.github/build_vars.sh set_values | |
env: | |
AWS_DEFAULT_REGION: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_DEFAULT_REGION] || secrets.AWS_DEFAULT_REGION }} | |
AWS_OIDC_ROLE_TO_ASSUME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_OIDC_ROLE_TO_ASSUME] || secrets.AWS_OIDC_ROLE_TO_ASSUME }} | |
STAGE_PREFIX: ${{ secrets.STAGE_PREFIX }} | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
CODE_CLIMATE_ID: ${{ secrets.CODE_CLIMATE_ID }} | |
- name: Configure AWS credentials for GitHub Actions | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
role-to-assume: ${{ env.AWS_OIDC_ROLE_TO_ASSUME }} | |
aws-region: ${{ env.AWS_DEFAULT_REGION }} | |
- name: read .nvmrc | |
id: node_version | |
run: echo ::set-output name=NODE_VERSION::$(cat .nvmrc) | |
- uses: actions/setup-node@v1 | |
with: | |
node-version: ${{ steps.node_version.outputs.NODE_VERSION }} | |
- uses: actions/cache@v2 | |
with: | |
path: "**/node_modules" | |
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock', 'plugins/**') }} | |
- name: set path | |
run: | | |
echo "PATH=$(pwd)/node_modules/.bin/:$PATH" >> $GITHUB_ENV | |
- name: run unit tests | |
run: ./test-unit.sh | |
- name: publish test coverage to code climate | |
if: env.CODE_CLIMATE_ID != '' | |
uses: paambaati/[email protected] | |
env: | |
CC_TEST_REPORTER_ID: ${{ secrets.CODE_CLIMATE_ID }} | |
with: | |
coverageLocations: | | |
${{github.workspace}}/services/app-api/coverage/lcov.info:lcov | |
${{github.workspace}}/services/ui-src/coverage/lcov.info:lcov | |
- name: Store unit test results | |
uses: actions/upload-artifact@v2 | |
with: | |
name: unit_test_results | |
path: ${{github.workspace}}/services/ui-src/coverage/lcov.info | |
- name: deploy | |
run: | | |
# When deploying multiple copies of this quickstart to the same AWS Account (not ideal), a prefix helps prevent stepping on each other. | |
# This can optionally be set as an GitHub Actions Secret | |
./deploy.sh $STAGE_PREFIX$branch_name | |
- id: endpoint | |
run: | | |
APPLICATION_ENDPOINT=$(./output.sh ui ApplicationEndpointUrl $STAGE_PREFIX$branch_name) | |
echo ::set-output name=application_endpoint::$APPLICATION_ENDPOINT | |
echo "## Application Endpoint" >> $GITHUB_STEP_SUMMARY | |
echo "<$APPLICATION_ENDPOINT>" >> $GITHUB_STEP_SUMMARY | |
working-directory: services | |
- name: Slack Notification | |
uses: rtCamp/action-slack-notify@v2 | |
if: env.SLACK_WEBHOOK_URL != '' && contains(fromJson('["main", "val", "production"]'), env.branch_name) && failure () | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
SLACK_USERNAME: Destroy Alerts | |
SLACK_ICON_EMOJI: ":bell:" | |
SLACK_COLOR: ${{job.status}} | |
SLACK_FOOTER: "" | |
MSG_MINIMAL: actions url,commit,ref | |
outputs: | |
application_endpoint: ${{ steps.endpoint.outputs.application_endpoint}} | |
e2e-test: | |
name: E2E Integration Tests (Cypress) | |
needs: deploy | |
if: ${{ github.ref != 'refs/heads/production' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Run Cypress Tests | |
uses: cypress-io/[email protected] | |
with: | |
working-directory: tests/cypress | |
spec: tests/integration/*.spec.js | |
browser: chrome | |
headless: true | |
config: baseUrl=${{ needs.deploy.outputs.application_endpoint }} | |
wait-on: ${{ needs.deploy.outputs.application_endpoint }} | |
env: true | |
env: | |
CYPRESS_STATE_USER_EMAIL: ${{ secrets.CYPRESS_STATE_USER_EMAIL }} | |
CYPRESS_STATE_USER_PASSWORD: ${{ secrets.CYPRESS_STATE_USER_PASSWORD }} | |
CYPRESS_ADMIN_USER_EMAIL: ${{ secrets.CYPRESS_ADMIN_USER_EMAIL }} | |
CYPRESS_ADMIN_USER_PASSWORD: ${{ secrets.CYPRESS_ADMIN_USER_PASSWORD }} | |
CYPRESS_REVIEWER_USER_EMAIL: ${{ secrets.CYPRESS_REVIEWER_USER_EMAIL }} | |
CYPRESS_REVIEWER_USER_PASSWORD: ${{ secrets.CYPRESS_REVIEWER_USER_PASSWORD }} | |
- name: Upload screenshots | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: cypress-screenshots | |
path: | | |
tests/cypress/screenshots/ | |
tests/cypress/videos/ | |
a11y-tests: | |
name: A11y Tests | |
needs: deploy | |
if: ${{ github.ref != 'refs/heads/production' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Check Project A11y | |
uses: cypress-io/[email protected] | |
with: | |
working-directory: tests/cypress | |
spec: tests/a11y/*.spec.js | |
browser: chrome | |
headless: true | |
config: baseUrl=${{ needs.deploy.outputs.application_endpoint }} | |
wait-on: ${{ needs.deploy.outputs.application_endpoint }} | |
env: true | |
env: | |
CYPRESS_STATE_USER_EMAIL: ${{ secrets.CYPRESS_STATE_USER_EMAIL }} | |
CYPRESS_STATE_USER_PASSWORD: ${{ secrets.CYPRESS_STATE_USER_PASSWORD }} | |
CYPRESS_ADMIN_USER_EMAIL: ${{ secrets.CYPRESS_ADMIN_USER_EMAIL }} | |
CYPRESS_ADMIN_USER_PASSWORD: ${{ secrets.CYPRESS_ADMIN_USER_PASSWORD }} | |
CYPRESS_REVIEWER_USER_EMAIL: ${{ secrets.CYPRESS_REVIEWER_USER_EMAIL }} | |
CYPRESS_REVIEWER_USER_PASSWORD: ${{ secrets.CYPRESS_REVIEWER_USER_PASSWORD }} | |
- name: Upload screenshots | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: cypress-screenshots | |
path: | | |
tests/cypress/screenshots/ | |
tests/cypress/videos/ |