output #7
Workflow file for this run
This file contains 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: Setup | |
on: | |
push: | |
branches: | |
- 'blue-green-deploy' | |
workflow_dispatch: | |
env: | |
aws_account_id: ${{ vars.AWS_ACCOUNT_ID }} | |
aws_region: ${{ vars.AWS_REGION }} | |
aws_role: ${{ vars.AWS_ROLE }} | |
permissions: | |
id-token: write | |
contents: read | |
jobs: | |
init: | |
uses: ./.github/workflows/build.yml | |
with: | |
aws_account_id: ${{ vars.AWS_ACCOUNT_ID }} | |
aws_region: ${{ vars.AWS_REGION }} | |
aws_role: ${{ vars.AWS_ROLE }} | |
repository_name: ${{ github.repository }} | |
service: | |
needs: | |
- init | |
runs-on: ubuntu-latest | |
env: | |
TF_VAR_task_definition_arn: ${{ needs.init.outputs.task_definition_arn }} | |
outputs: | |
cluster_name: ${{ steps.set-envs.outputs.CLUSTER_NAME }} | |
service_name: ${{ steps.set-envs.outputs.SERVICE_NAME }} | |
lb_listener_arn: ${{ steps.set-envs.outputs.LB_LISTENER_ARN }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-region: ${{ env.aws_region }} | |
role-to-assume: arn:aws:iam::${{ env.aws_account_id }}:role/${{ env.aws_role }} | |
role-session-name: GitHubActions | |
- name: Init | |
shell: bash | |
run: | | |
cd tf/service | |
terraform init | |
# - name: Deploy | |
# shell: bash | |
# id: deploy | |
# run: | | |
# cd tf/service | |
# terraform apply -auto-approve | |
# - name: Set env vars | |
# id: set-envs | |
# shell: bash | |
# run: | | |
# cd tf/service | |
# CLUSTER_NAME=$(terraform output -raw cluster_name) | |
# echo "CLUSTER_NAME=$CLUSTER_NAME" >> $GITHUB_OUTPUT | |
# SERVICE_NAME=$(terraform output -raw service_name) | |
# echo "SERVICE_NAME=$SERVICE_NAME" >> $GITHUB_OUTPUT | |
# LB_LISTENER_ARN=$(terraform output -raw lb_listener_arn) | |
# echo "LB_LISTENER_ARN=$LB_LISTENER_ARN" >> $GITHUB_OUTPUT | |
# network: | |
# needs: service | |
# runs-on: ubuntu-latest | |
# env: | |
# TF_VAR_load_balancer_listener_arn: ${{ needs.service.outputs.lb_listener_arn }} | |
# outputs: | |
# api_invoke_url: ${{ steps.set-envs.outputs.API_INVOKE_URL }} | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Configure AWS Credentials | |
# uses: aws-actions/configure-aws-credentials@v4 | |
# with: | |
# aws-region: ${{ env.aws_region }} | |
# role-to-assume: arn:aws:iam::${{ env.aws_account_id }}:role/${{ env.aws_role }} | |
# role-session-name: GitHubActions | |
# - name: Init | |
# shell: bash | |
# run: | | |
# cd tf/network | |
# terraform init | |
# - name: Deploy | |
# shell: bash | |
# id: deploy | |
# run: | | |
# cd tf/network | |
# terraform apply -auto-approve | |
# - name: Set env vars | |
# id: set-envs | |
# shell: bash | |
# run: | | |
# cd tf/network | |
# API_INVOKE_URL=$(terraform output -raw api_invoke_url) | |
# echo "API_INVOKE_URL=$API_INVOKE_URL" >> $GITHUB_OUTPUT | |
# check_image: | |
# needs: | |
# - task | |
# - service | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Configure AWS Credentials | |
# uses: aws-actions/configure-aws-credentials@v4 | |
# with: | |
# aws-region: ${{ env.aws_region }} | |
# role-to-assume: arn:aws:iam::${{ env.aws_account_id }}:role/${{ env.aws_role }} | |
# role-session-name: GitHubActions | |
# - name: Get current task definition | |
# id: task-def | |
# shell: bash | |
# run: | | |
# TASK_DEF_ARN=$(aws ecs describe-services \ | |
# --cluster ${{ needs.service.outputs.cluster_name }} \ | |
# --services ${{ needs.service.outputs.service_name }} \ | |
# --region ${{ env.aws_region }} \ | |
# --query 'services[0].taskDefinition' \ | |
# --output text) | |
# echo "TASK_DEF_ARN=$TASK_DEF_ARN" >> $GITHUB_ENV | |
# - name: Get image from task definition | |
# id: check-image | |
# shell: bash | |
# run: | | |
# CURRENT_IMAGE=$(aws ecs describe-task-definition \ | |
# --task-definition ${{ env.TASK_DEF_ARN }} \ | |
# --region ${{ env.aws_region }} \ | |
# --query 'taskDefinition.containerDefinitions[*].image' \ | |
# --output text) | |
# echo "CURRENT_IMAGE=$CURRENT_IMAGE" | |
# echo "CURRENT_IMAGE=$CURRENT_IMAGE" >> $GITHUB_ENV | |
# - name: Compare with Terraform image | |
# id: compare | |
# run: | | |
# if [ "${{ env.CURRENT_IMAGE }}" != "${{ needs.task.outputs.image_uri }}" ]; then | |
# echo "ERROR: Image mismatch! Current image: ${{ env.CURRENT_IMAGE }}, Expected: ${{ needs.task.outputs.image_uri }}" | |
# exit 1 | |
# else | |
# echo "Image matched: ${{ env.CURRENT_IMAGE }}" | |
# fi | |
# check_response: | |
# needs: | |
# - network | |
# - service | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Make API request | |
# id: curl_request | |
# run: | | |
# RESPONSE=$(curl -s ${{ needs.network.outputs.api_invoke_url}}/host) | |
# echo "Response: $RESPONSE" | |
# echo "$RESPONSE" | jq | |
# - name: Assert API response contains expected fields | |
# run: | | |
# RESPONSE=$(curl -s ${{ needs.network.outputs.api_invoke_url}}/host) | |
# echo "$RESPONSE" | jq | |
# # Extract values from response | |
# MESSAGE=$(echo "$RESPONSE" | jq -r '.message') | |
# IMAGE_URI=$(echo "$RESPONSE" | jq -r '.imageUri') | |
# HOSTNAME=$(echo "$RESPONSE" | jq -r '.hostname') | |
# # Check if expected fields exist | |
# if [[ "$MESSAGE" == "null" || "$IMAGE_URI" == "null" || "$HOSTNAME" == "null" ]]; then | |
# echo "Error: Response does not contain expected fields." | |
# exit 1 | |
# else | |
# echo "API response contains all expected fields." | |
# fi | |