From df28219c1209e18ea975c34a14f43d7d0dc621ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20Wikstr=C3=B6m?= Date: Fri, 10 Jan 2025 16:31:07 +0200 Subject: [PATCH] WIP testaa master workflow --- .../workflows/test_build_deploy_master.yml | 494 +++++++++--------- 1 file changed, 247 insertions(+), 247 deletions(-) diff --git a/.github/workflows/test_build_deploy_master.yml b/.github/workflows/test_build_deploy_master.yml index 7107ce891c..c87e44b791 100644 --- a/.github/workflows/test_build_deploy_master.yml +++ b/.github/workflows/test_build_deploy_master.yml @@ -2,7 +2,7 @@ name: Test, build and deploy master on: push: branches: - - master + - ci-optimointi env: DOCKER_BUILDKIT: 1 SSH_AUTH_SOCK: /tmp/ssh_agent.sock @@ -196,249 +196,249 @@ jobs: env: TASKDEF_ARN: ${{ steps.ytr-data-loader-taskdef-deploy.outputs.task-definition-arn }} run: aws ssm put-parameter --overwrite --name /koski/ytr-data-loader/task-definition --type String --value ${TASKDEF_ARN} - - deploy_qa: - name: Deploy to qa environment - environment: - name: qa - needs: [deploy_dev] - runs-on: ubuntu-20.04 - permissions: - id-token: write - contents: read - packages: write - steps: - - uses: actions/checkout@v4 - - - name: Configure AWS credentials for QA environment - uses: aws-actions/configure-aws-credentials@v1-node16 - with: - role-to-assume: ${{ secrets.DEPLOY_ROLE }} - role-duration-seconds: 3600 - role-session-name: KoskiDeployment-QA-${{ github.sha }} - aws-region: eu-west-1 - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 - with: - registries: ${{ secrets.ECR_ACCOUNT_ID }} - mask-password: "true" - - - name: Get task definition ARN - id: get-taskdef-arn - run: | - echo "taskdef-arn=$(aws ssm get-parameter --name /koski/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT - - - name: Get task definition skeleton - run: | - aws ecs describe-task-definition --task-definition ${{ steps.get-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > task-definition.json - - - name: Render Amazon ECS task definition - id: task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: task-definition.json - container-name: KoskiContainer - image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} - - - name: Get AppSpec template - run: | - aws ssm get-parameter --name /koski/appspec-template --output text --query 'Parameter.Value' > appspec.json - - - name: Deploy using CodeDeploy - uses: aws-actions/amazon-ecs-deploy-task-definition@v2 - with: - task-definition: ${{ steps.task-def.outputs.task-definition }} - service: koski - cluster: koski-cluster - wait-for-service-stability: true - codedeploy-appspec: appspec.json - codedeploy-application: koski - codedeploy-deployment-group: koski-deployment-group - - - name: Get raportointikanta-loader task definition ARN - id: get-raportointikanta-loader-taskdef-arn - run: | - echo "taskdef-arn=$(aws ssm get-parameter --name /koski/raportointikanta-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT - - - name: Get task definition skeleton - run: | - aws ecs describe-task-definition --task-definition ${{ steps.get-raportointikanta-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > raportointikanta-loader-task-definition.json - - - name: Render Amazon ECS task definition - id: raportointikanta-loader-task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: raportointikanta-loader-task-definition.json - container-name: RaportointikantaLoaderContainer - image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} - - - name: Deploy Amazon ECS task definition - id: raportointikanta-loader-taskdef-deploy - uses: aws-actions/amazon-ecs-deploy-task-definition@v2 - with: - task-definition: ${{ steps.raportointikanta-loader-task-def.outputs.task-definition }} - cluster: koski-cluster - - - name: Write task definition ARN to parameter store - env: - TASKDEF_ARN: ${{ steps.raportointikanta-loader-taskdef-deploy.outputs.task-definition-arn }} - run: aws ssm put-parameter --overwrite --name /koski/raportointikanta-loader/task-definition --type String --value ${TASKDEF_ARN} - - - name: Get ytr-data-loader loader task definition ARN - id: get-ytr-data-loader-taskdef-arn - run: | - echo "taskdef-arn=$(aws ssm get-parameter --name /koski/ytr-data-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT - - - name: Get task definition skeleton - run: | - aws ecs describe-task-definition --task-definition ${{ steps.get-ytr-data-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > ytr-data-loader-task-definition.json - - - name: Render Amazon ECS task definition - id: ytr-data-loader-task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ytr-data-loader-task-definition.json - container-name: YtrDataLoaderContainer - image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} - - - name: Deploy Amazon ECS task definition - id: ytr-data-loader-taskdef-deploy - uses: aws-actions/amazon-ecs-deploy-task-definition@v2 - with: - task-definition: ${{ steps.ytr-data-loader-task-def.outputs.task-definition }} - cluster: koski-cluster - - - name: Write task definition ARN to parameter store - env: - TASKDEF_ARN: ${{ steps.ytr-data-loader-taskdef-deploy.outputs.task-definition-arn }} - run: aws ssm put-parameter --overwrite --name /koski/ytr-data-loader/task-definition --type String --value ${TASKDEF_ARN} - - deploy_prod: - name: Deploy to prod environment - environment: - name: prod - needs: [deploy_qa] - runs-on: ubuntu-20.04 - permissions: - id-token: write - contents: read - packages: write - steps: - - uses: actions/checkout@v4 - - - name: Configure AWS credentials for PROD environment - uses: aws-actions/configure-aws-credentials@v1-node16 - with: - role-to-assume: ${{ secrets.DEPLOY_ROLE }} - role-duration-seconds: 3600 - role-session-name: KoskiDeployment-PROD-${{ github.sha }} - aws-region: eu-west-1 - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 - with: - registries: ${{ secrets.ECR_ACCOUNT_ID }} - mask-password: "true" - - - name: Get task definition ARN - id: get-taskdef-arn - run: | - echo "taskdef-arn=$(aws ssm get-parameter --name /koski/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT - - - name: Get task definition skeleton - run: | - aws ecs describe-task-definition --task-definition ${{ steps.get-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > task-definition.json - - - name: Render Amazon ECS task definition - id: task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: task-definition.json - container-name: KoskiContainer - image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} - - - name: Get AppSpec template - run: | - aws ssm get-parameter --name /koski/appspec-template --output text --query 'Parameter.Value' > appspec.json - - - name: Deploy Amazon ECS task definition - id: koski-taskdef-deploy - uses: aws-actions/amazon-ecs-deploy-task-definition@v2 - with: - task-definition: ${{ steps.task-def.outputs.task-definition }} - service: koski - cluster: koski-cluster - wait-for-service-stability: true - codedeploy-appspec: appspec.json - codedeploy-application: koski - codedeploy-deployment-group: koski-deployment-group - - - name: Get raportointikanta-loader task definition ARN - id: get-raportointikanta-loader-taskdef-arn - run: | - echo "taskdef-arn=$(aws ssm get-parameter --name /koski/raportointikanta-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT - - - name: Get task definition skeleton - run: | - aws ecs describe-task-definition --task-definition ${{ steps.get-raportointikanta-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > raportointikanta-loader-task-definition.json - - - name: Render Amazon ECS task definition - id: raportointikanta-loader-task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: raportointikanta-loader-task-definition.json - container-name: RaportointikantaLoaderContainer - image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} - - - name: Deploy Amazon ECS task definition - id: raportointikanta-loader-taskdef-deploy - uses: aws-actions/amazon-ecs-deploy-task-definition@v2 - with: - task-definition: ${{ steps.raportointikanta-loader-task-def.outputs.task-definition }} - cluster: koski-cluster - - - name: Write task definition ARN to parameter store - env: - TASKDEF_ARN: ${{ steps.raportointikanta-loader-taskdef-deploy.outputs.task-definition-arn }} - run: aws ssm put-parameter --overwrite --name /koski/raportointikanta-loader/task-definition --type String --value ${TASKDEF_ARN} - - - name: Get ytr-data-loader loader task definition ARN - id: get-ytr-data-loader-taskdef-arn - run: | - echo "taskdef-arn=$(aws ssm get-parameter --name /koski/ytr-data-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT - - - name: Get task definition skeleton - run: | - aws ecs describe-task-definition --task-definition ${{ steps.get-ytr-data-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > ytr-data-loader-task-definition.json - - - name: Render Amazon ECS task definition - id: ytr-data-loader-task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ytr-data-loader-task-definition.json - container-name: YtrDataLoaderContainer - image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} - - - name: Deploy Amazon ECS task definition - id: ytr-data-loader-taskdef-deploy - uses: aws-actions/amazon-ecs-deploy-task-definition@v2 - with: - task-definition: ${{ steps.ytr-data-loader-task-def.outputs.task-definition }} - cluster: koski-cluster - - - name: Write task definition ARN to parameter store - env: - TASKDEF_ARN: ${{ steps.ytr-data-loader-taskdef-deploy.outputs.task-definition-arn }} - run: aws ssm put-parameter --overwrite --name /koski/ytr-data-loader/task-definition --type String --value ${TASKDEF_ARN} - - - name: Report task ready - uses: ravsamhq/notify-slack-action@v1 - if: always() - with: - status: ${{ job.status }} - notification_title: "Prod install {status_message}" - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} +# +# deploy_qa: +# name: Deploy to qa environment +# environment: +# name: qa +# needs: [deploy_dev] +# runs-on: ubuntu-20.04 +# permissions: +# id-token: write +# contents: read +# packages: write +# steps: +# - uses: actions/checkout@v4 +# +# - name: Configure AWS credentials for QA environment +# uses: aws-actions/configure-aws-credentials@v1-node16 +# with: +# role-to-assume: ${{ secrets.DEPLOY_ROLE }} +# role-duration-seconds: 3600 +# role-session-name: KoskiDeployment-QA-${{ github.sha }} +# aws-region: eu-west-1 +# +# - name: Login to Amazon ECR +# id: login-ecr +# uses: aws-actions/amazon-ecr-login@v1 +# with: +# registries: ${{ secrets.ECR_ACCOUNT_ID }} +# mask-password: "true" +# +# - name: Get task definition ARN +# id: get-taskdef-arn +# run: | +# echo "taskdef-arn=$(aws ssm get-parameter --name /koski/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT +# +# - name: Get task definition skeleton +# run: | +# aws ecs describe-task-definition --task-definition ${{ steps.get-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > task-definition.json +# +# - name: Render Amazon ECS task definition +# id: task-def +# uses: aws-actions/amazon-ecs-render-task-definition@v1 +# with: +# task-definition: task-definition.json +# container-name: KoskiContainer +# image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} +# +# - name: Get AppSpec template +# run: | +# aws ssm get-parameter --name /koski/appspec-template --output text --query 'Parameter.Value' > appspec.json +# +# - name: Deploy using CodeDeploy +# uses: aws-actions/amazon-ecs-deploy-task-definition@v2 +# with: +# task-definition: ${{ steps.task-def.outputs.task-definition }} +# service: koski +# cluster: koski-cluster +# wait-for-service-stability: true +# codedeploy-appspec: appspec.json +# codedeploy-application: koski +# codedeploy-deployment-group: koski-deployment-group +# +# - name: Get raportointikanta-loader task definition ARN +# id: get-raportointikanta-loader-taskdef-arn +# run: | +# echo "taskdef-arn=$(aws ssm get-parameter --name /koski/raportointikanta-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT +# +# - name: Get task definition skeleton +# run: | +# aws ecs describe-task-definition --task-definition ${{ steps.get-raportointikanta-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > raportointikanta-loader-task-definition.json +# +# - name: Render Amazon ECS task definition +# id: raportointikanta-loader-task-def +# uses: aws-actions/amazon-ecs-render-task-definition@v1 +# with: +# task-definition: raportointikanta-loader-task-definition.json +# container-name: RaportointikantaLoaderContainer +# image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} +# +# - name: Deploy Amazon ECS task definition +# id: raportointikanta-loader-taskdef-deploy +# uses: aws-actions/amazon-ecs-deploy-task-definition@v2 +# with: +# task-definition: ${{ steps.raportointikanta-loader-task-def.outputs.task-definition }} +# cluster: koski-cluster +# +# - name: Write task definition ARN to parameter store +# env: +# TASKDEF_ARN: ${{ steps.raportointikanta-loader-taskdef-deploy.outputs.task-definition-arn }} +# run: aws ssm put-parameter --overwrite --name /koski/raportointikanta-loader/task-definition --type String --value ${TASKDEF_ARN} +# +# - name: Get ytr-data-loader loader task definition ARN +# id: get-ytr-data-loader-taskdef-arn +# run: | +# echo "taskdef-arn=$(aws ssm get-parameter --name /koski/ytr-data-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT +# +# - name: Get task definition skeleton +# run: | +# aws ecs describe-task-definition --task-definition ${{ steps.get-ytr-data-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > ytr-data-loader-task-definition.json +# +# - name: Render Amazon ECS task definition +# id: ytr-data-loader-task-def +# uses: aws-actions/amazon-ecs-render-task-definition@v1 +# with: +# task-definition: ytr-data-loader-task-definition.json +# container-name: YtrDataLoaderContainer +# image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} +# +# - name: Deploy Amazon ECS task definition +# id: ytr-data-loader-taskdef-deploy +# uses: aws-actions/amazon-ecs-deploy-task-definition@v2 +# with: +# task-definition: ${{ steps.ytr-data-loader-task-def.outputs.task-definition }} +# cluster: koski-cluster +# +# - name: Write task definition ARN to parameter store +# env: +# TASKDEF_ARN: ${{ steps.ytr-data-loader-taskdef-deploy.outputs.task-definition-arn }} +# run: aws ssm put-parameter --overwrite --name /koski/ytr-data-loader/task-definition --type String --value ${TASKDEF_ARN} +# +# deploy_prod: +# name: Deploy to prod environment +# environment: +# name: prod +# needs: [deploy_qa] +# runs-on: ubuntu-20.04 +# permissions: +# id-token: write +# contents: read +# packages: write +# steps: +# - uses: actions/checkout@v4 +# +# - name: Configure AWS credentials for PROD environment +# uses: aws-actions/configure-aws-credentials@v1-node16 +# with: +# role-to-assume: ${{ secrets.DEPLOY_ROLE }} +# role-duration-seconds: 3600 +# role-session-name: KoskiDeployment-PROD-${{ github.sha }} +# aws-region: eu-west-1 +# +# - name: Login to Amazon ECR +# id: login-ecr +# uses: aws-actions/amazon-ecr-login@v1 +# with: +# registries: ${{ secrets.ECR_ACCOUNT_ID }} +# mask-password: "true" +# +# - name: Get task definition ARN +# id: get-taskdef-arn +# run: | +# echo "taskdef-arn=$(aws ssm get-parameter --name /koski/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT +# +# - name: Get task definition skeleton +# run: | +# aws ecs describe-task-definition --task-definition ${{ steps.get-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > task-definition.json +# +# - name: Render Amazon ECS task definition +# id: task-def +# uses: aws-actions/amazon-ecs-render-task-definition@v1 +# with: +# task-definition: task-definition.json +# container-name: KoskiContainer +# image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} +# +# - name: Get AppSpec template +# run: | +# aws ssm get-parameter --name /koski/appspec-template --output text --query 'Parameter.Value' > appspec.json +# +# - name: Deploy Amazon ECS task definition +# id: koski-taskdef-deploy +# uses: aws-actions/amazon-ecs-deploy-task-definition@v2 +# with: +# task-definition: ${{ steps.task-def.outputs.task-definition }} +# service: koski +# cluster: koski-cluster +# wait-for-service-stability: true +# codedeploy-appspec: appspec.json +# codedeploy-application: koski +# codedeploy-deployment-group: koski-deployment-group +# +# - name: Get raportointikanta-loader task definition ARN +# id: get-raportointikanta-loader-taskdef-arn +# run: | +# echo "taskdef-arn=$(aws ssm get-parameter --name /koski/raportointikanta-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT +# +# - name: Get task definition skeleton +# run: | +# aws ecs describe-task-definition --task-definition ${{ steps.get-raportointikanta-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > raportointikanta-loader-task-definition.json +# +# - name: Render Amazon ECS task definition +# id: raportointikanta-loader-task-def +# uses: aws-actions/amazon-ecs-render-task-definition@v1 +# with: +# task-definition: raportointikanta-loader-task-definition.json +# container-name: RaportointikantaLoaderContainer +# image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} +# +# - name: Deploy Amazon ECS task definition +# id: raportointikanta-loader-taskdef-deploy +# uses: aws-actions/amazon-ecs-deploy-task-definition@v2 +# with: +# task-definition: ${{ steps.raportointikanta-loader-task-def.outputs.task-definition }} +# cluster: koski-cluster +# +# - name: Write task definition ARN to parameter store +# env: +# TASKDEF_ARN: ${{ steps.raportointikanta-loader-taskdef-deploy.outputs.task-definition-arn }} +# run: aws ssm put-parameter --overwrite --name /koski/raportointikanta-loader/task-definition --type String --value ${TASKDEF_ARN} +# +# - name: Get ytr-data-loader loader task definition ARN +# id: get-ytr-data-loader-taskdef-arn +# run: | +# echo "taskdef-arn=$(aws ssm get-parameter --name /koski/ytr-data-loader/task-definition-skeleton --output text --query 'Parameter.Value')" >> $GITHUB_OUTPUT +# +# - name: Get task definition skeleton +# run: | +# aws ecs describe-task-definition --task-definition ${{ steps.get-ytr-data-loader-taskdef-arn.outputs.taskdef-arn }} --query 'taskDefinition' > ytr-data-loader-task-definition.json +# +# - name: Render Amazon ECS task definition +# id: ytr-data-loader-task-def +# uses: aws-actions/amazon-ecs-render-task-definition@v1 +# with: +# task-definition: ytr-data-loader-task-definition.json +# container-name: YtrDataLoaderContainer +# image: ${{ steps.login-ecr.outputs.registry }}/koski:${{ github.sha }} +# +# - name: Deploy Amazon ECS task definition +# id: ytr-data-loader-taskdef-deploy +# uses: aws-actions/amazon-ecs-deploy-task-definition@v2 +# with: +# task-definition: ${{ steps.ytr-data-loader-task-def.outputs.task-definition }} +# cluster: koski-cluster +# +# - name: Write task definition ARN to parameter store +# env: +# TASKDEF_ARN: ${{ steps.ytr-data-loader-taskdef-deploy.outputs.task-definition-arn }} +# run: aws ssm put-parameter --overwrite --name /koski/ytr-data-loader/task-definition --type String --value ${TASKDEF_ARN} +# +# - name: Report task ready +# uses: ravsamhq/notify-slack-action@v1 +# if: always() +# with: +# status: ${{ job.status }} +# notification_title: "Prod install {status_message}" +# env: +# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}