From 2b23e952cc371c21dbf834eefe706ac012155a3d Mon Sep 17 00:00:00 2001 From: Greg Turnquist Date: Wed, 24 Apr 2019 10:17:25 -0500 Subject: [PATCH] Upgrade pipeline to use new Concourse features. --- README.adoc | 14 +-- ci/README.adoc | 51 +++++++-- ci/pipeline-template.yml | 219 +++++++++++++++++++++++++++------------ 3 files changed, 203 insertions(+), 81 deletions(-) diff --git a/README.adoc b/README.adoc index 02c5a82..580342d 100644 --- a/README.adoc +++ b/README.adoc @@ -22,37 +22,37 @@ Check the matrix below to see the status of supported versions: | Job | `master` branch (`2.2`) | `2.1.x` | `2.0.x` | Test - JDK 8 -| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/Test%20-%20JDK%208/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] +| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/spring-session-data-mongodb-test-jdk8/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x/jobs/Test%20-%20JDK%208/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x/jobs/Test%20-%20JDK%208/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x"] | Test - JDK 8 and Spring.NEXT (snapshots) -| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/Test%20-%20JDK%208%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] +| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/spring-session-data-mongodb-test-jdk8-spring-next/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x/jobs/Test%20-%20JDK%208%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x/jobs/Test%20-%20JDK%208%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x"] | Test - JDK 11 -| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/Test%20-%20JDK%2011/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] +| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/spring-session-data-mongodb-test-jdk11/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x/jobs/Test%20-%20JDK%2011/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x/jobs/Test%20-%20JDK%2011/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x"] * | Test - JDK 11 and Spring.NEXT (snapshots) -| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/Test%20-%20JDK%2011%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] +| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/spring-session-data-mongodb-test-jdk11-spring-next/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x/jobs/Test%20-%20JDK%2011%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x/jobs/Test%20-%20JDK%2011%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x"] * | Test - JDK 13* -| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/Test%20-%20JDK%2013/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] * +| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/spring-session-data-mongodb-test-jdk13/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] * | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x/jobs/Test%20-%20JDK%2013/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x"] * | | Test - JDK 13* and Spring.NEXT (snapshots) -| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/Test%20-%20JDK%2013%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] * +| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/spring-session-data-mongodb-test-jdk13-spring-next/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] * | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x/jobs/Test%20-%20JDK%2013%20and%20Spring.NEXT/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x"] * | | Build - Release to repo.spring.io -| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/Build/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] +| image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb/jobs/build/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x/jobs/Build/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.1.x"] | image:https://ci.spring.io/api/v1/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x/jobs/Build/badge[link="https://ci.spring.io/teams/spring-team/pipelines/spring-session-data-mongodb-2.0.x"] diff --git a/ci/README.adoc b/ci/README.adoc index e9e2c90..3388268 100644 --- a/ci/README.adoc +++ b/ci/README.adoc @@ -28,7 +28,7 @@ WARNING: Do NOT check this file into source control! If you'll check, `credentia With this in place, run the following `fly` commands to create pipelines: ---- -% fly -t spring-team sp -p spring-session-data-mongodb -c ci/pipeline-template.yml -l credentials.yml -v branch=master -v release-branch=release +% fly -t spring-team sp -p spring-session-data-mongodb -c ci/pipeline-template.yml -l credentials.yml -v branch=master ---- With this pipeline in place, you can now activate and expose it: @@ -45,11 +45,50 @@ With this pipeline in place, you can now activate and expose it: % ci/create-release.sh ---- -2. With the release tagged, push the tagged version to the release branch. +2. With the release officially tagged, just push it to master. ---- -% git checkout -b release -% git reset --hard -% git push -f origin release +% git push ---- -NOTE: You can chain the previous set of commands together using `&&`. \ No newline at end of file +The pipeline will pick up the next tag and release it. It will also build a new snapshot and stage it on artifactory. + + +=== Running CI tasks locally + +Since Concourse is built on top of Docker, it's easy to: + +* Debug what went wrong on your local machine. +* Test out a a tweak to your `test.sh` script before sending it out. +* Experiment against a new image before submitting your pull request. + +All of these use cases are great reasons to essentially run what Concourse does on your local machine. + +IMPORTANT: To do this you must have Docker installed on your machine. + +1. `docker run -it --mount type=bind,source="$(pwd)",target=/spring-session-data-mongodb-github openjdk:8-jdk /bin/bash` ++ +This will launch the Docker image and mount your source code at `spring-session-data-mongodb-github`. ++ +Next, run the `test.sh` script from inside the container: ++ +2. `PROFILE=none spring-session-data-mongodb-github/ci/test.sh` + +Since the container is binding to your source, you can make edits from your IDE and continue to run build jobs. + +If you need to test the `build.sh` script, then do this: + +1. `mkdir /tmp/spring-session-data-mongodb-artifactory` +2. `docker run -it --mount type=bind,source="$(pwd)",target=/spring-session-data-mongodb-github --mount type=bind,source="/tmp/spring-session-data-mongodb-artifactory",target=/spring-session-data-mongodb-artifactory openjdk:8-jdk /bin/bash` ++ +This will launch the Docker image and mount your source code at `spring-session-data-mongodb-github` and the temporary +artifactory output directory at `spring-session-data-mongodb-artifactory`. ++ +Next, run the `build.sh` script from inside the container: ++ +3. `spring-session-data-mongodb-github/ci/build.sh` + +IMPORTANT: `build.sh` doesn't actually push to Artifactory so don't worry about accidentally deploying anything. +It just deploys to a local folder. That way, the `artifactory-resource` later in the pipeline can pick up these artifacts +and deliver them to artifactory. + +NOTE: Docker containers can eat up disk space fast! From time to time, run `docker system prune` to clean out old images. \ No newline at end of file diff --git a/ci/pipeline-template.yml b/ci/pipeline-template.yml index 6a81779..dac9954 100644 --- a/ci/pipeline-template.yml +++ b/ci/pipeline-template.yml @@ -1,55 +1,60 @@ --- resource_types: - name: artifactory-resource - type: docker-image + type: registry-image source: repository: springio/artifactory-resource tag: 0.0.6 - name: github-status - type: docker-image + type: registry-image source: repository: dpb587/github-status-resource tag: master - name: pull-request - type: docker-image + type: registry-image source: repository: jtarchie/pr tag: latest - name: slack-notification - type: docker-image + type: registry-image source: repository: nebhale/slack-notification-resource resources: - name: openjdk:8-jdk - type: docker-image + type: registry-image + icon: docker source: repository: openjdk tag: 8-jdk - name: openjdk:11-jdk - type: docker-image + type: registry-image + icon: docker source: repository: openjdk tag: 11-jdk - name: openjdk:13-jdk - type: docker-image + type: registry-image + icon: docker source: repository: openjdk tag: 13-jdk - name: spring-session-data-mongodb-github type: git + icon: github-circle source: uri: https://github.com/spring-projects/spring-session-data-mongodb.git branch: ((branch)) - name: spring-session-data-mongodb-artifactory type: artifactory-resource + icon: package-variant source: uri: https://repo.spring.io username: ((artifactory-username)) @@ -58,6 +63,7 @@ resources: - name: spring-session-data-mongodb-pull-requests type: pull-request + icon: source-pull source: access_token: ((github-access-token)) repo: spring-projects/spring-session-data-mongodb @@ -65,12 +71,14 @@ resources: - name: spring-session-data-mongodb-release type: git + icon: github-circle source: uri: https://github.com/spring-projects/spring-session-data-mongodb.git - branch: ((release-branch)) + tag_filter: v* - name: spring-session-data-mongodb-status type: github-status + icon: eye-check source: access_token: ((github-access-token)) repository: spring-projects/spring-session-data-mongodb @@ -78,19 +86,20 @@ resources: - name: slack type: slack-notification + icon: slack source: url: ((slack)) groups: - name: spring-session-data-mongodb jobs: - - Test - JDK 8 - - Test - JDK 8 and Spring.NEXT - - Test - JDK 11 - - Test - JDK 11 and Spring.NEXT - - Test - JDK 13 - - Test - JDK 13 and Spring.NEXT - - Build + - spring-session-data-mongodb-test-jdk8 + - spring-session-data-mongodb-test-jdk8-spring-next + - spring-session-data-mongodb-test-jdk11 + - spring-session-data-mongodb-test-jdk11-spring-next + - spring-session-data-mongodb-test-jdk13 + - spring-session-data-mongodb-test-jdk13-spring-next + - build - name: pull-requests jobs: - spring-session-data-mongodb-pull-requests @@ -101,7 +110,7 @@ groups: # - sync-to-maven-central jobs: -- name: Test - JDK 8 +- name: spring-session-data-mongodb-test-jdk8 serial: true public: true plan: @@ -112,11 +121,27 @@ jobs: - task: test file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "convergence" } - <<: *slack-success - <<: *slack-failure + on_success: + put: slack + params: + attachments: + - color: good + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has succeeded" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME + on_failure: + put: slack + params: + attachments: + - color: danger + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has failed" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -- name: Test - JDK 8 and Spring.NEXT +- name: spring-session-data-mongodb-test-jdk8-spring-next serial: true public: true plan: @@ -127,10 +152,26 @@ jobs: - task: test file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "spring-next,convergence" } - <<: *slack-success - <<: *slack-failure + on_success: + put: slack + params: + attachments: + - color: good + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has succeeded" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME + on_failure: + put: slack + params: + attachments: + - color: danger + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has failed" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -- name: Test - JDK 11 +- name: spring-session-data-mongodb-test-jdk11 serial: true public: true plan: @@ -142,10 +183,26 @@ jobs: image: openjdk:11-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "convergence" } - <<: *slack-success - <<: *slack-failure + on_success: + put: slack + params: + attachments: + - color: good + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has succeeded" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME + on_failure: + put: slack + params: + attachments: + - color: danger + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has failed" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -- name: Test - JDK 11 and Spring.NEXT +- name: spring-session-data-mongodb-test-jdk11-spring-next serial: true public: true plan: @@ -157,10 +214,26 @@ jobs: image: openjdk:11-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "spring-next,convergence" } - <<: *slack-success - <<: *slack-failure + on_success: + put: slack + params: + attachments: + - color: good + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has succeeded" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME + on_failure: + put: slack + params: + attachments: + - color: danger + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has failed" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -- name: Test - JDK 13 +- name: spring-session-data-mongodb-test-jdk13 serial: true public: true plan: @@ -172,10 +245,26 @@ jobs: image: openjdk:13-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "convergence" } - <<: *slack-success - <<: *slack-failure + on_success: + put: slack + params: + attachments: + - color: good + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has succeeded" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME + on_failure: + put: slack + params: + attachments: + - color: danger + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has failed" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -- name: Test - JDK 13 and Spring.NEXT +- name: spring-session-data-mongodb-test-jdk13-spring-next serial: true public: true plan: @@ -187,22 +276,38 @@ jobs: image: openjdk:13-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "spring-next,convergence" } - <<: *slack-success - <<: *slack-failure + on_success: + put: slack + params: + attachments: + - color: good + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has succeeded" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME + on_failure: + put: slack + params: + attachments: + - color: danger + fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " + text: "Test has failed" + title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" + title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -- name: Build +- name: build serial: true public: true plan: - get: spring-session-data-mongodb-github trigger: true passed: [ - Test - JDK 8, - Test - JDK 8 and Spring.NEXT, - Test - JDK 11, - Test - JDK 11 and Spring.NEXT, - Test - JDK 13, - Test - JDK 13 and Spring.NEXT + spring-session-data-mongodb-test-jdk8, + spring-session-data-mongodb-test-jdk8-spring-next, + spring-session-data-mongodb-test-jdk11, + spring-session-data-mongodb-test-jdk11-spring-next, + spring-session-data-mongodb-test-jdk13, + spring-session-data-mongodb-test-jdk13-spring-next ] - put: spring-session-data-mongodb-status params: @@ -267,25 +372,25 @@ jobs: path: spring-session-data-mongodb-github status: pending - aggregate: - - task: test (JDK 8) + - task: test-jdk8 file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "convergence" } - - task: test (JDK 8 and Spring.NEXT) + - task: test-jdk8-spring-next file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "spring-next,convergence" } - - task: test (JDK 11) + - task: test-jdk11 image: openjdk:11-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "convergence" } - - task: test (JDK 11 and Spring.NEXT) + - task: test-jdk11-spring-next image: openjdk:11-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "spring-next,convergence" } - - task: test (JDK 13) + - task: test-jdk13 image: openjdk:13-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "convergence" } - - task: test (JDK 13 and Spring.NEXT) + - task: test-jdk13-spring-next image: openjdk:13-jdk file: spring-session-data-mongodb-github/ci/test.yml params: { PROFILE: "spring-next,convergence" } @@ -466,25 +571,3 @@ jobs: # title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" # title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -slack-failure: &slack-failure - on_failure: - put: slack - params: - attachments: - - color: danger - fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " - text: "Test has failed" - title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" - title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME - -slack-success: &slack-success - on_success: - put: slack - params: - attachments: - - color: good - fallback: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME " - text: "Test has succeeded" - title: "$BUILD_PIPELINE_NAME/$BUILD_JOB_NAME #$BUILD_NAME" - title_link: $ATC_EXTERNAL_URL/teams/$BUILD_TEAM_NAME/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME -