Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PP-12582-migrate-pr-pipeline-to-pkl #1212

Merged
merged 24 commits into from
May 22, 2024

Conversation

rfisher-gds
Copy link
Contributor

@rfisher-gds rfisher-gds commented May 15, 2024

Re-implement the PR pipeline in Pkl. Makes these changes, which, I hope, are all an improvement.

  • change filename base from pr to pr-ci, matching the pipeline name.
  • replace bespoke "deploy pipeline" with the standard one from common/.
  • calls the pay-ci resource pay-ci rather than ci, making input_mapping (mostly) redundant.
  • breaks out embedded scripts into their own tasks and files.
  • makes future removal of the cardid submodule very easy.
  • calls frontend and connector frontend and connector rather than card-frontend and card-connector.

The only other changes should be trivial enforcements of consistency, like numbers of retries on CodeBuild jobs.

Here is a successful cardid build (with submodule)
Here is a successful adminusers build.

NOTE before this is merged, the reference to the branch needs changing to master.

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

Changes for pay-dev/pr-ci.pkl

Diff of YAML generated from pay-dev/pr-ci.pkl
--- pay-ci/ci/pkl-pipelines/pay-dev/pr-ci.yml
+++ pkl-pipeline-pr/ci/pkl-pipelines/pay-dev/pr-ci.yml
@@ -0,0 +1,70 @@
+jobs:
+- name: ci-pr-test
+  plan:
+  - get: src
+    resource: ci-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - on_failure:
+      put: ci-pull-request
+      params:
+        context: test
+        path: src
+        status: failure
+      get_params:
+        skip_download: true
+    task: check-pipelines-and-tasks
+    config:
+      platform: linux
+      image_resource:
+        type: registry-image
+        source:
+          repository: golang
+          tag: 1.20-alpine
+      inputs:
+      - name: src
+      run:
+        path: sh
+        args:
+        - -ec
+        - |-
+          apk add git shellcheck
+          go install github.com/alphagov/paas-cf/tools/pipecleaner@latest
+
+          cd /tmp/
+
+          echo "c7d331052a6bf552b017adf5288b8e162346157c  fly-7.6.0-linux-amd64.tgz" > fly-7.6.0-linux-amd64.tgz.sha1
+          wget -c https://github.com/concourse/concourse/releases/download/v7.6.0/fly-7.6.0-linux-amd64.tgz -O fly-7.6.0-linux-amd64.tgz
+          sha1sum -c fly-7.6.0-linux-amd64.tgz.sha1
+          tar -O -zxf fly-7.6.0-linux-amd64.tgz > /usr/local/bin/fly
+          chmod u+x /usr/local/bin/fly
+
+          cd -
+
+          pipecleaner --rubocop=false ci/tasks/*.yml
+
+          find ci/pipelines -name '*.yml' | while read -r PIPELINE; do
+            echo "Validating: $PIPELINE"
+            fly validate-pipeline -c "$PIPELINE"
+            echo
+          done
+        dir: src
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
Concourse set-pipeline dry-run for `pay-dev/pr-ci.pkl`
groups:
  group adminusers has been removed:
- jobs:
- - adminusers-e2e
- name: adminusers
  
  group cardid has been removed:
- jobs:
- - cardid-e2e
- name: cardid
  
  group connector has been removed:
- jobs:
- - card-connector-e2e
- name: connector
  
  group end_to_end has been removed:
- jobs:
- - endtoend-e2e
- - pay-ci-endtoend-config
- name: end_to_end
  
  group frontend has been removed:
- jobs:
- - card-frontend-e2e
- name: frontend
  
  group ledger has been removed:
- jobs:
- - ledger-e2e
- name: ledger
  
  group products has been removed:
- jobs:
- - products-e2e
- name: products
  
  group products_ui has been removed:
- jobs:
- - products-ui-e2e
- name: products_ui
  
  group publicapi has been removed:
- jobs:
- - publicapi-e2e
- name: publicapi
  
  group publicauth has been removed:
- jobs:
- - publicauth-e2e
- name: publicauth
  
  group selfservice has been removed:
- jobs:
- - selfservice-e2e
- name: selfservice
  
  group ci has been removed:
- jobs:
- - ci-pr-test
- name: ci
  
  group update_pipeline has been removed:
- jobs:
- - update-pr-ci-pipeline
- name: update_pipeline
  
resources:
  resource adminusers-pull-request has been removed:
- icon: github
- name: adminusers-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-adminusers
- type: pull-request
  
  resource card-connector-pull-request has been removed:
- icon: github
- name: card-connector-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-connector
- type: pull-request
  
  resource card-frontend-pull-request has been removed:
- icon: github
- name: card-frontend-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-frontend
- type: pull-request
  
  resource cardid-pull-request has been removed:
- icon: github
- name: cardid-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-cardid
- type: pull-request
  
  resource ci has been removed:
- icon: github
- name: ci
- source:
-   branch: master
-   password: ((github-access-token))
-   uri: https://github.com/alphagov/pay-ci
-   username: alphagov-pay-ci-concourse
- type: git
  
  resource ci-pull-request has been removed:
- icon: github
- name: ci-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   paths:
-   - ci/pipelines/*
-   - ci/tasks/*
-   repository: alphagov/pay-ci
- type: pull-request
  
  resource endtoend-pull-request has been removed:
- icon: github
- name: endtoend-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-endtoend
- type: pull-request
  
  resource ledger-pull-request has been removed:
- icon: github
- name: ledger-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-ledger
- type: pull-request
  
  resource pay-ci-endtoend-config-pull-request has been removed:
- icon: github
- name: pay-ci-endtoend-config-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   paths:
-   - ci/tasks/endtoend/
-   repository: alphagov/pay-ci
- type: pull-request
  
  resource pr-ci-pipeline has been removed:
- icon: github
- name: pr-ci-pipeline
- source:
-   branch: master
-   paths:
-   - ci/pipelines/pr.yml
-   uri: https://github.com/alphagov/pay-ci
- type: git
  
  resource products-pull-request has been removed:
- icon: github
- name: products-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-products
- type: pull-request
  
  resource products-ui-pull-request has been removed:
- icon: github
- name: products-ui-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-products-ui
- type: pull-request
  
  resource publicapi-pull-request has been removed:
- icon: github
- name: publicapi-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-publicapi
- type: pull-request
  
  resource publicauth-pull-request has been removed:
- icon: github
- name: publicauth-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-publicauth
- type: pull-request
  
  resource pull-request-builds-ecr has been removed:
- icon: docker
- name: pull-request-builds-ecr
- source:
-   aws_access_key_id: ((readonly_access_key_id))
-   aws_ecr_registry_id: ((pay_aws_test_account_id))
-   aws_region: eu-west-1
-   aws_role_arn: arn:aws:iam::((pay_aws_test_account_id)):role/concourse
-   aws_secret_access_key: ((readonly_secret_access_key))
-   aws_session_token: ((readonly_session_token))
-   repository: govukpay/pull-request-builds
-   tag: latest
- type: registry-image
  
  resource selfservice-pull-request has been removed:
- icon: github
- name: selfservice-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-selfservice
- type: pull-request
  
resource types:
  resource type pull-request has been removed:
- name: pull-request
- source:
-   repository: teliaoss/github-pr-resource
-   tag: v0.21.0
- type: registry-image
  
jobs:
  job ci-pr-test has changed:
  build_log_retention:
    builds: 500
  max_in_flight: 3
  name: ci-pr-test
  plan:
  - get: src
    params:
      integration_tool: checkout
    resource: ci-pull-request
    trigger: true
    version: every
  - get_params:
      skip_download: true
    params:
      context: test
      path: src
      status: pending
    put: ci-pull-request
  - config:
      image_resource:
        name: ""
        source:
          repository: golang
          tag: 1.20-alpine
        type: registry-image
      inputs:
      - name: src
      platform: linux
      run:
        args:
        - -ec
-       - |
+       - |-
          apk add git shellcheck
          go install github.com/alphagov/paas-cf/tools/pipecleaner@latest
  
          cd /tmp/
  
          echo "c7d331052a6bf552b017adf5288b8e162346157c  fly-7.6.0-linux-amd64.tgz" > fly-7.6.0-linux-amd64.tgz.sha1
          wget -c https://github.com/concourse/concourse/releases/download/v7.6.0/fly-7.6.0-linux-amd64.tgz -O fly-7.6.0-linux-amd64.tgz
          sha1sum -c fly-7.6.0-linux-amd64.tgz.sha1
          tar -O -zxf fly-7.6.0-linux-amd64.tgz > /usr/local/bin/fly
          chmod u+x /usr/local/bin/fly
  
          cd -
  
          pipecleaner --rubocop=false ci/tasks/*.yml
  
          find ci/pipelines -name '*.yml' | while read -r PIPELINE; do
            echo "Validating: $PIPELINE"
            fly validate-pipeline -c "$PIPELINE"
            echo
          done
        dir: src
        path: sh
    on_failure:
      get_params:
        skip_download: true
      params:
        context: test
        path: src
        status: failure
      put: ci-pull-request
    task: check-pipelines-and-tasks
  - get_params:
      skip_download: true
    params:
      context: test
      path: src
      status: success
    put: ci-pull-request
  
  job update-pr-ci-pipeline has been removed:
- name: update-pr-ci-pipeline
- plan:
- - get: pr-ci-pipeline
-   trigger: true
- - file: pr-ci-pipeline/ci/pipelines/pr.yml
-   set_pipeline: pr-ci
  
  job endtoend-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: endtoend-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: endtoend-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: endtoend-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: endtoend-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: endtoend
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: endtoend
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: endtoend
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: endtoend-pull-request
  
  job card-connector-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: card-connector-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: card-connector-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: card-connector-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: card-connector-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: connector
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: connector
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: connector
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: card-connector-pull-request
  
  job publicapi-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: publicapi-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: publicapi-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: publicapi-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: publicapi-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: publicapi
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: publicapi
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: publicapi
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: publicapi-pull-request
  
  job adminusers-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: adminusers-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: adminusers-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: adminusers-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: adminusers-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: adminusers
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: adminusers
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: adminusers
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: adminusers-pull-request
  
  job cardid-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: cardid-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: cardid-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: cardid-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: cardid-pull-request
-     - config:
-         container_limits: {}
-         image_resource:
-           name: ""
-           source:
-             repository: governmentdigitalservice/pay-concourse-runner
-           type: registry-image
-         inputs:
-         - name: src
-         outputs:
-         - name: src
-         params:
-           GH_ACCESS_TOKEN: ((github-access-token))
-         platform: linux
-         run:
-           args:
-           - -ec
-           - |
-             # rewrite the submodule url for https to add the token.
-             # The risk of setting the token in the url is mitigated since these files are not committed,
-             # the container is ephemeral and anyone with access to read the files could read the token from
-             # environment variable. Furthermore we redact the token from the files after the update.
-             sed -i "s/https:\/\/github.com/https:\/\/${GH_ACCESS_TOKEN}@github.com\//" .gitmodules
-             git submodule init -q data
-             git submodule update data
-             sed -i "s/${GH_ACCESS_TOKEN}/token_redacted/" .gitmodules
-             sed -i "s/${GH_ACCESS_TOKEN}/token_redacted/" .git/config
-           dir: src
-           path: bash
-       task: update-submodule
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: cardid
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: cardid
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: cardid
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: cardid-pull-request
  
  job ledger-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: ledger-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: ledger-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: ledger-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: ledger-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: ledger
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: ledger
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: ledger
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: ledger-pull-request
  
  job publicauth-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: publicauth-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: publicauth-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: publicauth-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: publicauth-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: publicauth
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: publicauth
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: publicauth
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: publicauth-pull-request
  
  job products-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: products-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: products-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: products-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: products-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: products
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: products
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: products
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-   task: run-products-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: products-pull-request
  
  job card-frontend-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: card-frontend-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: card-frontend-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: card-frontend-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: card-frontend-pull-request
- - file: ci/ci/tasks/node-build-pr.yml
-   params:
-     skip_tests: "true"
-   task: build
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: frontend
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: frontend
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: frontend
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: card-frontend-pull-request
  
  job selfservice-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: selfservice-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: selfservice-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: selfservice-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: selfservice-pull-request
- - file: ci/ci/tasks/node-build-pr.yml
-   params:
-     skip_tests: "true"
-   task: build
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: selfservice
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: selfservice
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: selfservice
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: selfservice-pull-request
  
  job products-ui-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: products-ui-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: products-ui-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: products-ui-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: products-ui-pull-request
- - file: ci/ci/tasks/node-build-pr.yml
-   params:
-     skip_tests: "true"
-   task: build
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: products-ui
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: products-ui
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: products-ui
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-   task: run-products-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: products-ui-pull-request
  
  job pay-ci-endtoend-config has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: pay-ci-endtoend-config
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: pay-ci-endtoend-config-pull-request
- plan:
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get: src
-       params:
-         integration_tool: checkout
-       resource: pay-ci-endtoend-config-pull-request
-       trigger: true
-       version: every
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: pending
-   put: pay-ci-endtoend-config-pull-request
- - file: ci/ci/tasks/assume-role.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-     AWS_ROLE_SESSION_NAME: pay-ci-endtoend-config-pr-assume-role
-   task: assume-role
- - file: assume-role/assume-role.json
-   load_var: role
- - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-   input_mapping:
-     pay-ci: src
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PROJECT_UNDER_TEST: pay-ci
-   task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: pay-ci-endtoend-config-pull-request
  
pipeline name: pr-ci

Dry-run mode was set, exiting.

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

Changes for pay-dev/pr-ci.pkl

Diff of YAML generated from pay-dev/pr-ci.pkl
--- pay-ci/ci/pkl-pipelines/pay-dev/pr-ci.yml
+++ pkl-pipeline-pr/ci/pkl-pipelines/pay-dev/pr-ci.yml
@@ -0,0 +1,284 @@
+jobs:
+- name: update-pipeline
+  plan:
+  - get: pipeline-source
+    trigger: true
+  - task: generate-yaml-from-pkl
+    config:
+      platform: linux
+      image_resource:
+        type: registry-image
+        source:
+          repository: governmentdigitalservice/pay-concourse-runner
+          tag: latest
+      inputs:
+      - name: pipeline-source
+      outputs:
+      - name: pipeline-source
+      run:
+        path: ash
+        args:
+        - -c
+        - mkdir -p 'pay-dev' && pkl eval 'pay-dev/pr-ci.pkl' > 'pay-dev/pr-ci.yaml'
+        dir: pipeline-source/ci/pkl-pipelines/
+  - set_pipeline: pr-ci
+    file: pipeline-source/ci/pkl-pipelines/pay-dev/pr-ci.yaml
+- name: ci-pr-test
+  plan:
+  - get: src
+    resource: ci-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - on_failure:
+      put: ci-pull-request
+      params:
+        context: test
+        path: src
+        status: failure
+      get_params:
+        skip_download: true
+    task: check-pipelines-and-tasks
+    config:
+      platform: linux
+      image_resource:
+        type: registry-image
+        source:
+          repository: golang
+          tag: 1.20-alpine
+      inputs:
+      - name: src
+      run:
+        path: sh
+        args:
+        - -ec
+        - |-
+          apk add git shellcheck
+          go install github.com/alphagov/paas-cf/tools/pipecleaner@latest
+
+          cd /tmp/
+
+          echo "c7d331052a6bf552b017adf5288b8e162346157c  fly-7.6.0-linux-amd64.tgz" > fly-7.6.0-linux-amd64.tgz.sha1
+          wget -c https://github.com/concourse/concourse/releases/download/v7.6.0/fly-7.6.0-linux-amd64.tgz -O fly-7.6.0-linux-amd64.tgz
+          sha1sum -c fly-7.6.0-linux-amd64.tgz.sha1
+          tar -O -zxf fly-7.6.0-linux-amd64.tgz > /usr/local/bin/fly
+          chmod u+x /usr/local/bin/fly
+
+          cd -
+
+          pipecleaner --rubocop=false ci/tasks/*.yml
+
+          find ci/pipelines -name '*.yml' | while read -r PIPELINE; do
+            echo "Validating: $PIPELINE"
+            fly validate-pipeline -c "$PIPELINE"
+            echo
+          done
+        dir: src
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+resources:
+- name: pipeline-source
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: master
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+    paths:
+    - ci/pkl-pipelines/pay-dev/pr-ci.pkl
+    - ci/pkl-pipelines/common/**
+  icon: github
+- name: card-connector-master
+  type: git
+  source:
+    branch: master
+    uri: https://github.com/alphagov/pay-connector
+  icon: github
+- name: ledger-master
+  type: git
+  source:
+    branch: master
+    uri: https://github.com/alphagov/pay-ledger
+  icon: github
+- name: pay-ci
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: master
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+  icon: github
+- name: adminusers-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-adminusers
+    access_token: ((github-access-token))
+  icon: github
+- name: cardid-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-cardid
+    access_token: ((github-access-token))
+  icon: github
+- name: selfservice-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-selfservice
+    access_token: ((github-access-token))
+  icon: github
+- name: publicauth-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicauth
+    access_token: ((github-access-token))
+  icon: github
+- name: publicapi-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicapi
+    access_token: ((github-access-token))
+  icon: github
+- name: products-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products
+    access_token: ((github-access-token))
+  icon: github
+- name: products-ui-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products-ui
+    access_token: ((github-access-token))
+  icon: github
+- name: ledger-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ledger
+    access_token: ((github-access-token))
+  icon: github
+- name: endtoend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-endtoend
+    access_token: ((github-access-token))
+  icon: github
+- name: connector-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-connector
+    access_token: ((github-access-token))
+  icon: github
+- name: frontend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-frontend
+    access_token: ((github-access-token))
+  icon: github
+- name: pay-ci-endtoend-config-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/tasks/endtoend/
+  icon: github
+- name: ci-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/pipelines/*
+    - ci/tasks/*
+  icon: github
+- name: pull-request-builds-ecr
+  type: registry-image
+  source:
+    aws_access_key_id: ((readonly_access_key_id))
+    aws_ecr_registry_id: ((pay_aws_test_account_id))
+    aws_region: eu-west-1
+    aws_role_arn: arn:aws:iam::((pay_aws_test_account_id)):role/concourse
+    aws_secret_access_key: ((readonly_secret_access_key))
+    aws_session_token: ((readonly_session_token))
+    repository: govukpay/pull-request-builds
+    tag: latest
+  icon: docker
+resource_types:
+- name: pull-request
+  type: registry-image
+  source:
+    repository: teliaoss/github-pr-resource
+    tag: v0.23.0
+groups:
+- name: adminusers
+  jobs:
+  - adminusers-e2e
+- name: cardid
+  jobs:
+  - cardid-e2e
+- name: connector
+  jobs:
+  - card-connector-e2e
+- name: end_to_end
+  jobs:
+  - endtoend-e2e
+  - pay-ci-endtoend-config
+- name: frontend
+  jobs:
+  - card-frontend-e2e
+- name: ledger
+  jobs:
+  - ledger-e2e
+- name: products
+  jobs:
+  - products-e2e
+- name: products_ui
+  jobs:
+  - products-ui-e2e
+- name: publicapi
+  jobs:
+  - publicapi-unit-test
+  - publicapi-integration-test
+  - publicapi-e2e
+  - publicapi-as-consumer-pact-test
+- name: publicauth
+  jobs:
+  - publicauth-e2e
+- name: selfservice
+  jobs:
+  - selfservice-e2e
+- name: ci
+  jobs:
+  - ci-pr-test
+- name: update_pipeline
+  jobs:
+  - update-pr-ci-pipeline
Concourse set-pipeline dry-run for `pay-dev/pr-ci.pkl`
groups:
  group publicapi has changed:
  jobs:
+ - publicapi-unit-test
+ - publicapi-integration-test
  - publicapi-e2e
+ - publicapi-as-consumer-pact-test
  name: publicapi
  
resources:
  resource card-connector-pull-request has been removed:
- icon: github
- name: card-connector-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-connector
- type: pull-request
  
  resource card-frontend-pull-request has been removed:
- icon: github
- name: card-frontend-pull-request
- source:
-   access_token: ((github-access-token))
-   disable_forks: true
-   repository: alphagov/pay-frontend
- type: pull-request
  
  resource ci has been removed:
- icon: github
- name: ci
- source:
-   branch: master
-   password: ((github-access-token))
-   uri: https://github.com/alphagov/pay-ci
-   username: alphagov-pay-ci-concourse
- type: git
  
  resource pr-ci-pipeline has been removed:
- icon: github
- name: pr-ci-pipeline
- source:
-   branch: master
-   paths:
-   - ci/pipelines/pr.yml
-   uri: https://github.com/alphagov/pay-ci
- type: git
  
  resource pipeline-source has been added:
+ icon: github
+ name: pipeline-source
+ source:
+   branch: master
+   password: ((github-access-token))
+   paths:
+   - ci/pkl-pipelines/pay-dev/pr-ci.pkl
+   - ci/pkl-pipelines/common/**
+   uri: https://github.com/alphagov/pay-ci
+   username: alphagov-pay-ci-concourse
+ type: git
  
  resource card-connector-master has been added:
+ icon: github
+ name: card-connector-master
+ source:
+   branch: master
+   uri: https://github.com/alphagov/pay-connector
+ type: git
  
  resource ledger-master has been added:
+ icon: github
+ name: ledger-master
+ source:
+   branch: master
+   uri: https://github.com/alphagov/pay-ledger
+ type: git
  
  resource pay-ci has been added:
+ icon: github
+ name: pay-ci
+ source:
+   branch: master
+   password: ((github-access-token))
+   uri: https://github.com/alphagov/pay-ci
+   username: alphagov-pay-ci-concourse
+ type: git
  
  resource connector-pull-request has been added:
+ icon: github
+ name: connector-pull-request
+ source:
+   access_token: ((github-access-token))
+   disable_forks: true
+   repository: alphagov/pay-connector
+ type: pull-request
  
  resource frontend-pull-request has been added:
+ icon: github
+ name: frontend-pull-request
+ source:
+   access_token: ((github-access-token))
+   disable_forks: true
+   repository: alphagov/pay-frontend
+ type: pull-request
  
resource types:
  resource type pull-request has changed:
  name: pull-request
  source:
    repository: teliaoss/github-pr-resource
-   tag: v0.21.0
+   tag: v0.23.0
  type: registry-image
  
jobs:
  job ci-pr-test has changed:
  build_log_retention:
    builds: 500
  max_in_flight: 3
  name: ci-pr-test
  plan:
  - get: src
    params:
      integration_tool: checkout
    resource: ci-pull-request
    trigger: true
    version: every
  - get_params:
      skip_download: true
    params:
      context: test
      path: src
      status: pending
    put: ci-pull-request
  - config:
      image_resource:
        name: ""
        source:
          repository: golang
          tag: 1.20-alpine
        type: registry-image
      inputs:
      - name: src
      platform: linux
      run:
        args:
        - -ec
-       - |
+       - |-
          apk add git shellcheck
          go install github.com/alphagov/paas-cf/tools/pipecleaner@latest
  
          cd /tmp/
  
          echo "c7d331052a6bf552b017adf5288b8e162346157c  fly-7.6.0-linux-amd64.tgz" > fly-7.6.0-linux-amd64.tgz.sha1
          wget -c https://github.com/concourse/concourse/releases/download/v7.6.0/fly-7.6.0-linux-amd64.tgz -O fly-7.6.0-linux-amd64.tgz
          sha1sum -c fly-7.6.0-linux-amd64.tgz.sha1
          tar -O -zxf fly-7.6.0-linux-amd64.tgz > /usr/local/bin/fly
          chmod u+x /usr/local/bin/fly
  
          cd -
  
          pipecleaner --rubocop=false ci/tasks/*.yml
  
          find ci/pipelines -name '*.yml' | while read -r PIPELINE; do
            echo "Validating: $PIPELINE"
            fly validate-pipeline -c "$PIPELINE"
            echo
          done
        dir: src
        path: sh
    on_failure:
      get_params:
        skip_download: true
      params:
        context: test
        path: src
        status: failure
      put: ci-pull-request
    task: check-pipelines-and-tasks
  - get_params:
      skip_download: true
    params:
      context: test
      path: src
      status: success
    put: ci-pull-request
  
  job update-pr-ci-pipeline has been removed:
- name: update-pr-ci-pipeline
- plan:
- - get: pr-ci-pipeline
-   trigger: true
- - file: pr-ci-pipeline/ci/pipelines/pr.yml
-   set_pipeline: pr-ci
  
  job endtoend-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: endtoend-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: endtoend-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: endtoend-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: endtoend-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: endtoend
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: endtoend
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: endtoend
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: endtoend-pull-request
  
  job card-connector-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: card-connector-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: card-connector-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: card-connector-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: card-connector-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: connector
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: connector
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: connector
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: card-connector-pull-request
  
  job publicapi-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: publicapi-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: publicapi-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: publicapi-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: publicapi-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: publicapi
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: publicapi
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: publicapi
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: publicapi-pull-request
  
  job adminusers-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: adminusers-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: adminusers-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: adminusers-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: adminusers-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: adminusers
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: adminusers
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: adminusers
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: adminusers-pull-request
  
  job cardid-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: cardid-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: cardid-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: cardid-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: cardid-pull-request
-     - config:
-         container_limits: {}
-         image_resource:
-           name: ""
-           source:
-             repository: governmentdigitalservice/pay-concourse-runner
-           type: registry-image
-         inputs:
-         - name: src
-         outputs:
-         - name: src
-         params:
-           GH_ACCESS_TOKEN: ((github-access-token))
-         platform: linux
-         run:
-           args:
-           - -ec
-           - |
-             # rewrite the submodule url for https to add the token.
-             # The risk of setting the token in the url is mitigated since these files are not committed,
-             # the container is ephemeral and anyone with access to read the files could read the token from
-             # environment variable. Furthermore we redact the token from the files after the update.
-             sed -i "s/https:\/\/github.com/https:\/\/${GH_ACCESS_TOKEN}@github.com\//" .gitmodules
-             git submodule init -q data
-             git submodule update data
-             sed -i "s/${GH_ACCESS_TOKEN}/token_redacted/" .gitmodules
-             sed -i "s/${GH_ACCESS_TOKEN}/token_redacted/" .git/config
-           dir: src
-           path: bash
-       task: update-submodule
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: cardid
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: cardid
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: cardid
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: cardid-pull-request
  
  job ledger-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: ledger-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: ledger-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: ledger-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: ledger-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: ledger
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: ledger
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: ledger
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: ledger-pull-request
  
  job publicauth-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: publicauth-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: publicauth-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: publicauth-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: publicauth-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: publicauth
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: publicauth
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: publicauth
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: publicauth-pull-request
  
  job products-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: products-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: products-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: products-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: products-pull-request
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: products
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: products
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: products
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-   task: run-products-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: products-pull-request
  
  job card-frontend-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: card-frontend-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: card-frontend-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: card-frontend-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: card-frontend-pull-request
- - file: ci/ci/tasks/node-build-pr.yml
-   params:
-     skip_tests: "true"
-   task: build
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: frontend
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: frontend
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: frontend
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: card-frontend-pull-request
  
  job selfservice-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: selfservice-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: selfservice-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: selfservice-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: selfservice-pull-request
- - file: ci/ci/tasks/node-build-pr.yml
-   params:
-     skip_tests: "true"
-   task: build
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: selfservice
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: selfservice
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: selfservice
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - attempts: 3
-   file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-   task: run-card-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: selfservice-pull-request
  
  job products-ui-e2e has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: products-ui-e2e
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: products-ui-pull-request
- plan:
- - get: src
-   params:
-     integration_tool: checkout
-   resource: products-ui-pull-request
-   trigger: true
-   version: every
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get_params:
-         skip_download: true
-       params:
-         context: e2e tests
-         path: src
-         status: pending
-       put: products-ui-pull-request
- - file: ci/ci/tasks/node-build-pr.yml
-   params:
-     skip_tests: "true"
-   task: build
- - file: ci/ci/tasks/generate-docker-config-file.yml
-   params:
-     EMAIL: ((docker-email))
-     PASSWORD: ((docker-access-token))
-     USERNAME: ((docker-username))
-   task: generate-docker-creds-config
- - file: ci/ci/tasks/build-docker-image.yml
-   params:
-     app_name: products-ui
-   privileged: true
-   task: build-image
- - in_parallel:
-     steps:
-     - file: ci/ci/tasks/get-pr-build-docker-image-info.yml
-       params:
-         app_name: products-ui
-       task: get-docker-image-info
-     - file: ci/ci/tasks/assume-role.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-         AWS_ROLE_SESSION_NAME: e2e-test-assume-role
-       task: assume-role
- - in_parallel:
-     steps:
-     - file: assume-role/assume-role.json
-       load_var: role
-     - file: image_info/image_filename
-       load_var: image_filename
-     - file: image_info/tag
-       load_var: image_tag
- - in_parallel:
-     steps:
-     - get_params:
-         skip_download: true
-       params:
-         additional_tags: image_info/tag
-         image: local_image/((.:image_filename))
-       put: pull-request-builds-ecr
-     - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PR_BUILD: "true"
-         PROJECT_UNDER_TEST: products-ui
-         RELEASE_TAG_UNDER_TEST: ((.:image_tag))
-       task: prepare-codebuild
- - file: ci/ci/tasks/run-codebuild.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-   task: run-products-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: products-ui-pull-request
  
  job pay-ci-endtoend-config has been removed:
- build_log_retention:
-   builds: 500
- max_in_flight: 3
- name: pay-ci-endtoend-config
- on_failure:
-   get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: failure
-   put: pay-ci-endtoend-config-pull-request
- plan:
- - in_parallel:
-     steps:
-     - get: ci
-       resource: ci
-     - get: src
-       params:
-         integration_tool: checkout
-       resource: pay-ci-endtoend-config-pull-request
-       trigger: true
-       version: every
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: pending
-   put: pay-ci-endtoend-config-pull-request
- - file: ci/ci/tasks/assume-role.yml
-   input_mapping:
-     pay-ci: ci
-   params:
-     AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
-     AWS_ROLE_SESSION_NAME: pay-ci-endtoend-config-pr-assume-role
-   task: assume-role
- - file: assume-role/assume-role.json
-   load_var: role
- - file: ci/ci/tasks/prepare-e2e-codebuild.yml
-   input_mapping:
-     pay-ci: src
-   params:
-     AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-     AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-     AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-     PROJECT_UNDER_TEST: pay-ci
-   task: prepare-codebuild
- - in_parallel:
-     steps:
-     - attempts: 3
-       file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
-       task: run-card-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
-       task: run-products-e2e-tests
-     - file: ci/ci/tasks/run-codebuild.yml
-       input_mapping:
-         pay-ci: ci
-       params:
-         AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
-         AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
-         AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
-         PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
-       task: run-zap-e2e-tests
- - get_params:
-     skip_download: true
-   params:
-     context: e2e tests
-     path: src
-     status: success
-   put: pay-ci-endtoend-config-pull-request
  
  job update-pipeline has been added:
+ name: update-pipeline
+ plan:
+ - get: pipeline-source
+   trigger: true
+ - config:
+     image_resource:
+       name: ""
+       source:
+         repository: governmentdigitalservice/pay-concourse-runner
+         tag: latest
+       type: registry-image
+     inputs:
+     - name: pipeline-source
+     outputs:
+     - name: pipeline-source
+     platform: linux
+     run:
+       args:
+       - -c
+       - mkdir -p 'pay-dev' && pkl eval 'pay-dev/pr-ci.pkl' > 'pay-dev/pr-ci.yaml'
+       dir: pipeline-source/ci/pkl-pipelines/
+       path: ash
+   task: generate-yaml-from-pkl
+ - file: pipeline-source/ci/pkl-pipelines/pay-dev/pr-ci.yaml
+   set_pipeline: pr-ci
  
pipeline name: pr-ci

Dry-run mode was set, exiting.

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

The diff for pay-dev/pay-dev/pr-ci.pkl was too long, see concourse output

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

The diff for pay-dev/pay-dev/pr-ci.pkl was too long, see concourse output

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@rfisher-gds rfisher-gds force-pushed the PP-12582-migrate-pr-pipeline-to-pkl branch from cc39a3b to 740768d Compare May 20, 2024 17:43
@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

The diff for pay-dev/pay-dev/pr-ci.pkl was too long, see concourse output

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

ci/pkl-pipelines/pay-dev/pr-ci.pkl Show resolved Hide resolved
ci/pkl-pipelines/pay-dev/pr-ci.pkl Show resolved Hide resolved
ci/pkl-pipelines/pay-dev/pr-ci.pkl Outdated Show resolved Hide resolved
ci/pkl-pipelines/pay-dev/pr-ci.pkl Outdated Show resolved Hide resolved
ci/pkl-pipelines/pay-dev/pr-ci.pkl Show resolved Hide resolved
@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

The diff for pay-dev/pay-dev/pr-ci.pkl was too long, see concourse output

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

Changes for pay-dev/pr-ci.pkl

Diff of YAML generated from pay-dev/pr-ci.pkl
--- pay-ci/ci/pkl-pipelines/pay-dev/pr-ci.yml
+++ pkl-pipeline-pr/ci/pkl-pipelines/pay-dev/pr-ci.yml
@@ -0,0 +1,1325 @@
+jobs:
+- name: update-pipeline
+  plan:
+  - get: pipeline-source
+    trigger: true
+  - task: generate-yaml-from-pkl
+    config:
+      platform: linux
+      image_resource:
+        type: registry-image
+        source:
+          repository: governmentdigitalservice/pay-concourse-runner
+          tag: latest
+      inputs:
+      - name: pipeline-source
+      outputs:
+      - name: pipeline-source
+      run:
+        path: ash
+        args:
+        - -c
+        - mkdir -p 'pay-dev' && pkl eval 'pay-dev/pr-ci.pkl' > 'pay-dev/pr-ci.yaml'
+        dir: pipeline-source/ci/pkl-pipelines/
+  - set_pipeline: pr-ci
+    file: pipeline-source/ci/pkl-pipelines/pay-dev/pr-ci.yaml
+- name: adminusers-e2e
+  plan:
+  - get: src
+    resource: adminusers-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: adminusers-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: adminusers
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: adminusers
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: adminusers
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: cardid-e2e
+  plan:
+  - get: src
+    resource: cardid-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: cardid-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+    - task: update-submodule
+      file: pay-ci/ci/tasks/update-cardid-submodule.yml
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: cardid
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: cardid
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: cardid
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: connector-e2e
+  plan:
+  - get: src
+    resource: connector-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: connector-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: connector
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: connector
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: connector
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: endtoend-e2e
+  plan:
+  - get: src
+    resource: endtoend-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: endtoend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: endtoend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: endtoend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: endtoend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: frontend-e2e
+  plan:
+  - get: src
+    resource: frontend-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: frontend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: frontend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: frontend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: frontend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ledger-e2e
+  plan:
+  - get: src
+    resource: ledger-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: ledger-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: ledger
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: ledger
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: ledger
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-e2e
+  plan:
+  - get: src
+    resource: products-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: products-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-ui-e2e
+  plan:
+  - get: src
+    resource: products-ui-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: products-ui-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products-ui
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products-ui
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products-ui
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicapi-e2e
+  plan:
+  - get: src
+    resource: publicapi-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: publicapi-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicapi
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicapi
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicapi
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicauth-e2e
+  plan:
+  - get: src
+    resource: publicauth-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: publicauth-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicauth
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicauth
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicauth
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: selfservice-e2e
+  plan:
+  - get: src
+    resource: selfservice-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: selfservice-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: selfservice
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: selfservice
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: selfservice
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ci-pr-test
+  plan:
+  - get: src
+    resource: ci-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - on_failure:
+      put: ci-pull-request
+      params:
+        context: test
+        path: src
+        status: failure
+      get_params:
+        skip_download: true
+    task: check-pipelines-and-tasks
+    file: pay-ci/ci/tasks/check-pipelines-and-tasks.yml
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+- name: pay-ci-endtoend-config
+  plan:
+  - in_parallel:
+    - get: pay-ci
+    - get: src
+      resource: pay-ci-endtoend-config-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - task: assume-role
+    file: pay-ci/ci/tasks/assume-role.yml
+    params:
+      AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+      AWS_ROLE_SESSION_NAME: pay-ci-endtoend-config-pr-assume-role
+  - load_var: role
+    file: assume-role/assume-role.json
+  - task: prepare-codebuild
+    file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+    params:
+      PROJECT_UNDER_TEST: pay-ci
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    input_mapping:
+      pay-ci: src
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+resources:
+- name: pipeline-source
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: PP-12582-migrate-pr-pipeline-to-pkl
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+    paths:
+    - ci/pkl-pipelines/pay-dev/pr-ci.pkl
+    - ci/pkl-pipelines/common/**
+  icon: github
+- name: pay-ci
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: master
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+  icon: github
+- name: adminusers-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-adminusers
+    access_token: ((github-access-token))
+  icon: github
+- name: cardid-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-cardid
+    access_token: ((github-access-token))
+  icon: github
+- name: connector-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-connector
+    access_token: ((github-access-token))
+  icon: github
+- name: endtoend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-endtoend
+    access_token: ((github-access-token))
+  icon: github
+- name: frontend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-frontend
+    access_token: ((github-access-token))
+  icon: github
+- name: ledger-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ledger
+    access_token: ((github-access-token))
+  icon: github
+- name: products-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products
+    access_token: ((github-access-token))
+  icon: github
+- name: products-ui-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products-ui
+    access_token: ((github-access-token))
+  icon: github
+- name: publicapi-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicapi
+    access_token: ((github-access-token))
+  icon: github
+- name: publicauth-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicauth
+    access_token: ((github-access-token))
+  icon: github
+- name: selfservice-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-selfservice
+    access_token: ((github-access-token))
+  icon: github
+- name: pay-ci-endtoend-config-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/tasks/endtoend/
+  icon: github
+- name: ci-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/pipelines/*
+    - ci/tasks/*
+  icon: github
+- name: pull-request-builds-ecr
+  type: registry-image
+  source:
+    aws_access_key_id: ((readonly_access_key_id))
+    aws_ecr_registry_id: ((pay_aws_test_account_id))
+    aws_region: eu-west-1
+    aws_role_arn: arn:aws:iam::((pay_aws_test_account_id)):role/concourse
+    aws_secret_access_key: ((readonly_secret_access_key))
+    aws_session_token: ((readonly_session_token))
+    repository: govukpay/pull-request-builds
+    tag: latest
+  icon: docker
+resource_types:
+- name: pull-request
+  type: registry-image
+  source:
+    repository: teliaoss/github-pr-resource
+    tag: v0.23.0
+groups:
+- name: adminusers
+  jobs:
+  - adminusers-e2e
+- name: cardid
+  jobs:
+  - cardid-e2e
+- name: connector
+  jobs:
+  - connector-e2e
+- name: end_to_end
+  jobs:
+  - endtoend-e2e
+  - pay-ci-endtoend-config
+- name: frontend
+  jobs:
+  - frontend-e2e
+- name: ledger
+  jobs:
+  - ledger-e2e
+- name: products
+  jobs:
+  - products-e2e
+- name: products-ui
+  jobs:
+  - products-ui-e2e
+- name: publicapi
+  jobs:
+  - publicapi-e2e
+- name: publicauth
+  jobs:
+  - publicauth-e2e
+- name: selfservice
+  jobs:
+  - selfservice-e2e
+- name: ci
+  jobs:
+  - ci-pr-test
+- name: update_pipeline
+  jobs:
+  - update-pipeline
Concourse set-pipeline dry-run for `pay-dev/pr-ci.pkl`
resources:
  resource pay-ci has changed:
  icon: github
  name: pay-ci
  source:
-   branch: PP-12582-migrate-pr-pipeline-to-pkl
+   branch: master
    password: ((github-access-token))
    uri: https://github.com/alphagov/pay-ci
    username: alphagov-pay-ci-concourse
  type: git
  
jobs:
  job ci-pr-test has changed:
  build_log_retention:
    builds: 500
  max_in_flight: 3
  name: ci-pr-test
  plan:
- - get: pay-ci
  - get: src
    params:
      integration_tool: checkout
    resource: ci-pull-request
    trigger: true
    version: every
  - get_params:
      skip_download: true
    params:
      context: test
      path: src
      status: pending
    put: ci-pull-request
  - file: pay-ci/ci/tasks/check-pipelines-and-tasks.yml
    on_failure:
      get_params:
        skip_download: true
      params:
        context: test
        path: src
        status: failure
      put: ci-pull-request
    task: check-pipelines-and-tasks
  - get_params:
      skip_download: true
    params:
      context: test
      path: src
      status: success
    put: ci-pull-request
  
pipeline name: pr-ci

Dry-run mode was set, exiting.

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

Changes for pay-dev/pr-ci.pkl

Diff of YAML generated from pay-dev/pr-ci.pkl
--- pay-ci/ci/pkl-pipelines/pay-dev/pr-ci.yml
+++ pkl-pipeline-pr/ci/pkl-pipelines/pay-dev/pr-ci.yml
@@ -0,0 +1,1326 @@
+jobs:
+- name: update-pipeline
+  plan:
+  - get: pipeline-source
+    trigger: true
+  - task: generate-yaml-from-pkl
+    config:
+      platform: linux
+      image_resource:
+        type: registry-image
+        source:
+          repository: governmentdigitalservice/pay-concourse-runner
+          tag: latest
+      inputs:
+      - name: pipeline-source
+      outputs:
+      - name: pipeline-source
+      run:
+        path: ash
+        args:
+        - -c
+        - mkdir -p 'pay-dev' && pkl eval 'pay-dev/pr-ci.pkl' > 'pay-dev/pr-ci.yaml'
+        dir: pipeline-source/ci/pkl-pipelines/
+  - set_pipeline: pr-ci
+    file: pipeline-source/ci/pkl-pipelines/pay-dev/pr-ci.yaml
+- name: adminusers-e2e
+  plan:
+  - get: src
+    resource: adminusers-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: adminusers-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: adminusers
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: adminusers
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: adminusers
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: cardid-e2e
+  plan:
+  - get: src
+    resource: cardid-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: cardid-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+    - task: update-submodule
+      file: pay-ci/ci/tasks/update-cardid-submodule.yml
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: cardid
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: cardid
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: cardid
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: connector-e2e
+  plan:
+  - get: src
+    resource: connector-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: connector-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: connector
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: connector
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: connector
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: endtoend-e2e
+  plan:
+  - get: src
+    resource: endtoend-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: endtoend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: endtoend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: endtoend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: endtoend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: frontend-e2e
+  plan:
+  - get: src
+    resource: frontend-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: frontend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: frontend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: frontend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: frontend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ledger-e2e
+  plan:
+  - get: src
+    resource: ledger-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: ledger-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: ledger
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: ledger
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: ledger
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-e2e
+  plan:
+  - get: src
+    resource: products-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: products-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-ui-e2e
+  plan:
+  - get: src
+    resource: products-ui-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: products-ui-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products-ui
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products-ui
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products-ui
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicapi-e2e
+  plan:
+  - get: src
+    resource: publicapi-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: publicapi-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicapi
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicapi
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicapi
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicauth-e2e
+  plan:
+  - get: src
+    resource: publicauth-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: publicauth-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicauth
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicauth
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicauth
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: selfservice-e2e
+  plan:
+  - get: src
+    resource: selfservice-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: selfservice-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: selfservice
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: selfservice
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: selfservice
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ci-pr-test
+  plan:
+  - get: pay-ci
+  - get: src
+    resource: ci-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - on_failure:
+      put: ci-pull-request
+      params:
+        context: test
+        path: src
+        status: failure
+      get_params:
+        skip_download: true
+    task: check-pipelines-and-tasks
+    file: pay-ci/ci/tasks/check-pipelines-and-tasks.yml
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+- name: pay-ci-endtoend-config
+  plan:
+  - in_parallel:
+    - get: pay-ci
+    - get: src
+      resource: pay-ci-endtoend-config-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - task: assume-role
+    file: pay-ci/ci/tasks/assume-role.yml
+    params:
+      AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+      AWS_ROLE_SESSION_NAME: pay-ci-endtoend-config-pr-assume-role
+  - load_var: role
+    file: assume-role/assume-role.json
+  - task: prepare-codebuild
+    file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+    params:
+      PROJECT_UNDER_TEST: pay-ci
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    input_mapping:
+      pay-ci: src
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+resources:
+- name: pipeline-source
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: PP-12582-migrate-pr-pipeline-to-pkl
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+    paths:
+    - ci/pkl-pipelines/pay-dev/pr-ci.pkl
+    - ci/pkl-pipelines/common/**
+  icon: github
+- name: pay-ci
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: master
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+  icon: github
+- name: adminusers-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-adminusers
+    access_token: ((github-access-token))
+  icon: github
+- name: cardid-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-cardid
+    access_token: ((github-access-token))
+  icon: github
+- name: connector-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-connector
+    access_token: ((github-access-token))
+  icon: github
+- name: endtoend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-endtoend
+    access_token: ((github-access-token))
+  icon: github
+- name: frontend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-frontend
+    access_token: ((github-access-token))
+  icon: github
+- name: ledger-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ledger
+    access_token: ((github-access-token))
+  icon: github
+- name: products-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products
+    access_token: ((github-access-token))
+  icon: github
+- name: products-ui-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products-ui
+    access_token: ((github-access-token))
+  icon: github
+- name: publicapi-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicapi
+    access_token: ((github-access-token))
+  icon: github
+- name: publicauth-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicauth
+    access_token: ((github-access-token))
+  icon: github
+- name: selfservice-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-selfservice
+    access_token: ((github-access-token))
+  icon: github
+- name: pay-ci-endtoend-config-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/tasks/endtoend/
+  icon: github
+- name: ci-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/pipelines/*
+    - ci/tasks/*
+  icon: github
+- name: pull-request-builds-ecr
+  type: registry-image
+  source:
+    aws_access_key_id: ((readonly_access_key_id))
+    aws_ecr_registry_id: ((pay_aws_test_account_id))
+    aws_region: eu-west-1
+    aws_role_arn: arn:aws:iam::((pay_aws_test_account_id)):role/concourse
+    aws_secret_access_key: ((readonly_secret_access_key))
+    aws_session_token: ((readonly_session_token))
+    repository: govukpay/pull-request-builds
+    tag: latest
+  icon: docker
+resource_types:
+- name: pull-request
+  type: registry-image
+  source:
+    repository: teliaoss/github-pr-resource
+    tag: v0.23.0
+groups:
+- name: adminusers
+  jobs:
+  - adminusers-e2e
+- name: cardid
+  jobs:
+  - cardid-e2e
+- name: connector
+  jobs:
+  - connector-e2e
+- name: end_to_end
+  jobs:
+  - endtoend-e2e
+  - pay-ci-endtoend-config
+- name: frontend
+  jobs:
+  - frontend-e2e
+- name: ledger
+  jobs:
+  - ledger-e2e
+- name: products
+  jobs:
+  - products-e2e
+- name: products-ui
+  jobs:
+  - products-ui-e2e
+- name: publicapi
+  jobs:
+  - publicapi-e2e
+- name: publicauth
+  jobs:
+  - publicauth-e2e
+- name: selfservice
+  jobs:
+  - selfservice-e2e
+- name: ci
+  jobs:
+  - ci-pr-test
+- name: update_pipeline
+  jobs:
+  - update-pipeline
Concourse set-pipeline dry-run for `pay-dev/pr-ci.pkl`
resources:
  resource pay-ci has changed:
  icon: github
  name: pay-ci
  source:
-   branch: PP-12582-migrate-pr-pipeline-to-pkl
+   branch: master
    password: ((github-access-token))
    uri: https://github.com/alphagov/pay-ci
    username: alphagov-pay-ci-concourse
  type: git
  
pipeline name: pr-ci

Dry-run mode was set, exiting.

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

Changes for pay-dev/pr-ci.pkl

Diff of YAML generated from pay-dev/pr-ci.pkl
--- pay-ci/ci/pkl-pipelines/pay-dev/pr-ci.yml
+++ pkl-pipeline-pr/ci/pkl-pipelines/pay-dev/pr-ci.yml
@@ -0,0 +1,1326 @@
+jobs:
+- name: update-pipeline
+  plan:
+  - get: pipeline-source
+    trigger: true
+  - task: generate-yaml-from-pkl
+    config:
+      platform: linux
+      image_resource:
+        type: registry-image
+        source:
+          repository: governmentdigitalservice/pay-concourse-runner
+          tag: latest
+      inputs:
+      - name: pipeline-source
+      outputs:
+      - name: pipeline-source
+      run:
+        path: ash
+        args:
+        - -c
+        - mkdir -p 'pay-dev' && pkl eval 'pay-dev/pr-ci.pkl' > 'pay-dev/pr-ci.yaml'
+        dir: pipeline-source/ci/pkl-pipelines/
+  - set_pipeline: pr-ci
+    file: pipeline-source/ci/pkl-pipelines/pay-dev/pr-ci.yaml
+- name: adminusers-e2e
+  plan:
+  - get: src
+    resource: adminusers-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: adminusers-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: adminusers
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: adminusers
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: adminusers
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: cardid-e2e
+  plan:
+  - get: src
+    resource: cardid-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: cardid-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+    - task: update-submodule
+      file: pay-ci/ci/tasks/update-cardid-submodule.yml
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: cardid
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: cardid
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: cardid
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: connector-e2e
+  plan:
+  - get: src
+    resource: connector-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: connector-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: connector
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: connector
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: connector
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: endtoend-e2e
+  plan:
+  - get: src
+    resource: endtoend-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: endtoend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: endtoend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: endtoend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: endtoend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: frontend-e2e
+  plan:
+  - get: src
+    resource: frontend-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: frontend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: frontend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: frontend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: frontend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ledger-e2e
+  plan:
+  - get: src
+    resource: ledger-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: ledger-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: ledger
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: ledger
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: ledger
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-e2e
+  plan:
+  - get: src
+    resource: products-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: products-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-ui-e2e
+  plan:
+  - get: src
+    resource: products-ui-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: products-ui-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products-ui
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products-ui
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products-ui
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicapi-e2e
+  plan:
+  - get: src
+    resource: publicapi-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: publicapi-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicapi
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicapi
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicapi
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicauth-e2e
+  plan:
+  - get: src
+    resource: publicauth-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: publicauth-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicauth
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicauth
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicauth
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: selfservice-e2e
+  plan:
+  - get: src
+    resource: selfservice-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - in_parallel:
+    - get: pay-ci
+    - put: selfservice-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: selfservice
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: selfservice
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: selfservice
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ci-pr-test
+  plan:
+  - get: pay-ci
+  - get: src
+    resource: ci-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - on_failure:
+      put: ci-pull-request
+      params:
+        context: test
+        path: src
+        status: failure
+      get_params:
+        skip_download: true
+    task: check-pipelines-and-tasks
+    file: pay-ci/ci/tasks/check-pipelines-and-tasks.yml
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+- name: pay-ci-endtoend-config
+  plan:
+  - in_parallel:
+    - get: pay-ci
+    - get: src
+      resource: pay-ci-endtoend-config-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - task: assume-role
+    file: pay-ci/ci/tasks/assume-role.yml
+    params:
+      AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+      AWS_ROLE_SESSION_NAME: pay-ci-endtoend-config-pr-assume-role
+  - load_var: role
+    file: assume-role/assume-role.json
+  - task: prepare-codebuild
+    file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+    params:
+      PROJECT_UNDER_TEST: pay-ci
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    input_mapping:
+      pay-ci: src
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+resources:
+- name: pipeline-source
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: PP-12582-migrate-pr-pipeline-to-pkl
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+    paths:
+    - ci/pkl-pipelines/pay-dev/pr-ci.pkl
+    - ci/pkl-pipelines/common/**
+  icon: github
+- name: pay-ci
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: master
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+  icon: github
+- name: adminusers-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-adminusers
+    access_token: ((github-access-token))
+  icon: github
+- name: cardid-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-cardid
+    access_token: ((github-access-token))
+  icon: github
+- name: connector-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-connector
+    access_token: ((github-access-token))
+  icon: github
+- name: endtoend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-endtoend
+    access_token: ((github-access-token))
+  icon: github
+- name: frontend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-frontend
+    access_token: ((github-access-token))
+  icon: github
+- name: ledger-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ledger
+    access_token: ((github-access-token))
+  icon: github
+- name: products-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products
+    access_token: ((github-access-token))
+  icon: github
+- name: products-ui-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products-ui
+    access_token: ((github-access-token))
+  icon: github
+- name: publicapi-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicapi
+    access_token: ((github-access-token))
+  icon: github
+- name: publicauth-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicauth
+    access_token: ((github-access-token))
+  icon: github
+- name: selfservice-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-selfservice
+    access_token: ((github-access-token))
+  icon: github
+- name: pay-ci-endtoend-config-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/tasks/endtoend/
+  icon: github
+- name: ci-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/pipelines/*
+    - ci/tasks/*
+  icon: github
+- name: pull-request-builds-ecr
+  type: registry-image
+  source:
+    aws_access_key_id: ((readonly_access_key_id))
+    aws_ecr_registry_id: ((pay_aws_test_account_id))
+    aws_region: eu-west-1
+    aws_role_arn: arn:aws:iam::((pay_aws_test_account_id)):role/concourse
+    aws_secret_access_key: ((readonly_secret_access_key))
+    aws_session_token: ((readonly_session_token))
+    repository: govukpay/pull-request-builds
+    tag: latest
+  icon: docker
+resource_types:
+- name: pull-request
+  type: registry-image
+  source:
+    repository: teliaoss/github-pr-resource
+    tag: v0.23.0
+groups:
+- name: adminusers
+  jobs:
+  - adminusers-e2e
+- name: cardid
+  jobs:
+  - cardid-e2e
+- name: connector
+  jobs:
+  - connector-e2e
+- name: end_to_end
+  jobs:
+  - endtoend-e2e
+  - pay-ci-endtoend-config
+- name: frontend
+  jobs:
+  - frontend-e2e
+- name: ledger
+  jobs:
+  - ledger-e2e
+- name: products
+  jobs:
+  - products-e2e
+- name: products-ui
+  jobs:
+  - products-ui-e2e
+- name: publicapi
+  jobs:
+  - publicapi-e2e
+- name: publicauth
+  jobs:
+  - publicauth-e2e
+- name: selfservice
+  jobs:
+  - selfservice-e2e
+- name: ci
+  jobs:
+  - ci-pr-test
+- name: update_pipeline
+  jobs:
+  - update-pipeline

Concourse set-pipeline dry-run shows no changes for pay-dev/pr-ci.pkl

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@rfisher-gds rfisher-gds marked this pull request as ready for review May 21, 2024 15:56
@alphagov-pay-ci-concourse

Changes for pay-dev/pr-ci.pkl

Diff of YAML generated from pay-dev/pr-ci.pkl
--- pay-ci/ci/pkl-pipelines/pay-dev/pr-ci.yml
+++ pkl-pipeline-pr/ci/pkl-pipelines/pay-dev/pr-ci.yml
@@ -0,0 +1,1337 @@
+jobs:
+- name: update-pipeline
+  plan:
+  - get: pipeline-source
+    trigger: true
+  - task: generate-yaml-from-pkl
+    config:
+      platform: linux
+      image_resource:
+        type: registry-image
+        source:
+          repository: governmentdigitalservice/pay-concourse-runner
+          tag: latest
+      inputs:
+      - name: pipeline-source
+      outputs:
+      - name: pipeline-source
+      run:
+        path: ash
+        args:
+        - -c
+        - mkdir -p 'pay-dev' && pkl eval 'pay-dev/pr-ci.pkl' > 'pay-dev/pr-ci.yaml'
+        dir: pipeline-source/ci/pkl-pipelines/
+  - set_pipeline: pr-ci
+    file: pipeline-source/ci/pkl-pipelines/pay-dev/pr-ci.yaml
+- name: adminusers-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: adminusers-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: adminusers-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: adminusers
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: adminusers
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: adminusers
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: adminusers-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: cardid-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: cardid-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: cardid-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+    - task: update-submodule
+      file: pay-ci/ci/tasks/update-cardid-submodule.yml
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: cardid
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: cardid
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: cardid
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: cardid-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: connector-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: connector-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: connector-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: connector
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: connector
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: connector
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: connector-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: endtoend-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: endtoend-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: endtoend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: endtoend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: endtoend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: endtoend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: endtoend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: frontend-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: frontend-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: frontend-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: frontend
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: frontend
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: frontend
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: frontend-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ledger-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: ledger-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: ledger-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: ledger
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: ledger
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: ledger
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: ledger-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: products-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: products-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: products-ui-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: products-ui-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: products-ui-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: products-ui
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: products-ui
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: products-ui
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-products-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: products-ui-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicapi-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: publicapi-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: publicapi-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicapi
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicapi
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicapi
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicapi-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: publicauth-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: publicauth-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: publicauth-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: publicauth
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: publicauth
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: publicauth
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: publicauth-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: selfservice-e2e
+  plan:
+  - in_parallel:
+    - get: src
+      resource: selfservice-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+    - get: pay-ci
+  - in_parallel:
+    - put: selfservice-pull-request
+      params:
+        context: e2e tests
+        path: src
+        status: pending
+      get_params:
+        skip_download: true
+  - task: build
+    file: pay-ci/ci/tasks/node-build-pr.yml
+    params:
+      skip_tests: 'true'
+  - task: generate-docker-creds-config
+    file: pay-ci/ci/tasks/generate-docker-config-file.yml
+    params:
+      USERNAME: ((docker-username))
+      PASSWORD: ((docker-access-token))
+      EMAIL: ((docker-email))
+  - task: build-image
+    file: pay-ci/ci/tasks/build-docker-image.yml
+    privileged: true
+    params:
+      app_name: selfservice
+  - in_parallel:
+    - task: get-docker-image-info
+      file: pay-ci/ci/tasks/get-pr-build-docker-image-info.yml
+      params:
+        app_name: selfservice
+    - task: assume-role
+      file: pay-ci/ci/tasks/assume-role.yml
+      params:
+        AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+        AWS_ROLE_SESSION_NAME: e2e-test-assume-role
+  - in_parallel:
+    - load_var: role
+      file: assume-role/assume-role.json
+    - load_var: image_filename
+      file: image_info/image_filename
+    - load_var: image_tag
+      file: image_info/tag
+  - in_parallel:
+    - put: pull-request-builds-ecr
+      params:
+        additional_tags: image_info/tag
+        image: local_image/((.:image_filename))
+      get_params:
+        skip_download: true
+    - task: prepare-codebuild
+      file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+      params:
+        PROJECT_UNDER_TEST: selfservice
+        RELEASE_TAG_UNDER_TEST: ((.:image_tag))
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+        PR_BUILD: 'true'
+  - task: run-card-e2e-tests
+    file: pay-ci/ci/tasks/run-codebuild.yml
+    params:
+      PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: selfservice-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+- name: ci-pr-test
+  plan:
+  - get: pay-ci
+  - get: src
+    resource: ci-pull-request
+    params:
+      integration_tool: checkout
+    trigger: true
+    version: every
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - on_failure:
+      put: ci-pull-request
+      params:
+        context: test
+        path: src
+        status: failure
+      get_params:
+        skip_download: true
+    task: check-pipelines-and-tasks
+    file: pay-ci/ci/tasks/check-pipelines-and-tasks.yml
+  - put: ci-pull-request
+    params:
+      context: test
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+- name: pay-ci-endtoend-config
+  plan:
+  - in_parallel:
+    - get: pay-ci
+    - get: src
+      resource: pay-ci-endtoend-config-pull-request
+      params:
+        integration_tool: checkout
+      trigger: true
+      version: every
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: pending
+    get_params:
+      skip_download: true
+  - task: assume-role
+    file: pay-ci/ci/tasks/assume-role.yml
+    params:
+      AWS_ROLE_ARN: arn:aws:iam::((pay_aws_test_account_id)):role/pay-cd-pay-dev-codebuild-executor-test-12
+      AWS_ROLE_SESSION_NAME: pay-ci-endtoend-config-pr-assume-role
+  - load_var: role
+    file: assume-role/assume-role.json
+  - task: prepare-codebuild
+    file: pay-ci/ci/tasks/prepare-e2e-codebuild.yml
+    params:
+      PROJECT_UNDER_TEST: pay-ci
+      AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+      AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+      AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    input_mapping:
+      pay-ci: src
+  - in_parallel:
+    - task: run-card-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/card.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-products-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/products.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+    - task: run-zap-e2e-tests
+      file: pay-ci/ci/tasks/run-codebuild.yml
+      params:
+        PATH_TO_CONFIG: ../../../../run-codebuild-configuration/zap.json
+        AWS_ACCESS_KEY_ID: ((.:role.AWS_ACCESS_KEY_ID))
+        AWS_SECRET_ACCESS_KEY: ((.:role.AWS_SECRET_ACCESS_KEY))
+        AWS_SESSION_TOKEN: ((.:role.AWS_SESSION_TOKEN))
+  - put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: success
+    get_params:
+      skip_download: true
+  max_in_flight: 3
+  build_log_retention:
+    builds: 500
+  on_failure:
+    put: pay-ci-endtoend-config-pull-request
+    params:
+      context: e2e tests
+      path: src
+      status: failure
+    get_params:
+      skip_download: true
+resources:
+- name: pipeline-source
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: PP-12582-migrate-pr-pipeline-to-pkl
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+    paths:
+    - ci/pkl-pipelines/pay-dev/pr-ci.pkl
+    - ci/pkl-pipelines/common/**
+  icon: github
+- name: pay-ci
+  type: git
+  source:
+    uri: https://github.com/alphagov/pay-ci
+    branch: master
+    username: alphagov-pay-ci-concourse
+    password: ((github-access-token))
+  icon: github
+- name: adminusers-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-adminusers
+    access_token: ((github-access-token))
+  icon: github
+- name: cardid-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-cardid
+    access_token: ((github-access-token))
+  icon: github
+- name: connector-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-connector
+    access_token: ((github-access-token))
+  icon: github
+- name: endtoend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-endtoend
+    access_token: ((github-access-token))
+  icon: github
+- name: frontend-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-frontend
+    access_token: ((github-access-token))
+  icon: github
+- name: ledger-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ledger
+    access_token: ((github-access-token))
+  icon: github
+- name: products-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products
+    access_token: ((github-access-token))
+  icon: github
+- name: products-ui-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-products-ui
+    access_token: ((github-access-token))
+  icon: github
+- name: publicapi-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicapi
+    access_token: ((github-access-token))
+  icon: github
+- name: publicauth-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-publicauth
+    access_token: ((github-access-token))
+  icon: github
+- name: selfservice-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-selfservice
+    access_token: ((github-access-token))
+  icon: github
+- name: pay-ci-endtoend-config-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/tasks/endtoend/
+  icon: github
+- name: ci-pull-request
+  type: pull-request
+  source:
+    disable_forks: true
+    repository: alphagov/pay-ci
+    access_token: ((github-access-token))
+    paths:
+    - ci/pipelines/*
+    - ci/tasks/*
+  icon: github
+- name: pull-request-builds-ecr
+  type: registry-image
+  source:
+    aws_access_key_id: ((readonly_access_key_id))
+    aws_ecr_registry_id: ((pay_aws_test_account_id))
+    aws_region: eu-west-1
+    aws_role_arn: arn:aws:iam::((pay_aws_test_account_id)):role/concourse
+    aws_secret_access_key: ((readonly_secret_access_key))
+    aws_session_token: ((readonly_session_token))
+    repository: govukpay/pull-request-builds
+    tag: latest
+  icon: docker
+resource_types:
+- name: pull-request
+  type: registry-image
+  source:
+    repository: teliaoss/github-pr-resource
+    tag: v0.23.0
+groups:
+- name: adminusers
+  jobs:
+  - adminusers-e2e
+- name: cardid
+  jobs:
+  - cardid-e2e
+- name: connector
+  jobs:
+  - connector-e2e
+- name: end_to_end
+  jobs:
+  - endtoend-e2e
+  - pay-ci-endtoend-config
+- name: frontend
+  jobs:
+  - frontend-e2e
+- name: ledger
+  jobs:
+  - ledger-e2e
+- name: products
+  jobs:
+  - products-e2e
+- name: products-ui
+  jobs:
+  - products-ui-e2e
+- name: publicapi
+  jobs:
+  - publicapi-e2e
+- name: publicauth
+  jobs:
+  - publicauth-e2e
+- name: selfservice
+  jobs:
+  - selfservice-e2e
+- name: ci
+  jobs:
+  - ci-pr-test
+- name: update_pipeline
+  jobs:
+  - update-pipeline

Concourse set-pipeline dry-run shows no changes for pay-dev/pr-ci.pkl

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@alphagov-pay-ci-concourse

The diff for pay-dev/pay-dev/pr-ci.pkl was too long, see concourse output

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

kbottla
kbottla previously approved these changes May 22, 2024
@alphagov-pay-ci-concourse

The diff for pay-dev/pay-dev/pr-ci.pkl was too long, see concourse output

@alphagov-pay-ci-concourse

The following files had no diff in the YAML between the main branch and this PR:

pay-dev/deploy-to-perf.yml
pay-dev/deploy-to-test.yml
pay-dev/e2e-helpers.yml
pay-dev/infra-drift-detector.yml
pay-dev/init-lock-pools.yml
pay-dev/pkl-pipeline-changes.yml

@alphagov-pay-ci-concourse

No YAML differences detected between PR and master pkl files in Concourse Team pay-deploy

@rfisher-gds rfisher-gds merged commit 2300420 into master May 22, 2024
4 checks passed
@rfisher-gds rfisher-gds deleted the PP-12582-migrate-pr-pipeline-to-pkl branch May 22, 2024 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants