resource_types: - name: slack-alert type: registry-image source: repository: ((dockerhub-proxy))/arbourd/concourse-slack-alert-resource - name: pull-request type: registry-image source: repository: ((dockerhub-proxy))/teliaoss/github-pr-resource resources: - name: repo type: git check_every: 1m icon: github source: uri: https://((repo.host))/((repo.slug)) branch: ((repo.branch)) ignore_paths: - ci/ - name: ci-repo type: git check_every: 1m icon: github source: uri: https://((ci-repo.host))/((ci-repo.slug)) branch: ((ci-repo.branch)) paths: - ci/qs-test/ - ci/tasks/ - name: housekeeping-daily icon: wrench-clock type: time source: location: UTC start: 07:00 AM stop: 09:00 AM days: [ Monday, Tuesday, Wednesday, Thursday, Friday ] initial_version: true - name: housekeeping-interval icon: wrench-clock type: time source: location: UTC days: [ Monday, Tuesday, Wednesday, Thursday, Friday ] interval: 1h initial_version: true - name: notify icon: slack type: slack-alert source: url: ((ci/slack.webhook)) - name: pull-request icon: pull-request type: pull-request source: repository: ((repo.slug)) access_token: ((ci/pr-resource.token)) disable_forks: true base_branch: main ignore_paths: - ci/ - name: daily-run type: time source: location: UTC start: 04:00 AM stop: 06:00 AM days: [ Monday, Tuesday, Wednesday, Thursday, Friday ] alerting: onJobs: &alertingOnJobs on_failure: put: notify params: { alert_type: failed } on_error: put: notify params: { alert_type: errored } onPrJobs: &alertginOnPrJobs on_failure: put: pull-request params: path: repo status: failure # comment: | # Your PR sadly failed, please check [here](${ATC_EXTERNAL_URL}/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}) get_params: skip_download: true on_error: put: pull-request params: path: repo status: error # comment: | # Your PR sadly errored, please check [here](${ATC_EXTERNAL_URL}/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}) get_params: skip_download: true on_abort: put: pull-request params: path: repo status: pending # comment: | # Your PR has been aborted, please check [here](${ATC_EXTERNAL_URL}/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}) get_params: skip_download: true groups: - name: main jobs: - prepare-bucket - test-static - test-single-us-east-1 - test-single-eu-south-1 - test-multi-us-west-2 - test-relocation-single-us-west-2 - test-relocation-multi-us-east-1 - publish-bucket - set-pipeline - name: pr jobs: - "pr-*" - set-pipeline - name: housekeeping jobs: - "housekeeping-*" - set-pipeline - name: all jobs: - "*" jobs: - name: set-pipeline << : *alertingOnJobs plan: - get: ci-repo params: submodules: none trigger: true - set_pipeline: self file: ci-repo/ci/qs-test/pipeline.yml var_files: - ci-repo/ci/qs-test/pipeline.vars.yml #! ---> main ---- - name: test-static << : *alertingOnJobs plan: - in_parallel: - get: daily-run trigger: true - get: ci-repo params: submodules: none passed: [ set-pipeline ] - get: repo trigger: true - task: test-static file: ci-repo/ci/tasks/test-static/task.yml - name: prepare-bucket << : *alertingOnJobs serial: true plan: - in_parallel: - get: daily-run trigger: true passed: [ test-static ] - get: ci-repo params: submodules: none trigger: true passed: [ test-static ] - get: repo trigger: true passed: [ test-static ] - &setup in_parallel: - &getCloudGateCreds task: get-cloudgate-creds file: ci-repo/ci/tasks/get-cloudgate-creds/task.yml params: CLOUDGATE_BASE_URL: https://api.console.cloudgate.vmware.com CLOUDGATE_CLIENT_ID: ((ci/cloudgate.clientId)) CLOUDGATE_CLIENT_SECRET: ((ci/cloudgate.clientSecret)) CLOUDGATE_MASTER_ACCOUNT_ID: ((ci/cloudgate.masterAccountId)) CLOUDGATE_ORG_ACCOUNT_ID: ((ci/cloudgate.orgAccountId)) CLOUDGATE_OU_ID: ((ci/cloudgate.ouId)) CLOUDGATE_TTL: 43200 - task: generate-taskcat-config file: ci-repo/ci/tasks/taskcat-generate-config/task.yml params: VAR_tanzunet_username: ((ci/tanzunet.username)) VAR_tanzunet_password: ((ci/tanzunet.password)) VAR_tanzunet_refreshToken: ((ci/tanzunet.refreshToken)) VAR_keypairName: ((ci/qs-test/keypair.name)) VAR_bucket: ((ci-bucket.name-without-region)) VAR_domain: thingamaji.ga - task: taskcat-prepare-bucket file: ci-repo/ci/tasks/taskcat-build-upload/task.yml params: NIMBUS_USER: ((ci/nimbus.user)) NIMBUS_DEPLOY_OPTS: '--cpus=6 --memory=4096' DOCKER_HUB_PROXY: ((dockerhub-proxy)) - name: test-single-us-east-1 << : *alertingOnJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: daily-run trigger: true passed: [ prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: single-cluster REGIONS: "us-east-1" ensure: &postTest in_parallel: - task: print-logs file: ci-repo/ci/tasks/taskcat-print-logs/task.yml - task: print-durations file: ci-repo/ci/tasks/taskcat-print-durations/task.yml - task: cleanup-stack file: ci-repo/ci/tasks/aws-delete-stack/task.yml - name: test-single-eu-south-1 << : *alertingOnJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: daily-run trigger: true passed: [ prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: single-cluster REGIONS: "eu-south-1" ensure: *postTest - name: test-multi-us-west-2 << : *alertingOnJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: daily-run trigger: true passed: [ prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: multi-cluster REGIONS: "us-west-2" ensure: *postTest - name: test-relocation-single-us-west-2 << : *alertingOnJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: daily-run trigger: true passed: [ prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: relocation-single REGIONS: "us-west-2" ensure: *postTest - name: test-relocation-multi-us-east-1 << : *alertingOnJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: repo params: submodules: none trigger: true passed: [ prepare-bucket ] - get: daily-run trigger: true passed: [ prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: relocation-multi REGIONS: "us-east-1" ensure: *postTest - name: publish-bucket << : *alertingOnJobs plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: &passedForPublishBucket - test-single-us-east-1 - test-single-eu-south-1 - test-multi-us-west-2 - test-relocation-single-us-west-2 - test-relocation-multi-us-east-1 - get: repo params: submodules: none trigger: true passed: *passedForPublishBucket - *setup - task: publish-bucket file: ci-repo/ci/tasks/taskcat-bucket-sync/task.yml params: DESTINATION_BUCKET: ((publish-bucket.name))/((publish-bucket.prefix)) #! ---< main ---- #! ---> PR stuff ---- - name: pr-set-pending << : *alertginOnPrJobs plan: - get: repo resource: pull-request trigger: true - put: pull-request params: path: repo status: pending get_params: skip_download: true - name: pr-test-static << : *alertginOnPrJobs plan: - in_parallel: - get: ci-repo params: submodules: none passed: [ set-pipeline ] - get: repo passed: [ pr-set-pending ] resource: pull-request trigger: true - task: test-static file: ci-repo/ci/tasks/test-static/task.yml - name: pr-prepare-bucket << : *alertginOnPrJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ pr-test-static ] - get: repo passed: [ pr-test-static ] resource: pull-request trigger: true - in_parallel: - task: handle-submodules file: ci-repo/ci/tasks/git-force-submodules/task.yml - *setup - task: taskcat-prepare-bucket file: ci-repo/ci/tasks/taskcat-build-upload/task.yml params: NIMBUS_USER: ((ci/nimbus.user)) NIMBUS_DEPLOY_OPTS: '--cpus=6 --memory=4096' DOCKER_HUB_PROXY: ((dockerhub-proxy)) - name: pr-test-single-us-east-1 << : *alertginOnPrJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ pr-prepare-bucket ] - get: repo resource: pull-request trigger: true passed: [ pr-prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: single-cluster REGIONS: "us-east-1" ensure: *postTest - name: pr-test-single-eu-south-1 << : *alertginOnPrJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ pr-prepare-bucket ] - get: repo resource: pull-request trigger: true passed: [ pr-prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: single-cluster REGIONS: "eu-south-1" ensure: *postTest - name: pr-test-multi-us-west-2 << : *alertginOnPrJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ pr-prepare-bucket ] - get: repo resource: pull-request trigger: true passed: [ pr-prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: multi-cluster REGIONS: "us-west-2" ensure: *postTest - name: pr-test-relocation-single-us-west-2 << : *alertginOnPrJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ pr-prepare-bucket ] - get: repo resource: pull-request trigger: true passed: [ pr-prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: relocation-single REGIONS: "us-west-2" ensure: *postTest - name: pr-test-relocation-multi-us-east-1 << : *alertginOnPrJobs serial: true plan: - in_parallel: - get: ci-repo params: submodules: none trigger: true passed: [ pr-prepare-bucket ] - get: repo resource: pull-request trigger: true passed: [ pr-prepare-bucket ] - *setup - task: taskcat-test file: ci-repo/ci/tasks/taskcat-run-test/task.yml params: TEST_NAME: relocation-multi REGIONS: "us-east-1" ensure: *postTest - name: pr-set-success plan: - get: repo resource: pull-request trigger: true passed: - pr-test-single-us-east-1 - pr-test-single-eu-south-1 - pr-test-multi-us-west-2 - pr-test-relocation-single-us-west-2 - pr-test-relocation-multi-us-east-1 - put: pull-request params: path: repo status: success # comment: | # Congratulations, your PR made it through the pipeline! :tada: get_params: skip_download: true #! ---< PR stuff ---- #! ---> housekeeping ---- - name: housekeeping-log-failed-stacks << : *alertingOnJobs serial_groups: [ 'stack-cleanup' ] plan: - in_parallel: - get: housekeeping-daily trigger: true - get: ci-repo params: submodules: none passed: [ set-pipeline ] - *getCloudGateCreds - task: stacks-housekeeping file: ci-repo/ci/tasks/aws-housekeeping/stacks.yml params: REGIONS: ((housekeeping.regions)) - name: housekeeping-check-pr-resource-token << : *alertingOnJobs plan: - in_parallel: - get: housekeeping-daily trigger: true - get: ci-repo params: submodules: none passed: [ set-pipeline ] - task: check-pr-resource-token file: ci-repo/ci/tasks/github-token-expiry/task.yml params: SECRET_PATH: ci/pr-resource EXPIRATION_DATE: ((ci/pr-resource.expiration)) MIN_DAYS_LEFT: 30 - name: housekeeping-cleanup-failed-stacks << : *alertingOnJobs serial_groups: [ 'stack-cleanup' ] plan: - in_parallel: - get: housekeeping-interval trigger: true - get: ci-repo params: submodules: none passed: [ set-pipeline ] - *getCloudGateCreds - task: cleanup-failed-stacks file: ci-repo/ci/tasks/aws-housekeeping/cleanup-stacks.yml params: REALLY_DELETE: "1" REGIONS: ((housekeeping.regions)) #! ---< housekeeping ----