From 22c0cff23719fba024326a4a7b5ed2684117b390 Mon Sep 17 00:00:00 2001 From: Sam Seed Date: Fri, 6 Oct 2023 18:04:56 +0100 Subject: [PATCH] Start refactoring --- .github/workflows/aws_deploy.yml | 33 +++++++++-------------- .github/workflows/production_pipeline.yml | 27 ++++++++++--------- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/.github/workflows/aws_deploy.yml b/.github/workflows/aws_deploy.yml index daa308bfd..ec1fb711d 100644 --- a/.github/workflows/aws_deploy.yml +++ b/.github/workflows/aws_deploy.yml @@ -12,6 +12,9 @@ on: environment: required: true type: string + release_tag: + required: false + type: string concurrency: group: deploy-${{ inputs.environment }} @@ -80,40 +83,30 @@ jobs: - name: Get timestamp id: timestamp - run: echo "timestamp=$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV - - - name: Get latest release with tag - id: latestrelease - if: inputs.environment == 'production' - run: | - echo "releasetag=$(curl -s https://api.github.com/repos/${REPO_URL}/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> $GITHUB_OUTPUT - - - name: Confirm release tag - if: inputs.environment == 'production' - run: | - echo ${{ steps.latestrelease.outputs.releasetag }} + run: echo "timestamp=$(date +%Y%m%d%H%M%S)" >> $GITHUB_OUTPUT - - name: Checkout tag + - name: Checkout release tag uses: actions/checkout@v3 if: inputs.environment == 'production' with: - ref: ${{ steps.latestrelease.outputs.releasetag }} + ref: ${{ inputs.release_tag }} - name: Get tags id: tags run: | echo "commit-tag=$(if [[ ${{ inputs.environment == 'production' }} ]]; then echo $(git log -1 '--format=format:%H'); else echo ${{ github.sha }}; fi)" >> $GITHUB_OUTPUT - echo "additional-tag=$(if [[ ${{ inputs.environment == 'production' }} ]]; then echo ${{ steps.latestrelease.outputs.releasetag }}; else echo ${{ env.timestamp }}; fi)" >> $GITHUB_OUTPUT + echo "additional-tag=$(if [[ ${{ inputs.environment == 'production' }} ]]; then echo ${{ inputs.release_tag }}; else echo ${{ steps.timestamp.outputs.timestamp }}; fi)" >> $GITHUB_OUTPUT - name: Add environment tag to existing image + id: update-image-tags env: registry: ${{ steps.ecr-login.outputs.registry }} commit_tag: ${{ steps.tags.outputs.commit-tag }} - readable_tag: ${{ inputs.environment }}-${{ steps.tags.outputs.additional-tag }}-${{ env.timestamp }} + readable_tag: ${{ inputs.environment }}-${{ steps.tags.outputs.additional-tag }}-${{ steps.timestamp.outputs.timestamp }} run: | manifest=$(aws ecr batch-get-image --repository-name $repository --image-ids imageTag=$commit_tag --output text --query images[].imageManifest) aws ecr put-image --repository-name $repository --image-tag $readable_tag --image-manifest "$manifest" - echo "image=$registry/$repository:$readable_tag" >> $GITHUB_ENV + echo "image=$registry/$repository:$readable_tag" >> $GITHUB_OUTPUT - name: Configure AWS credentials for environment uses: aws-actions/configure-aws-credentials@v3 @@ -134,7 +127,7 @@ jobs: with: task-definition: ad-hoc-task-definition.json container-name: app - image: ${{ env.image }} + image: ${{ steps.update-image-tags.outputs.image }} - name: Update ad hoc task definition uses: aws-actions/amazon-ecs-deploy-task-definition@v1 @@ -169,7 +162,7 @@ jobs: with: task-definition: app-task-definition.json container-name: app - image: ${{ env.image }} + image: ${{ steps.update-image-tags.outputs.image }} - name: Deploy updated application uses: aws-actions/amazon-ecs-deploy-task-definition@v1 @@ -191,7 +184,7 @@ jobs: with: task-definition: sidekiq-task-definition.json container-name: sidekiq - image: ${{ env.image }} + image: ${{ steps.update-image-tags.outputs.image }} - name: Deploy updated sidekiq uses: aws-actions/amazon-ecs-deploy-task-definition@v1 diff --git a/.github/workflows/production_pipeline.yml b/.github/workflows/production_pipeline.yml index 09f8119cf..899a769b4 100644 --- a/.github/workflows/production_pipeline.yml +++ b/.github/workflows/production_pipeline.yml @@ -16,6 +16,8 @@ jobs: test: name: Test runs-on: ubuntu-latest + outputs: + releasetag: ${{ steps.latestrelease.outputs.releasetag }} services: postgres: @@ -48,7 +50,7 @@ jobs: - name: Get latest release with tag id: latestrelease run: | - echo "::set-output name=releasetag::$(curl -s https://api.github.com/repos/${REPO_URL}/releases/latest | jq '.tag_name' | sed 's/\"//g')" + echo "releasetag=$(curl -s https://api.github.com/repos/${REPO_URL}/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> $GITHUB_OUTPUT - name: Confirm release tag run: | @@ -258,14 +260,15 @@ jobs: cf set-env $APP_NAME SENTRY_DSN $SENTRY_DSN cf push $APP_NAME --strategy rolling - # aws_deploy: - # name: AWS Deploy - # if: github.ref == 'refs/heads/main' - # needs: [lint, test, feature_test, audit] - # uses: ./.github/workflows/aws_deploy.yml - # with: - # aws_account_id: 977287343304 - # aws_resource_prefix: core-prod - # environment: production - # permissions: - # id-token: write + aws_deploy: + name: AWS Deploy + if: github.ref == 'refs/heads/main' + needs: [lint, test, feature_test, audit] + uses: ./.github/workflows/aws_deploy.yml + with: + aws_account_id: 977287343304 + aws_resource_prefix: core-prod + environment: production + release_tag: ${{ needs.test.outputs.releasetag }} + permissions: + id-token: write