From d942a992c96942556d597019e506cf59731e1d0f Mon Sep 17 00:00:00 2001 From: Rachael Booth Date: Thu, 9 Nov 2023 09:23:24 +0000 Subject: [PATCH] Start updating workflows --- .github/workflows/review_pipeline.yml | 164 +++--------------- .../workflows/review_teardown_pipeline.yml | 83 +-------- 2 files changed, 25 insertions(+), 222 deletions(-) diff --git a/.github/workflows/review_pipeline.yml b/.github/workflows/review_pipeline.yml index d5921e049..d591e15d4 100644 --- a/.github/workflows/review_pipeline.yml +++ b/.github/workflows/review_pipeline.yml @@ -1,6 +1,7 @@ name: Review app pipeline -concurrency: ${{ github.workflow }}-${{ github.event.pull_request.number }} +concurrency: + group: review-${{ github.event.pull_request.number }} on: pull_request: @@ -15,160 +16,35 @@ defaults: shell: bash jobs: - postgres: - name: Provision postgres - runs-on: ubuntu-latest - environment: review - - steps: - - name: Install Cloud Foundry CLI - run: | - wget --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15" -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - - echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list - sudo apt-get update - sudo apt-get install cf8-cli - - - name: Provision postgres - env: - CF_USERNAME: ${{ secrets.CF_USERNAME }} - CF_PASSWORD: ${{ secrets.CF_PASSWORD }} - CF_API_ENDPOINT: ${{ secrets.CF_API_ENDPOINT }} - CF_SPACE: dev - CF_ORG: ${{ secrets.CF_ORG }} - run: | - cf api $CF_API_ENDPOINT - cf auth - cf target -o $CF_ORG -s $CF_SPACE - cf create-service postgres tiny-unencrypted-13 dluhc-core-review-${{ github.event.pull_request.number }}-postgres --wait - - redis: - name: Provision redis - runs-on: ubuntu-latest - environment: review - - steps: - - name: Install Cloud Foundry CLI - run: | - wget --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15" -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - - echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list - sudo apt-get update - sudo apt-get install cf8-cli - - - name: Provision redis - env: - CF_USERNAME: ${{ secrets.CF_USERNAME }} - CF_PASSWORD: ${{ secrets.CF_PASSWORD }} - CF_API_ENDPOINT: ${{ secrets.CF_API_ENDPOINT }} - CF_SPACE: dev - CF_ORG: ${{ secrets.CF_ORG }} - run: | - cf api $CF_API_ENDPOINT - cf auth - cf target -o $CF_ORG -s $CF_SPACE - cf create-service redis micro-6.x dluhc-core-review-${{ github.event.pull_request.number }}-redis --wait + infra: + name: Deploy review app infrastructure - TODO + + code: + name: Deploy review app code + needs: [infra] + uses: ./.github/workflows/aws_deploy.yml + with: + aws_account_id: 837698168072 + aws_role_prefix: core-dev + aws_task_prefix: core-review-${{ github.event.pull_request.number }} + environment: review + permissions: + id-token: write - deploy: - name: Deploy review app + comment: + name: Add link to PR + needs: [code] runs-on: ubuntu-latest - environment: review - needs: [postgres, redis] permissions: issues: write pull-requests: write steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Install Cloud Foundry CLI - run: | - wget --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15" -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - - echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list - sudo apt-get update - sudo apt-get install cf8-cli - - - name: Setup review app without starting - env: - CF_USERNAME: ${{ secrets.CF_USERNAME }} - CF_PASSWORD: ${{ secrets.CF_PASSWORD }} - CF_API_ENDPOINT: ${{ secrets.CF_API_ENDPOINT }} - CF_SPACE: dev - CF_ORG: ${{ secrets.CF_ORG }} - APP_NAME: dluhc-core-review-${{ github.event.pull_request.number }} - run: | - cf api $CF_API_ENDPOINT - cf auth - cf target -o $CF_ORG -s $CF_SPACE - cf push $APP_NAME \ - --manifest ./config/cloud_foundry/review_manifest.yml \ - --no-start - - - name: Set environment variables - env: - APP_NAME: dluhc-core-review-${{ github.event.pull_request.number }} - API_USER: ${{ secrets.API_USER }} - API_KEY: ${{ secrets.API_KEY }} - GOVUK_NOTIFY_API_KEY: ${{ secrets.GOVUK_NOTIFY_API_KEY }} - RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} - OS_DATA_KEY: ${{ secrets.OS_DATA_KEY }} - IMPORT_PAAS_INSTANCE: ${{ secrets.IMPORT_PAAS_INSTANCE }} - EXPORT_PAAS_INSTANCE: ${{ secrets.EXPORT_PAAS_INSTANCE }} - S3_CONFIG: ${{ secrets.S3_CONFIG }} - CSV_DOWNLOAD_PAAS_INSTANCE: ${{ secrets.CSV_DOWNLOAD_PAAS_INSTANCE }} - SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - run: | - cf set-env $APP_NAME API_USER $API_USER - cf set-env $APP_NAME API_KEY $API_KEY - cf set-env $APP_NAME GOVUK_NOTIFY_API_KEY $GOVUK_NOTIFY_API_KEY - cf set-env $APP_NAME RAILS_MASTER_KEY $RAILS_MASTER_KEY - cf set-env $APP_NAME OS_DATA_KEY $OS_DATA_KEY - cf set-env $APP_NAME IMPORT_PAAS_INSTANCE $IMPORT_PAAS_INSTANCE - cf set-env $APP_NAME EXPORT_PAAS_INSTANCE "dluhc-core-review-export-bucket" - cf set-env $APP_NAME S3_CONFIG $S3_CONFIG - cf set-env $APP_NAME CSV_DOWNLOAD_PAAS_INSTANCE "dluhc-core-review-csv-bucket" - cf set-env $APP_NAME SENTRY_DSN $SENTRY_DSN - cf set-env $APP_NAME APP_HOST "https://dluhc-core-review-${{ github.event.pull_request.number }}.london.cloudapps.digital" - - - name: Bind postgres service - env: - APP_NAME: dluhc-core-review-${{ github.event.pull_request.number }} - SERVICE_NAME: dluhc-core-review-${{ github.event.pull_request.number }}-postgres - run: | - cf bind-service $APP_NAME $SERVICE_NAME --wait - - - name: Bind redis service - env: - APP_NAME: dluhc-core-review-${{ github.event.pull_request.number }} - SERVICE_NAME: dluhc-core-review-${{ github.event.pull_request.number }}-redis - run: | - cf bind-service $APP_NAME $SERVICE_NAME --wait - - - name: Bind logit drain service - env: - APP_NAME: dluhc-core-review-${{ github.event.pull_request.number }} - SERVICE_NAME: logit-ssl-drain - run: | - cf bind-service $APP_NAME $SERVICE_NAME --wait - - - name: Bind S3 buckets services - env: - APP_NAME: dluhc-core-review-${{ github.event.pull_request.number }} - run: | - cf bind-service $APP_NAME dluhc-core-review-csv-bucket --wait - cf bind-service $APP_NAME dluhc-core-review-export-bucket --wait - cf bind-service $APP_NAME dluhc-core-review-import-bucket --wait - - - name: Start review app - env: - APP_NAME: dluhc-core-review-${{ github.event.pull_request.number }} - run: | - cf restage $APP_NAME - - name: Comment on PR with URL uses: unsplash/comment-on-pr@v1.3.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - msg: "Created review app at https://dluhc-core-review-${{ github.event.pull_request.number }}.london.cloudapps.digital" + msg: "Created review app at https://review.submit-social-housing-data.levellingup.gov.uk/${{ github.event.pull_request.number }}" check_for_duplicate_msg: true duplicate_msg_pattern: Created review app at* diff --git a/.github/workflows/review_teardown_pipeline.yml b/.github/workflows/review_teardown_pipeline.yml index 3962243c4..af3d32aa6 100644 --- a/.github/workflows/review_teardown_pipeline.yml +++ b/.github/workflows/review_teardown_pipeline.yml @@ -1,5 +1,8 @@ name: Review app teardown pipeline +concurrency: + group: review-${{ github.event.pull_request.number }} + on: pull_request: types: @@ -11,82 +14,6 @@ defaults: shell: bash jobs: - app: - name: Teardown app - runs-on: ubuntu-latest - environment: review - - steps: - - name: Install Cloud Foundry CLI - run: | - wget --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15" -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - - echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list - sudo apt-get update - sudo apt-get install cf8-cli - - - name: Teardown app - env: - CF_USERNAME: ${{ secrets.CF_USERNAME }} - CF_PASSWORD: ${{ secrets.CF_PASSWORD }} - CF_API_ENDPOINT: ${{ secrets.CF_API_ENDPOINT }} - CF_SPACE: dev - CF_ORG: ${{ secrets.CF_ORG }} - run: | - cf api $CF_API_ENDPOINT - cf auth - cf target -o $CF_ORG -s $CF_SPACE - cf delete dluhc-core-review-${{ github.event.pull_request.number }} -f -r - - postgres: - name: Teardown postgres - runs-on: ubuntu-latest + infra: + name: Teardown review app - TODO environment: review - needs: [app] - - steps: - - name: Install Cloud Foundry CLI - run: | - wget --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15" -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - - echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list - sudo apt-get update - sudo apt-get install cf8-cli - - - name: Teardown postgres - env: - CF_USERNAME: ${{ secrets.CF_USERNAME }} - CF_PASSWORD: ${{ secrets.CF_PASSWORD }} - CF_API_ENDPOINT: ${{ secrets.CF_API_ENDPOINT }} - CF_SPACE: dev - CF_ORG: ${{ secrets.CF_ORG }} - run: | - cf api $CF_API_ENDPOINT - cf auth - cf target -o $CF_ORG -s $CF_SPACE - cf delete-service dluhc-core-review-${{ github.event.pull_request.number }}-postgres --wait -f - - redis: - name: Teardown redis - runs-on: ubuntu-latest - environment: review - needs: [app] - - steps: - - name: Install Cloud Foundry CLI - run: | - wget --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15" -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - - echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list - sudo apt-get update - sudo apt-get install cf8-cli - - - name: Teardown redis - env: - CF_USERNAME: ${{ secrets.CF_USERNAME }} - CF_PASSWORD: ${{ secrets.CF_PASSWORD }} - CF_API_ENDPOINT: ${{ secrets.CF_API_ENDPOINT }} - CF_SPACE: dev - CF_ORG: ${{ secrets.CF_ORG }} - run: | - cf api $CF_API_ENDPOINT - cf auth - cf target -o $CF_ORG -s $CF_SPACE - cf delete-service dluhc-core-review-${{ github.event.pull_request.number }}-redis --wait -f