Skip to content

Update deploy.yml #7982

Update deploy.yml

Update deploy.yml #7982

Workflow file for this run

name: Deploy
concurrency: ci-${{ github.ref }}
on:
push:
branches:
- "*"
- "!skipci*"
permissions:
id-token: write
contents: read
actions: read
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "18.x"
- name: Install dependencies
run: |
npm ci --legacy-peer-deps
for service in services/*/; do
pushd "$service"
if [ -f package-lock.json ]; then npm ci --legacy-peer-deps; fi
popd
done
- name: Run ESLint
run: npx eslint --max-warnings=0 services
unit-test:
name: Unit Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "18.x"
- name: Unit Test & Publish Coverage
uses: paambaati/[email protected]
env:
CC_TEST_REPORTER_ID: ${{ secrets.CODECLIMATE_TEST_REPORTER_ID }}
with:
debug: true
coverageCommand: ./unit-test.sh
coverageLocations: |
${{github.workspace}}/services/*/coverage/lcov.info:lcov
deploy:
name: Deploy
needs:
- lint
- unit-test
runs-on: ubuntu-latest
steps:
- name: set branch_name
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- name: Check branch name is a legal serverless stage name
run: |
if [[ ! $branch_name =~ ^[a-z][a-z0-9-]*$ ]] || [[ $branch_name -gt 128 ]]; then
echo """
------------------------------------------------------------------------------------------------------------------------------
ERROR: Please read below
------------------------------------------------------------------------------------------------------------------------------
Bad branch name detected; cannot continue.
The Serverless Application Framework has a concept of stages that facilitate multiple deployments of the same service.
In this setup, the git branch name gets passed to Serverless to serve as the stage name.
The stage name (branch name in this case) is tacked onto the end of the service name by Serverless.
Therefore, the branch name must be a valid service name.
From Serverless:
A service name should only contain alphanumeric (case sensitive) and hyphens. It should start with an alphabetic character and shouldnt exceed 128 characters.
For Github Actions support, please push your code to a new branch with a name that meets Serverless' service name requirements.
So, make a new branch with a name that begins with a letter and is made up of only letters, numbers, and hyphens... then delete this branch.
------------------------------------------------------------------------------------------------------------------------------
"""
exit 1
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_OIDC_ROLE_TO_ASSUME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_OIDC_ROLE_TO_ASSUME] || secrets.AWS_OIDC_ROLE_TO_ASSUME }}
AWS_DEFAULT_REGION: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_DEFAULT_REGION] || secrets.AWS_DEFAULT_REGION }}
INFRASTRUCTURE_TYPE: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_INFRASTRUCTURE_TYPE] || secrets.INFRASTRUCTURE_TYPE || 'development' }}
ROUTE_53_HOSTED_ZONE_ID: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_ROUTE_53_HOSTED_ZONE_ID] }}
ROUTE_53_DOMAIN_NAME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_ROUTE_53_DOMAIN_NAME] }}
CLOUDFRONT_CERTIFICATE_ARN: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_CLOUDFRONT_CERTIFICATE_ARN] }}
CLOUDFRONT_DOMAIN_NAME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_CLOUDFRONT_DOMAIN_NAME] }}
STAGE_PREFIX: ${{ secrets.STAGE_PREFIX }}
METRICS_USERS: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_METRICS_USERS] || secrets.METRICS_USERS }}
OKTA_METADATA_URL: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_OKTA_METADATA_URL] || secrets.OKTA_METADATA_URL }}
COGNITO_TEST_USERS_PASSWORD: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_COGNITO_TEST_USERS_PASSWORD] || secrets.COGNITO_TEST_USERS_PASSWORD }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Configure AWS credentials for GitHub Actions
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_OIDC_ROLE_TO_ASSUME }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- uses: actions/setup-node@v3
with:
node-version: "18.x"
- name: Combine package-lock.json files to single file
run: find services -maxdepth 3 -name package-lock.json | xargs cat package-lock.json > combined-package-lock.txt
- name: cache service dependencies
uses: actions/cache@v3
with:
path: |
services/.sechub/node_modules
services/admin/node_modules
services/seatool-sink/node_modules
services/uploads/node_modules
services/app-api/node_modules
services/one-stream/node_modules
services/stream-functions/node_modules
services/ui/node_modules
services/ui-auth/node_modules
services/ui-src/node_modules
node_modules
key: ${{ runner.os }}-${{ hashFiles('combined-package-lock.txt') }}
- name: set path
run: |
echo "PATH=$(pwd)/node_modules/.bin/:$PATH" >> $GITHUB_ENV
- name: Set dev login flag for all but production branch
if: ${{ env.branch_name != 'production' }}
run: echo "ALLOW_DEV_LOGIN=true" >> $GITHUB_ENV
- name: Set testing email address unless in prod
if: ${{ env.branch_name != 'production' }}
run: echo "[email protected]" >> $GITHUB_ENV
- 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 a variable in GitHub Actions Secrets
./deploy.sh $STAGE_PREFIX$branch_name
- name: Output Endpoint
run: |
pushd services
echo "::notice::Endpoint URL - `./output.sh ui ApplicationEndpointUrl $STAGE_PREFIX$branch_name`"
popd
configure:
name: Configure
needs:
- deploy
runs-on: ubuntu-latest
steps:
- name: set branch_name
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- 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_OIDC_ROLE_TO_ASSUME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_OIDC_ROLE_TO_ASSUME] || secrets.AWS_OIDC_ROLE_TO_ASSUME }}
AWS_DEFAULT_REGION: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_DEFAULT_REGION] || secrets.AWS_DEFAULT_REGION }}
INFRASTRUCTURE_TYPE: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_INFRASTRUCTURE_TYPE] || secrets.INFRASTRUCTURE_TYPE || 'development' }}
ROUTE_53_HOSTED_ZONE_ID: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_ROUTE_53_HOSTED_ZONE_ID] }}
ROUTE_53_DOMAIN_NAME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_ROUTE_53_DOMAIN_NAME] }}
CLOUDFRONT_CERTIFICATE_ARN: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_CLOUDFRONT_CERTIFICATE_ARN] }}
CLOUDFRONT_DOMAIN_NAME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_CLOUDFRONT_DOMAIN_NAME] }}
STAGE_PREFIX: ${{ secrets.STAGE_PREFIX }}
METRICS_USERS: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_METRICS_USERS] || secrets.METRICS_USERS }}
OKTA_METADATA_URL: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_OKTA_METADATA_URL] || secrets.OKTA_METADATA_URL }}
COGNITO_TEST_USERS_PASSWORD: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_COGNITO_TEST_USERS_PASSWORD] || secrets.COGNITO_TEST_USERS_PASSWORD }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Configure AWS credentials for GitHub Actions
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_OIDC_ROLE_TO_ASSUME }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- uses: actions/setup-node@v3
with:
node-version: "18.x"
- name: cache service dependencies
uses: actions/cache@v3
with:
path: |
services/.sechub/node_modules
services/admin/node_modules
services/seatool-sink/node_modules
services/uploads/node_modules
services/app-api/node_modules
services/one-stream/node_modules
services/stream-functions/node_modules
services/ui/node_modules
services/ui-auth/node_modules
services/ui-src/node_modules
node_modules
key: ${{ runner.os }}-${{ hashFiles('combined-package-lock.txt') }}
- name: set path
run: |
echo "PATH=$(pwd)/node_modules/.bin/:$PATH" >> $GITHUB_ENV
- name: Set dev login flag for all but production branch
if: ${{ env.branch_name != 'production' }}
run: echo "ALLOW_DEV_LOGIN=true" >> $GITHUB_ENV
- name: Set testing email address unless in prod
if: ${{ env.branch_name != 'production' }}
run: echo "[email protected]" >> $GITHUB_ENV
- name: Seed Data
# this "resets" any data explicitly provided in the seed files to what
# is in the committed code
if: ${{ env.branch_name != 'production' && env.branch_name != 'master' }}
env:
SLS_DEBUG: 'true'
BRANCH: ${{ env.STAGE_PREFIX }}${{ env.branch_name }}
run: cd services/app-api && serverless dynamodb seed --stage=$BRANCH --region=$AWS_DEFAULT_REGION --online
- name: Load Test Users
if: ${{ env.branch_name != 'production'}}
run: ./loadTestUsers.py $STAGE_PREFIX$branch_name
- name: Migrate Data
if: ${{ env.branch_name != 'production'}}
run: cd ./services/app-api && sls invoke -s $STAGE_PREFIX$branch_name -f migrate
- name: Reset Test Data
if: ${{ env.branch_name != 'production'}}
run: cd ./services/admin && sls invoke -s $STAGE_PREFIX$branch_name -f resetData
cypress-test:
name: Cypress Tests
needs: configure
if: ${{ github.ref != 'refs/heads/production'}}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
containers:
[
Package_Details_Appendix_K_CMS_User.spec.feature,
Package_Details_Appendix_K_State_User.spec.feature,
Package_Details_CHIP_SPA_CMS_User.spec.feature,
Package_Details_CHIP_SPA_State_User.spec.feature,
Package_Details_Initial_Waiver_CMS_User.spec.feature,
Package_Details_Initial_Waiver_State_User.spec.feature,
Package_Details_Medicaid_SPA_CMS_User.spec.feature,
Package_Details_Medicaid_SPA_State_User.spec.feature,
Package_Details_Renewal_Waiver_CMS_User.spec.feature,
Package_Details_Renewal_Waiver_State_User.spec.feature,
Package_Details_Temporary_Extension_CMS_User.spec.feature,
Package_Details_Temporary_Extension_State_User.spec.feature,
Package_Details_Waiver_Amendment_CMS_User.spec.feature,
Package_Details_Waiver_Amendment_State_User.spec.feature,
Dashboard_Initial_Waiver_RAI_Response.spec.feature,
Dashboard_Column_Picker_SPA_CMS.spec.feature,
Dashboard_Column_Picker_SPA_State.spec.feature,
Dashboard_Column_Picker_Waiver_CMS.spec.feature,
Dashboard_Column_Picker_Waiver_State.spec.feature,
Dashboard_Filter_By_State.spec.feature,
Dashboard_Filter_options_that_include_Dates.spec.feature,
Dashboard_Filter_options_that_include_Dates_CMS.spec.feature,
Dashboard_Filter.spec.feature,
Dashboard_Search_Bar.spec.feature,
Dashboard_Medicaid_SPA_RAI_Response.spec.feature,
Dashboard_Waiver_Renewal_RAI_Response.spec.feature,
SPA_Form_Logic.spec.feature,
Dashboard_Tabs.spec.feature,
Dashboard_Waiver_Amendment_RAI_Response.spec.feature,
Comprehensive_Capitated_1915b_Waiver_Form_Logic.spec.feature,
FFS_Selective_Waiver_Form_Logic.spec.feature,
Profile_View_CMS_Approver.spec.feature,
Profile_View_CMS_System_Admin.spec.feature,
Profile_View_CMS_User_Denied.spec.feature,
Profile_View_CMS_User_Revoked.spec.feature,
Profile_View_Helpdesk_User.spec.feature,
Profile_View_Mixed_Case_Emails.spec.feature,
Profile_View_State_Submitter.spec.feature,
Profile_View_State_System_Admin.spec.feature,
Request_A_Role_Change_As_CMS_Read_Only.spec.feature,
Request_A_Role_Change.spec.feature,
Home_Page.spec.feature,
FAQ_Page.spec.feature,
Chip_SPA_Form.spec.feature,
Medicaid_SPA_Form.spec.feature,
CMS_Read_Only_View.spec.feature,
Appendix_K_Form.spec.feature,
FFS_Selective_Waiver_Amendment_Form.spec.feature,
FFS_Selective_Waiver_Renewal_Form.spec.feature,
FFS_Selective_Initial_Waiver_Form.spec.feature,
Comprehensive_Capitated_1915b_Initial_Waiver_Form.spec.feature,
Comprehensive_Capitated_1915b_Waiver_Amendment_Form.spec.feature,
Comprehensive_Capitated_1915b_Waiver_Renewal_Form.spec.feature,
Dashboard_CHIP_SPA_RAI_Response.spec.feature,
Dashboard_AppK_RAI_Response.spec.feature,
Temporary_Extension_1915b_Form.spec.feature,
Temporary_Extension_1915c_Form.spec.feature,
Dashboard_No_Action_Packages.spec.feature,
Dashboard_RAI_Issued_Actions.spec.feature,
Dashboard_Under_Review_Actions.spec.feature,
Dashboard_Approved_Actions.spec.feature,
Dashboard_Filter_CMS.spec.feature,
Withdraw_Package_Form_App_K_Amendment.spec.feature,
Withdraw_Package_Form_CHIP_SPA.spec.feature,
Withdraw_Package_Form_Initial_Waiver.spec.feature,
Withdraw_Package_Form_Medicaid_SPA.spec.feature,
Withdraw_Package_Form_Waiver_Amendment.spec.feature,
Withdraw_Package_Form_Waiver_Renewal.spec.feature,
Dashboard_RAI_Withdraw_Enabled_Actions.spec.feature,
]
steps:
- name: set branch_name
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- 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_OIDC_ROLE_TO_ASSUME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_OIDC_ROLE_TO_ASSUME] || secrets.AWS_OIDC_ROLE_TO_ASSUME }}
AWS_DEFAULT_REGION: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_DEFAULT_REGION] || secrets.AWS_DEFAULT_REGION }}
INFRASTRUCTURE_TYPE: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_INFRASTRUCTURE_TYPE] || secrets.INFRASTRUCTURE_TYPE || 'development' }}
STAGE_PREFIX: ${{ secrets.STAGE_PREFIX }}
COGNITO_TEST_USERS_PASSWORD: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_COGNITO_TEST_USERS_PASSWORD] || secrets.COGNITO_TEST_USERS_PASSWORD }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Configure AWS credentials for GitHub Actions
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_OIDC_ROLE_TO_ASSUME }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Combine package-lock.json files to single file
run: find services -maxdepth 3 -name package-lock.json | xargs cat package-lock.json > combined-package-lock.txt
- name: cache service dependencies
uses: actions/cache@v3
with:
path: |
services/uploads/node_modules
services/app-api/node_modules
services/stream-functions/node_modules
services/ui/node_modules
services/ui-auth/node_modules
services/ui-src/node_modules
node_modules
key: ${{ runner.os }}-${{ hashFiles('combined-package-lock.txt') }}
- name: Install dependencies
run: |
npm i --legacy-peer-deps
- name: set path
run: |
echo "PATH=$(pwd)/node_modules/.bin/:$PATH" >> $GITHUB_ENV
- name: Endpoint
run: |
pushd services
export APPLICATION_ENDPOINT=`./output.sh ui ApplicationEndpointUrl $STAGE_PREFIX$branch_name`
echo "APPLICATION_ENDPOINT=$APPLICATION_ENDPOINT" >> $GITHUB_ENV
echo "Application endpoint: $APPLICATION_ENDPOINT"
popd
- name: Run Cypress Tests
uses: cypress-io/github-action@v5
with:
working-directory: tests/cypress
spec: cypress/e2e/${{ matrix.containers }}
browser: chrome
config: baseUrl=${{ env.APPLICATION_ENDPOINT }}
- name: Upload screenshots
uses: actions/upload-artifact@v3
if: failure()
with:
name: cypress-screenshots
path: tests/cypress/screenshots/
- name: Set job result
id: result
run: |
if [[ ${{ job.status }} == "success" ]]; then
echo "::set-output name=status::success"
else
echo "::set-output name=status::failure"
fi
outputs:
status: ${{ steps.result.outputs.status }}
send-slack-notification:
needs: cypress-test
runs-on: ubuntu-latest
steps:
- name: Set Run URL
id: get_run_url
run: echo "::set-output name=run_url::https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"
- name: Send Slack notification
run: |

Check failure on line 387 in .github/workflows/deploy.yml

View workflow run for this annotation

GitHub Actions / Deploy

Invalid workflow file

The workflow is not valid. .github/workflows/deploy.yml (Line: 387, Col: 14): Unrecognized named-value: 'TOTAL_FAILURES'. Located at position 1 within expression: TOTAL_FAILURES
FAILED_JOBS=0
for STATUS in ${{ needs.cypress-test.outputs.status }}; do
if [[ "$STATUS" == "failure" ]]; then
FAILED_JOBS=$((FAILED_JOBS + 1))
fi
done
if [[ $FAILED_JOBS -gt 0 ]]; then
aws ses send-email \
--from "[email protected]" \
--to "[email protected]" \
--subject "Cypress tests failed :x:" \
--text "${{ TOTAL_FAILURES }} out of ${{ needs.cypress-test.outputs.status | split('\n') | length }} Cypress tests failed for repository ${{ github.repository }}. Check the details at ${{ steps.get_run_url.outputs.run_url }}."
elif [[ $FAILED_JOBS -eq 0 ]]; then
aws ses send-email \
--from "[email protected]" \
--to "[email protected]" \
--subject "All Cypress tests passed :white_check_mark:" \
--text "All the Cypress tests for repository ${{ github.repository }} passed successfully. Check the details at ${{ steps.get_run_url.outputs.run_url }}."
fi
a11y-tests:
name: A11y Tests
needs: configure
if: ${{ github.ref != 'refs/heads/production' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
containers:
[
homePage,
faqPage,
manageProfilePage,
dashboardPage,
packagePageSpas,
packagePageWaivers,
RequestRoleChangePage,
spaTypePage,
submissionType,
PackageWaiverActionTypePage,
PackageRequestTempExtentionPage,
PackageMedicaidSpaPage,
PackageCHIPSPAPage,
PackageAppendixKPage,
PackageWaiverAmendmentPage,
PackageInitialWaiverPage,
PackageWaiverRenewalPage,
]
steps:
- name: set branch_name
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- 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_OIDC_ROLE_TO_ASSUME: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_OIDC_ROLE_TO_ASSUME] || secrets.AWS_OIDC_ROLE_TO_ASSUME }}
AWS_DEFAULT_REGION: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_AWS_DEFAULT_REGION] || secrets.AWS_DEFAULT_REGION }}
INFRASTRUCTURE_TYPE: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_INFRASTRUCTURE_TYPE] || secrets.INFRASTRUCTURE_TYPE || 'development' }}
STAGE_PREFIX: ${{ secrets.STAGE_PREFIX }}
COGNITO_TEST_USERS_PASSWORD: ${{ secrets[env.BRANCH_SPECIFIC_VARNAME_COGNITO_TEST_USERS_PASSWORD] || secrets.COGNITO_TEST_USERS_PASSWORD }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Configure AWS credentials for GitHub Actions
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.AWS_OIDC_ROLE_TO_ASSUME }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Combine package-lock.json files to single file
run: find services -maxdepth 3 -name package-lock.json | xargs cat package-lock.json > combined-package-lock.txt
- name: cache service dependencies
uses: actions/cache@v3
with:
path: |
services/app-api/node_modules
services/uploads/node_modules
services/stream-functions/node_modules
services/ui/node_modules
services/ui-auth/node_modules
services/ui-src/node_modules
node_modules
key: ${{ runner.os }}-${{ hashFiles('combined-package-lock.txt') }}
- name: Install dependencies
run: |
npm install --frozen-lockfile --legacy-peer-deps
- name: set path
run: |
echo "PATH=$(pwd)/node_modules/.bin/:$PATH" >> $GITHUB_ENV
- name: Endpoint
run: |
pushd services
export APPLICATION_ENDPOINT=`./output.sh ui ApplicationEndpointUrl $STAGE_PREFIX$branch_name`
echo "APPLICATION_ENDPOINT=$APPLICATION_ENDPOINT" >> $GITHUB_ENV
echo "Application endpoint: $APPLICATION_ENDPOINT"
popd
- name: Check Project A11y
uses: cypress-io/github-action@v5
with:
working-directory: tests/cypress
spec: cypress/e2e/a11y/${{ matrix.containers }}.spec.js
browser: chrome
config: baseUrl=${{ env.APPLICATION_ENDPOINT }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}