Skip to content

Deploy to EC2

Deploy to EC2 #95

Workflow file for this run

name: Deploy to EC2
on:
workflow_run:
workflows: ["Run Tests"]
types:
- completed
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Create EC2 private key file
shell: bash
env:
EC2_PRIVATE_KEY: ${{ secrets.EC2_PRIVATE_KEY }}
run: |
echo "$EC2_PRIVATE_KEY" > ec2_private_key.pem
chmod 400 "ec2_private_key.pem"
- name: Create env file
shell: bash
env:
EC2_ENV_FILE: ${{ secrets.CODE_ENV_FILE }}
run: |
echo "$EC2_ENV_FILE" > .env.production.local
- name: Copy Files to EC2
shell: bash
env:
REPO_NAME: ${{ github.event.repository.name }}
EC2_PRIVATE_KEY: ${{ secrets.EC2_PRIVATE_KEY }}
FULL_CHAIN_CERTIFICATE_PEM_FILE: ${{ secrets.FULL_CHAIN_CERTIFICATE_PEM_FILE }}
PRIV_KEY_CERTIFICATE_PEM_FILE: ${{ secrets.PRIV_KEY_CERTIFICATE_PEM_FILE }}
run: |
ssh -i ec2_private_key.pem -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "mkdir -p $REPO_NAME"
rsync -avz --exclude='.git/' --exclude='ec2_private_key.pem' --exclude='node_modules/' -e 'ssh -i ec2_private_key.pem -o StrictHostKeyChecking=no' $(pwd)/ ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:~/$REPO_NAME
ssh -i ec2_private_key.pem -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "cd $REPO_NAME && mkdir -p certs && cd certs && echo \"$FULL_CHAIN_CERTIFICATE_PEM_FILE\" > fullchain.pem && echo \"$PRIV_KEY_CERTIFICATE_PEM_FILE\" > privkey.pem && chmod 644 fullchain.pem && chmod 600 privkey.pem"
ssh -i ec2_private_key.pem -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "cd $REPO_NAME && mkdir -p credentials && cd credentials && echo '${{ secrets.SERVICE_ACCOUNT_KEY_JSON_BASE64_ENCODED }}' | base64 --decode > credentials.json"
- name: Deploy to EC2
env:
REPO_NAME: ${{ github.event.repository.name }}
EC2_PRIVATE_KEY: ${{ secrets.EC2_PRIVATE_KEY }}
run: |
ssh -i ec2_private_key.pem -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "cd $REPO_NAME && sudo docker compose down && sudo docker image prune -f && sudo docker builder prune -f && sudo docker compose up -d --build && echo 'Done'"