Skip to content

ci: infisical backend docker #15

ci: infisical backend docker

ci: infisical backend docker #15

Workflow file for this run

name: Build and Deploy to EC2
on:
push:
branches: ["main"]
paths:
- "backend/**"
- "frontend/**"
- "docker-compose.yml"
pull_request:
branches: ["main"]
paths:
- "backend/**"
- "frontend/**"
- "docker-compose.yml"
workflow_dispatch:
jobs:
build-backend:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to Amazon ECR
run: |
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/z4n6o0v4
- name: Build and Push Backend Docker Image
run: |
ECR_REPO_SERVER=public.ecr.aws/z4n6o0v4/modx/server
docker build -t $ECR_REPO_SERVER:latest -f backend/Dockerfile backend
docker push $ECR_REPO_SERVER:latest
build-frontend:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to Amazon ECR
run: |
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/z4n6o0v4
- name: Build and Push Frontend Docker Image
run: |
ECR_REPO_CLIENT=public.ecr.aws/z4n6o0v4/modx/client
docker build -t $ECR_REPO_CLIENT:latest -f frontend/Dockerfile frontend
docker push $ECR_REPO_CLIENT:latest
deploy-backend:
needs: build-backend
runs-on: ubuntu-latest
if: success() && needs.build-backend.result == 'success'
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up SSH
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.EC2_PRIVATE_KEY }}
- name: Upload Docker Compose files to EC2
run: |
HOST=${{ secrets.EC2_HOST }}
USER=${{ secrets.EC2_USER }}
PORT=22
ssh -o StrictHostKeyChecking=no $USER@$HOST mkdir -p /home/$USER/modx
scp -o StrictHostKeyChecking=no -P $PORT docker-compose.yml $USER@$HOST:/home/$USER/modx/docker-compose.yml
- name: Deploy Backend to EC2
run: |
HOST=${{ secrets.EC2_HOST }}
USER=${{ secrets.EC2_USER }}
PORT=22
ssh -o StrictHostKeyChecking=no $USER@$HOST << 'EOF'
docker pull public.ecr.aws/z4n6o0v4/modx/server:latest
docker compose -f /home/$USER/modx/docker-compose.yml up -d modx_server
EOF
deploy-frontend:
needs: build-frontend
runs-on: ubuntu-latest
if: success() && needs.build-frontend.result == 'success'
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up SSH
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.EC2_PRIVATE_KEY }}
- name: Upload Docker Compose files to EC2
run: |
HOST=${{ secrets.EC2_HOST }}
USER=${{ secrets.EC2_USER }}
PORT=22
ssh -o StrictHostKeyChecking=no $USER@$HOST mkdir -p /home/$USER/modx
scp -o StrictHostKeyChecking=no -P $PORT docker-compose.yml $USER@$HOST:/home/$USER/modx/docker-compose.yml
- name: Deploy Frontend to EC2
run: |
HOST=${{ secrets.EC2_HOST }}
USER=${{ secrets.EC2_USER }}
PORT=22
ssh -o StrictHostKeyChecking=no $USER@$HOST << 'EOF'
docker pull public.ecr.aws/z4n6o0v4/modx/client:latest
docker compose -f /home/$USER/modx/docker-compose.yml up -d modx_client
EOF