Deploy EHR #130
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 EHR | |
env: | |
CI: false | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
on: | |
workflow_dispatch: | |
inputs: | |
environment: | |
description: 'Environment name' | |
required: true | |
type: choice | |
default: 'development' | |
options: | |
- development | |
- testing | |
- production | |
confirmProduction: | |
description: 'Confirm production deployment' | |
type: choice | |
default: 'No' | |
required: false | |
options: | |
- 'Yes' | |
- 'No' | |
jobs: | |
deploy: | |
env: | |
PACKAGE_LOCATION: packages/telemed-ehr/app | |
ZAMBDAS_LOCATION: packages/telemed-ehr/zambdas | |
SLACK_NOTIFICATION_SERVICE_NAME: ottehr-notifications | |
runs-on: ubuntu-latest | |
environment: ${{ github.event.inputs.environment }} | |
strategy: | |
matrix: | |
node-version: [18.18.0] | |
steps: | |
- name: Install SSH Client | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: | | |
${{ secrets.OTTEHR_DEMO_PRIVATE_KEY }} | |
${{ secrets.BUMP_VERSION }} | |
- name: If environment is production, ensure keys are coming in through input parameters. | |
if: ${{ github.event.inputs.environment == 'production' && !(github.event.inputs.confirmProduction == 'Yes') }} | |
run: echo 'Please confirm you want to deploy to production.' && exit 1 | |
- uses: actions/checkout@v3 | |
with: | |
ssh-key: ${{ secrets.BUMP_VERSION }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v2 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: pnpm/action-setup@v2 | |
with: | |
version: 9 | |
- name: Check out secrets repo to grab the env file. | |
uses: actions/checkout@v3 | |
with: | |
repository: masslight/ottehr-secrets | |
ssh-key: ${{ secrets.OTTEHR_DEMO_PRIVATE_KEY }} | |
path: 'secrets' | |
- name: Move zambda secrets file into the .env directory. | |
run: mkdir -p ${{ env.ZAMBDAS_LOCATION }}/.env/ && cp -r secrets/telemed-ehr-zambdas/* ${{ env.ZAMBDAS_LOCATION }}/.env/ | |
- name: Move app secrets file into the env directory. | |
run: mkdir -p ${{ env.PACKAGE_LOCATION }}/env/ && cp -r secrets/telemed-ehr-app/. ${{ env.PACKAGE_LOCATION }}/env/ | |
- name: Copy env file to local.env to support serverless package command | |
run: cp ${{ env.ZAMBDAS_LOCATION }}/.env/${{ github.event.inputs.environment }}.json ${{ env.ZAMBDAS_LOCATION }}/.env/local.json | |
- name: Get Version Number from package.json for build notifications. | |
id: package-version | |
uses: martinbeentjes/[email protected] | |
with: | |
path: ${{ env.PACKAGE_LOCATION }} | |
- name: Install dependencies | |
run: pnpm install | |
- name: Deploy App | |
run: cd ${{ env.PACKAGE_LOCATION }} && pnpm run deploy:${{ github.event.inputs.environment }} | |
- name: Setup zapehr secrets | |
run: cd ${{ env.ZAMBDAS_LOCATION }} && pnpm setup-zapehr-secrets ${{ github.event.inputs.environment }} | |
- name: Deploy zambdas | |
run: cd ${{ env.ZAMBDAS_LOCATION }} && pnpm deploy-zambdas ${{ github.event.inputs.environment }} | |
- name: Notify Slack | |
if: always() | |
uses: edge/[email protected] | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
BRANCH: ${{ github.ref }} | |
PACKAGE_VERSION: ${{ steps.package-version.outputs.current-version }} | |
with: | |
channel: '#ottehr-notifications' | |
status: ${{ job.status }} | |
success_text: '${{ env.GITHUB_WORKFLOW }} (Run #${{ env.GITHUB_RUN_NUMBER }}) deploy completed successfully' | |
failure_text: '${{ env.GITHUB_WORKFLOW }} (Run #${{ env.GITHUB_RUN_NUMBER }}) deploy failed' | |
cancelled_text: '${{ env.GITHUB_WORKFLOW }} (Run #${{ env.GITHUB_RUN_NUMBER }}) deploy was cancelled' | |
fields: | | |
[{ "title": "Service", "value": "${{ env.SLACK_NOTIFICATION_SERVICE_NAME }}", "short": true }, | |
{ "title": "Action URL", "value": "${{ env.GITHUB_SERVER_URL }}/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }}"}, | |
{ "title": "Branch", "value": "${{ env.BRANCH }}", "short": true }, | |
{ "title": "Environment", "value": "${{ env.ENVIRONMENT }}", "short": true }, | |
{ "title": "Version", "value": "${{ env.PACKAGE_VERSION }}", "short": true }] |