Skip to content

Added cool stuff

Added cool stuff #16

Workflow file for this run

name: Deploy to AWS

Check failure on line 1 in .github/workflows/deploy.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/deploy.yml

Invalid workflow file

(Line: 54, Col: 13): Unrecognized named-value: 'secrets'. Located at position 1 within expression: secrets.CUSTOM_DOMAIN != ''
on:
push:
branches:
- main
- master
env:
AWS_REGION: eu-west-2
ECR_REPOSITORY: sagetracker
jobs:
deploy:
name: Build and Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
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@v2
- name: Build, tag, and push image to Amazon ECR
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -t $ECR_REGISTRY/$ECR_REPOSITORY:latest -f app/Dockerfile.prod app/
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: 1.6.0
- name: Terraform Init
working-directory: terraform
run: terraform init
- name: Terraform Apply - Custom Domain Association
if: ${{ secrets.CUSTOM_DOMAIN != '' }}
working-directory: terraform
env:
TF_VAR_jwt_secret: ${{ secrets.JWT_SECRET }}
TF_VAR_image_tag: ${{ github.sha }}
TF_VAR_custom_domain: ${{ secrets.CUSTOM_DOMAIN }}
TF_VAR_hosted_zone_id: ${{ secrets.HOSTED_ZONE_ID }}
run: terraform apply -auto-approve -target=module.apprunner.aws_apprunner_custom_domain_association.main
- name: Terraform Apply
working-directory: terraform
env:
TF_VAR_jwt_secret: ${{ secrets.JWT_SECRET }}
TF_VAR_image_tag: ${{ github.sha }}
TF_VAR_custom_domain: ${{ secrets.CUSTOM_DOMAIN }}
TF_VAR_hosted_zone_id: ${{ secrets.HOSTED_ZONE_ID }}
run: terraform apply -auto-approve
- name: Get App Runner Service ARN
id: get-service
working-directory: terraform
run: |
SERVICE_ARN=$(terraform output -raw apprunner_service_arn)
echo "service_arn=$SERVICE_ARN" >> $GITHUB_OUTPUT
- name: Trigger App Runner Deployment
run: |
aws apprunner start-deployment --service-arn ${{ steps.get-service.outputs.service_arn }}
- name: Wait for Deployment
run: |
echo "Waiting for App Runner deployment to complete..."
for i in {1..30}; do
STATUS=$(aws apprunner describe-service --service-arn ${{ steps.get-service.outputs.service_arn }} --query "Service.Status" --output text)
echo "Status: $STATUS"
if [ "$STATUS" = "RUNNING" ]; then
echo "Deployment complete!"
break
fi
if [ "$STATUS" = "CREATE_FAILED" ] || [ "$STATUS" = "DELETE_FAILED" ]; then
echo "Deployment failed!"
exit 1
fi
sleep 10
done
- name: Get Service URL and Health Check
working-directory: terraform
run: |
SERVICE_URL=$(terraform output -raw apprunner_service_url)
echo "Service URL: $SERVICE_URL"
echo "Running health check..."
sleep 10
curl -f "$SERVICE_URL/api/health" || echo "Health check failed, but deployment may still be in progress"