Skip to content

Commit 87d9958

Browse files
authored
chore: workflow improvements and simplification for ECR (#109)
1 parent 0008eb1 commit 87d9958

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

.github/workflows/.deployer.yml

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,26 @@ jobs:
9090
ECR_REGISTRY=$(aws sts get-caller-identity --query Account --output text).dkr.ecr.ca-central-1.amazonaws.com
9191
echo "ecr-registry=$ECR_REGISTRY" >> $GITHUB_OUTPUT
9292
93+
- name: Image Tags
94+
id: image-tags
95+
shell: bash
96+
run: |
97+
if [[ "${{ inputs.app_env }}" == "prod" && "${{ inputs.working_directory }}" == "api" ]]; then
98+
API_IMAGE="${{ steps.ecr-check.outputs.ecr-registry }}/${{ github.event.repository.name }}-backend-prod:${{ inputs.tag }}"
99+
FLYWAY_IMAGE="${{ steps.ecr-check.outputs.ecr-registry }}/${{ github.event.repository.name }}-migrations-prod:${{ inputs.tag }}"
100+
else
101+
API_IMAGE="ghcr.io/${{ github.repository }}/backend:${{ inputs.tag }}"
102+
FLYWAY_IMAGE="ghcr.io/${{ github.repository }}/migrations:${{ inputs.tag }}"
103+
fi
104+
echo "api-image=$API_IMAGE" >> $GITHUB_OUTPUT
105+
echo "flyway-image=$FLYWAY_IMAGE" >> $GITHUB_OUTPUT
93106
- name: Terragrunt ${{inputs.command}}
94107
working-directory: terraform/${{ inputs.working_directory }}/${{ inputs.environment_name }}
95108
env:
96109
target_env: ${{ inputs.environment_name }}
97110
aws_license_plate: ${{ secrets.AWS_LICENSE_PLATE }}
98-
flyway_image: ${{ (inputs.app_env == 'prod' && inputs.working_directory == 'api' && format('{0}/quickstart-aws-containers-migrations-prod:{1}', steps.ecr-check.outputs.ecr-registry, inputs.tag)) || (format('ghcr.io/{0}/migrations:{1}', github.repository, inputs.tag)) }}
99-
api_image: ${{ (inputs.app_env == 'prod' && inputs.working_directory == 'api' && format('{0}/quickstart-aws-containers-backend-prod:{1}', steps.ecr-check.outputs.ecr-registry, inputs.tag)) || (format('ghcr.io/{0}/backend:{1}', github.repository, inputs.tag)) }}
111+
flyway_image: ${{ steps.image-tags.outputs.flyway-image }}
112+
api_image: ${{ steps.image-tags.outputs.api-image }}
100113
app_env: ${{inputs.app_env}}
101114
stack_prefix: ${{ inputs.stack_prefix }}
102115
run: |
@@ -110,8 +123,8 @@ jobs:
110123
env:
111124
target_env: ${{ inputs.environment_name }}
112125
aws_license_plate: ${{ secrets.AWS_LICENSE_PLATE }}
113-
flyway_image: ${{ inputs.app_env == 'prod' && format('{0}/quickstart-aws-containers-migrations-prod:{1}', steps.ecr-check.outputs.ecr-registry, inputs.tag) || format('ghcr.io/{0}/migrations:{1}', github.repository, inputs.tag) }}
114-
api_image: ${{ inputs.app_env == 'prod' && format('{0}/quickstart-aws-containers-backend-prod:{1}', steps.ecr-check.outputs.ecr-registry, inputs.tag) || format('ghcr.io/{0}/backend:{1}', github.repository, inputs.tag) }}
126+
flyway_image: ${{ steps.image-tags.outputs.flyway-image }}
127+
api_image: ${{ steps.image-tags.outputs.api-image }}
115128
app_env: ${{inputs.app_env}}
116129
stack_prefix: ${{ inputs.stack_prefix }}
117130
run: |
@@ -127,8 +140,8 @@ jobs:
127140
env:
128141
target_env: ${{ inputs.environment_name }}
129142
aws_license_plate: ${{ secrets.AWS_LICENSE_PLATE }}
130-
flyway_image: ${{ inputs.app_env == 'prod' && format('{0}/quickstart-aws-containers-migrations-prod:{1}', steps.ecr-check.outputs.ecr-registry, inputs.tag) || format('ghcr.io/{0}/migrations:{1}', github.repository, inputs.tag) }}
131-
api_image: ${{ inputs.app_env == 'prod' && format('{0}/quickstart-aws-containers-backend-prod:{1}', steps.ecr-check.outputs.ecr-registry, inputs.tag) || format('ghcr.io/{0}/backend:{1}', github.repository, inputs.tag) }}
143+
flyway_image: ${{ steps.image-tags.outputs.flyway-image }}
144+
api_image: ${{ steps.image-tags.outputs.api-image }}
132145
app_env: ${{inputs.app_env}}
133146
stack_prefix: ${{ inputs.stack_prefix }}
134147
run: |

.github/workflows/release.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,22 +121,22 @@ jobs:
121121
run: |
122122
# Create ECR repository if it doesn't exist
123123
aws ecr create-repository \
124-
--repository-name quickstart-aws-containers-${{ matrix.package }}-prod \
124+
--repository-name ${{ github.event.repository.name }}-${{ matrix.package }}-prod \
125125
--image-tag-mutability IMMUTABLE \
126126
--image-scanning-configuration scanOnPush=true \
127127
|| true
128128
129129
# Apply lifecycle policy separately
130130
aws ecr put-lifecycle-policy \
131-
--repository-name quickstart-aws-containers-${{ matrix.package }}-prod \
132-
--lifecycle-policy '{"rules":[{"rulePriority":1,"description":"Keep only 5 tagged images","selection":{"tagStatus":"tagged","countType":"imageCountMoreThan","countNumber":5},"action":{"type":"expire"}},{"rulePriority":2,"description":"Remove untagged images","selection":{"tagStatus":"untagged","countType":"imageCountMoreThan","countNumber":0},"action":{"type":"expire"}}]}' \
131+
--repository-name ${{ github.event.repository.name }}-${{ matrix.package }}-prod \
132+
--lifecycle-policy '{"rules":[{"rulePriority":1,"description":"Keep only 5 tagged images","selection":{"tagStatus":"tagged","tagPatternList":["*"],"countType":"imageCountMoreThan","countNumber":5},"action":{"type":"expire"}},{"rulePriority":2,"description":"Remove untagged images","selection":{"tagStatus":"untagged","countType":"imageCountMoreThan","countNumber":1},"action":{"type":"expire"}}]}' \
133133
|| true
134134
135135
# Pull image from GHCR
136-
docker pull $GHCR_IMAGE
136+
docker pull $GHCR_IMAGE || { echo "Error: Failed to pull image $GHCR_IMAGE"; exit 1; }
137137
138138
# Tag for ECR
139-
ECR_IMAGE=$ECR_REGISTRY/quickstart-aws-containers-${{ matrix.package }}-prod:${{ needs.vars.outputs.tag }}
139+
ECR_IMAGE=$ECR_REGISTRY/${{ github.event.repository.name }}-${{ matrix.package }}-prod:${{ needs.vars.outputs.tag }}
140140
docker tag $GHCR_IMAGE $ECR_IMAGE
141141
142142
# Push to ECR

0 commit comments

Comments
 (0)