From 08eefcf9f8500c050f61c7cbf37fa71c3848c4bf Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 27 Mar 2024 09:41:50 +0000 Subject: [PATCH] feat: remove unnecessary steps from prod pipeline, check they passed on staging in the prod aws deploy step instead --- .github/workflows/aws_deploy.yml | 6 +- .github/workflows/production_pipeline.yml | 200 ---------------------- 2 files changed, 5 insertions(+), 201 deletions(-) diff --git a/.github/workflows/aws_deploy.yml b/.github/workflows/aws_deploy.yml index 7fea220d3..20c043f3d 100644 --- a/.github/workflows/aws_deploy.yml +++ b/.github/workflows/aws_deploy.yml @@ -59,13 +59,17 @@ jobs: run: | echo "image-exists=$(if aws ecr list-images --repository-name=$repository --query "imageIds[*].imageTag" | grep -q ${{ github.sha }}; then echo true; else echo false; fi)" >> $GITHUB_ENV - - name: Build, tag, and push docker image to ECR + - name: Build, tag, and push docker image to ECR if there is no image, failing for releases id: build-image if: ${{ env.image-exists == 'false' }} env: registry: ${{ steps.ecr-login.outputs.registry }} commit_tag: ${{ github.sha }} run: | + if [[ ${{ inputs.environment }} == 'production' ]]; then + echo "Error: Deployment to production environment is not allowed as there is no docker image (i.e. the AWS deploy on staging was unsuccessful for this commit)." + exit 1 + fi docker build -t $registry/$repository:$commit_tag . --target=production docker push $registry/$repository:$commit_tag diff --git a/.github/workflows/production_pipeline.yml b/.github/workflows/production_pipeline.yml index cb79038ef..b4a188415 100644 --- a/.github/workflows/production_pipeline.yml +++ b/.github/workflows/production_pipeline.yml @@ -5,213 +5,13 @@ on: types: [released] workflow_dispatch: -env: - REPO_URL: communitiesuk/submit-social-housing-lettings-and-sales-data - defaults: run: shell: bash jobs: - test: - name: Test - runs-on: ubuntu-latest - outputs: - releasetag: ${{ steps.latestrelease.outputs.releasetag }} - - services: - postgres: - image: postgres:13.5 - env: - POSTGRES_PASSWORD: password - POSTGRES_USER: postgres - POSTGRES_DB: data_collector - ports: - - 5432:5432 - # Needed because the Postgres container does not provide a health check - # tmpfs makes database faster by using RAM - options: >- - --mount type=tmpfs,destination=/var/lib/postgresql/data - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - RAILS_ENV: test - GEMFILE_RUBY_VERSION: 3.1.1 - DB_HOST: localhost - DB_DATABASE: data_collector - DB_USERNAME: postgres - DB_PASSWORD: password - RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} - PARALLEL_TEST_PROCESSORS: 4 - - steps: - - name: Get latest release with tag - id: latestrelease - 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 - run: | - echo ${{ steps.latestrelease.outputs.releasetag }} - - - name: Checkout tag - uses: actions/checkout@v3 - with: - ref: ${{ steps.latestrelease.outputs.releasetag }} - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true - - - name: Set up node - uses: actions/setup-node@v3 - with: - cache: yarn - node-version: 20 - - - name: Create database - run: | - bundle exec rake parallel:setup - - - name: Compile Assets - run: | - bundle exec rake assets:precompile - - - name: Run tests - run: | - bundle exec rake parallel:spec['spec\/(?!features)'] - - feature_test: - name: Feature Tests - if: '!github.event.pull_request.draft' - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:13.5 - env: - POSTGRES_PASSWORD: password - POSTGRES_USER: postgres - POSTGRES_DB: data_collector - ports: - - 5432:5432 - # Needed because the Postgres container does not provide a health check - # tmpfs makes database faster by using RAM - options: >- - --mount type=tmpfs,destination=/var/lib/postgresql/data - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - - env: - RAILS_ENV: test - GEMFILE_RUBY_VERSION: 3.1.1 - DB_HOST: localhost - DB_DATABASE: data_collector - DB_USERNAME: postgres - DB_PASSWORD: password - RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - cache: yarn - node-version: 20 - - - name: Create database - run: | - bundle exec rake db:prepare - - - name: Compile assets - run: | - bundle exec rake assets:precompile - - - name: Run tests - run: | - bundle exec rspec spec/features --fail-fast - - lint: - name: Lint - runs-on: ubuntu-latest - - steps: - - 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')" - - - name: Confirm release tag - run: | - echo ${{ steps.latestrelease.outputs.releasetag }} - - - name: Checkout tag - uses: actions/checkout@v3 - with: - ref: ${{ steps.latestrelease.outputs.releasetag }} - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - cache: yarn - node-version: 20 - - - name: Install packages and symlink local dependencies - run: | - yarn install --immutable --immutable-cache --check-cache - - - name: Lint - run: | - bundle exec rake lint - - audit: - name: Audit dependencies - runs-on: ubuntu-latest - - steps: - - 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')" - - - name: Confirm release tag - run: | - echo ${{ steps.latestrelease.outputs.releasetag }} - - - name: Checkout tag - uses: actions/checkout@v3 - with: - ref: ${{ steps.latestrelease.outputs.releasetag }} - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true - - - name: Audit - run: | - bundle exec bundler-audit - aws_deploy: name: AWS Deploy - needs: [lint, test, feature_test, audit] uses: ./.github/workflows/aws_deploy.yml with: aws_account_id: 977287343304