90 lines
2.1 KiB
YAML
90 lines
2.1 KiB
YAML
name: Prod
|
|
|
|
concurrency:
|
|
group: prod_environment
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
|
|
jobs:
|
|
|
|
tsc:
|
|
|
|
name: Check types & lint
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install dependencies
|
|
run: yarn install --pure-lockfile
|
|
|
|
- name: Typescript
|
|
run: yarn tsc
|
|
|
|
- name: ESLint
|
|
run: yarn lint --quiet
|
|
|
|
deploy:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: tsc
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Copy robots.txt
|
|
run: cp public/robots.txt.production public/robots.txt
|
|
|
|
- name: Publish to Registry
|
|
uses: elgohr/Publish-Docker-Github-Action@master
|
|
with:
|
|
name: standardnotes/web
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
tags: "stable,${{ github.sha }}"
|
|
|
|
- name: Configure AWS credentials
|
|
uses: aws-actions/configure-aws-credentials@v1
|
|
with:
|
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
aws-region: us-east-1
|
|
|
|
- name: Download task definition
|
|
run: |
|
|
aws ecs describe-task-definition --task-definition app-prod --query taskDefinition > task-definition.json
|
|
|
|
- name: Fill in the new image ID in the Amazon ECS task definition
|
|
id: task-def
|
|
uses: aws-actions/amazon-ecs-render-task-definition@v1
|
|
with:
|
|
task-definition: task-definition.json
|
|
container-name: app-prod
|
|
image: "standardnotes/web:${{ github.sha }}"
|
|
|
|
- name: Deploy Amazon ECS task definition
|
|
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
|
|
with:
|
|
task-definition: ${{ steps.task-def.outputs.task-definition }}
|
|
service: app-prod
|
|
cluster: prod
|
|
wait-for-service-stability: true
|
|
|
|
notify_discord:
|
|
needs: deploy
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Run Discord Webhook
|
|
uses: johnnyhuy/actions-discord-git-webhook@main
|
|
with:
|
|
webhook_url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|