diff --git a/ci/pipeline.yml b/ci/pipeline.yml index eeba189709..bfb9660fdc 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -144,12 +144,27 @@ jobs: do: - put: repo-status-build params: { state: "failure", commit: "git-repo" } + - task: determine-email-body + image: spring-boot-ci-image + file: git-repo/ci/tasks/determine-email-body.yml + params: + STATE: failure - put: email-notification params: - subject_text: "Build failure ${BUILD_PIPELINE_NAME} / ${BUILD_JOB_NAME} / ${BUILD_NAME}" - body_text: "Build ${ATC_EXTERNAL_URL}/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME} has failed!" + subject: email-details/subject + body: email-details/body + - do: + - task: determine-email-body + image: spring-boot-ci-image + file: git-repo/ci/tasks/determine-email-body.yml + params: + STATE: success - put: repo-status-build params: { state: "success", commit: "git-repo" } + - put: email-notification + params: + subject: email-details/subject + body: email-details/body - put: artifactory-repo params: &artifactory-params repo: libs-snapshot-local diff --git a/ci/scripts/determine-email-body.sh b/ci/scripts/determine-email-body.sh new file mode 100755 index 0000000000..9ee81fe036 --- /dev/null +++ b/ci/scripts/determine-email-body.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -e + +mkdir email-details + +PREV_SHA=$(git rev-parse HEAD^1) +PREV_STATUSES=$(curl https://api.github.com/repos/spring-projects/spring-boot/commits/$PREV_SHA/statuses) +PREV_STATES=echo $PREV_STATUSES | jq -r '.[] | select(.context == "build") | .state' +WAS_PREV_SUCCESSFUL=$(echo $PREV_STATES | grep 'success') + +if [[ $STATE == "success" ]];then + echo "Build SUCCESSFUL ${BUILD_PIPELINE_NAME} / ${BUILD_JOB_NAME} / ${BUILD_NAME}" > email-details/subject + if [[ $WAS_PREV_SUCCESSFUL == "" ]];then + echo "Build ${ATC_EXTERNAL_URL}/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME} is successful!" > email-details/body + elif [[ $WAS_PREV_SUCCESSFUL == "success" ]];then + echo "" > email-details/body + fi +fi +elif [[ $STATE == "failure" ]];then + echo "Build ${ATC_EXTERNAL_URL}/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME} has failed!" > email-details/body + if [[ $WAS_PREV_SUCCESSFUL == "" ]];then + echo "Still FAILING ${BUILD_PIPELINE_NAME} / ${BUILD_JOB_NAME} / ${BUILD_NAME}" > email-details/subject + elif [[ $WAS_PREV_SUCCESSFUL == "success" ]];then + echo "Build FAILURE ${BUILD_PIPELINE_NAME} / ${BUILD_JOB_NAME} / ${BUILD_NAME}" > email-details/subject + fi +fi diff --git a/ci/tasks/determine-email-body.yml b/ci/tasks/determine-email-body.yml new file mode 100644 index 0000000000..ca6062cfad --- /dev/null +++ b/ci/tasks/determine-email-body.yml @@ -0,0 +1,8 @@ +--- +platform: linux +inputs: +- name: git-repo +outputs: +- name: email-details +run: + path: git-repo/ci/scripts/determine-email-body.sh