Merge pull request #163 from hack-duke/rally/test-application-submit #43
This file contains hidden or 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: Build & Deploy Backend to EC2 | |
| on: | |
| push: | |
| branches: | |
| - master | |
| paths: | |
| - "portal-backend-python/**" | |
| - "models/**" | |
| - "pyproject.toml" | |
| - "poetry.lock" | |
| workflow_dispatch: | |
| env: | |
| AWS_REGION: us-east-2 | |
| ECR_REPOSITORY: portal-backend | |
| jobs: | |
| build-and-push: | |
| name: Build & Deploy Backend to EC2 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - 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: ${{ env.AWS_REGION }} | |
| - name: Login to Amazon ECR | |
| id: login-ecr | |
| uses: aws-actions/amazon-ecr-login@v1 | |
| - name: Set IMAGE_TAG to current time | |
| run: echo "IMAGE_TAG=$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build and push | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ./portal-backend-python/Dockerfile | |
| platforms: linux/arm64 | |
| push: true | |
| tags: | | |
| ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} | |
| ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:latest | |
| - name: Deploy to EC2 | |
| env: | |
| PRIVATE_KEY: ${{ secrets.EC2_SSH_KEY }} | |
| EC2_USER: ec2-user | |
| EC2_IP: ${{ secrets.EC2_IP }} | |
| ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | |
| run: | | |
| echo "$PRIVATE_KEY" > key.pem | |
| chmod 600 key.pem | |
| # Copy compose files to EC2 | |
| scp -i key.pem -o StrictHostKeyChecking=no portal-backend-python/compose.yml $EC2_USER@$EC2_IP:~/ | |
| scp -i key.pem -o StrictHostKeyChecking=no portal-backend-python/Caddyfile $EC2_USER@$EC2_IP:~/ | |
| # Deploy on EC2 | |
| ssh -i key.pem -o StrictHostKeyChecking=no $EC2_USER@$EC2_IP << EOF | |
| aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REGISTRY | |
| docker pull $ECR_REGISTRY/$ECR_REPOSITORY:latest | |
| docker-compose up -d | |
| docker image prune -f | |
| EOF |