Prevent duplication of issues created by CI automation

This is done by checking for existing issues only in the milestone
corresponding to the current branch. For issues, the milestone is assigned
at the time of issue creation. For PRs, since the branch is different the
milestone can be derived from that while triaging the issue.

Closes gh-20680
pull/22089/head
Madhura Bhave 5 years ago
parent d5a3310b91
commit 1a3df294d0

@ -161,6 +161,7 @@ jobs:
GITHUB_PASSWORD: ((github-password)) GITHUB_PASSWORD: ((github-password))
GITHUB_USERNAME: ((github-username)) GITHUB_USERNAME: ((github-username))
JDK_VERSION: java8 JDK_VERSION: java8
MILESTONE: ((branch))
image: spring-boot-ci-image image: spring-boot-ci-image
- task: detect-jdk11-update - task: detect-jdk11-update
file: git-repo/ci/tasks/detect-jdk-updates.yml file: git-repo/ci/tasks/detect-jdk-updates.yml
@ -170,6 +171,7 @@ jobs:
GITHUB_PASSWORD: ((github-password)) GITHUB_PASSWORD: ((github-password))
GITHUB_USERNAME: ((github-username)) GITHUB_USERNAME: ((github-username))
JDK_VERSION: java11 JDK_VERSION: java11
MILESTONE: ((branch))
image: spring-boot-ci-image image: spring-boot-ci-image
- name: detect-ubuntu-image-updates - name: detect-ubuntu-image-updates
plan: plan:
@ -185,6 +187,7 @@ jobs:
GITHUB_ORGANIZATION: spring-projects GITHUB_ORGANIZATION: spring-projects
GITHUB_PASSWORD: ((github-password)) GITHUB_PASSWORD: ((github-password))
GITHUB_USERNAME: ((github-username)) GITHUB_USERNAME: ((github-username))
MILESTONE: ((branch))
image: spring-boot-ci-image image: spring-boot-ci-image
- name: detect-docker-updates - name: detect-docker-updates
plan: plan:
@ -199,6 +202,7 @@ jobs:
params: params:
GITHUB_REPO: spring-boot GITHUB_REPO: spring-boot
GITHUB_ORGANIZATION: spring-projects GITHUB_ORGANIZATION: spring-projects
MILESTONE: ((branch))
image: spring-boot-ci-image image: spring-boot-ci-image
- put: git-repo-ci-docker - put: git-repo-ci-docker
params: params:

@ -3,7 +3,9 @@
latest_version=$(curl -I -s https://github.com/docker/docker-ce/releases/latest | grep "location:" | awk '{n=split($0, parts, "/"); print substr(parts[n],2);}' | awk '{$1=$1;print}' | tr -d '\r' | tr -d '\n' ) latest_version=$(curl -I -s https://github.com/docker/docker-ce/releases/latest | grep "location:" | awk '{n=split($0, parts, "/"); print substr(parts[n],2);}' | awk '{$1=$1;print}' | tr -d '\r' | tr -d '\n' )
title_prefix="Upgrade CI to Docker" title_prefix="Upgrade CI to Docker"
existing_upgrade_issues=$( curl -s https://api.github.com/repos/spring-projects/spring-boot/issues\?labels\=type:%20task\&state\=open\&creator\=spring-buildmaster | jq -c --arg TITLE_PREFIX "$title_prefix" '.[] | select(.pull_request != null) | select(.title | startswith($TITLE_PREFIX))' ) milestone_number=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/milestones\?state\=open | jq -c --arg MILESTONE "$MILESTONE" '.[] | select(.title==$MILESTONE)' | jq -r '.number')
existing_upgrade_issues=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-buildmaster\&milestone\=${milestone_number} | jq -c --arg TITLE_PREFIX "$title_prefix" '.[] | select(.pull_request != null) | select(.title | startswith($TITLE_PREFIX))' )
if [[ ${existing_upgrade_issues} = "" ]]; then if [[ ${existing_upgrade_issues} = "" ]]; then
git clone git-repo git-repo-updated > /dev/null git clone git-repo git-repo-updated > /dev/null

@ -24,7 +24,8 @@ if [[ $current = $latest ]]; then
exit 0; exit 0;
fi fi
existing_tasks=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-buildmaster ) milestone_number=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/milestones\?state\=open | jq -c --arg MILESTONE "$MILESTONE" '.[] | select(.title==$MILESTONE)' | jq -r '.number')
existing_tasks=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-buildmaster\&milestone\=${milestone_number} )
existing_jdk_issues=$( echo "$existing_tasks" | jq -c --arg TITLE "$ISSUE_TITLE" '.[] | select(.title==$TITLE)' ) existing_jdk_issues=$( echo "$existing_tasks" | jq -c --arg TITLE "$ISSUE_TITLE" '.[] | select(.title==$TITLE)' )
if [[ ${existing_jdk_issues} = "" ]]; then if [[ ${existing_jdk_issues} = "" ]]; then
@ -32,7 +33,7 @@ if [[ ${existing_jdk_issues} = "" ]]; then
-s \ -s \
-u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \ -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \
-H "Content-type:application/json" \ -H "Content-type:application/json" \
-d "{\"title\":\"${ISSUE_TITLE}\",\"body\": \"${latest}\",\"labels\":[\"status: waiting-for-triage\",\"type: task\"]}" \ -d "{\"title\":\"${ISSUE_TITLE}\",\"milestone\":\"${milestone_number}\",\"body\": \"${latest}\",\"labels\":[\"status: waiting-for-triage\",\"type: task\"]}" \
-f \ -f \
-X \ -X \
POST "https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues" > /dev/null || { echo "Failed to create issue" >&2; exit 1; } POST "https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues" > /dev/null || { echo "Failed to create issue" >&2; exit 1; }

@ -11,7 +11,8 @@ if [[ $current = $latest ]]; then
exit 0; exit 0;
fi fi
existing_tasks=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-buildmaster ) milestone_number=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/milestones\?state\=open | jq -c --arg MILESTONE "$MILESTONE" '.[] | select(.title==$MILESTONE)' | jq -r '.number')
existing_tasks=$( curl -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-buildmaster\&milestone\=${milestone_number} )
existing_upgrade_issues=$( echo "$existing_tasks" | jq -c --arg TITLE "$ISSUE_TITLE" '.[] | select(.title==$TITLE)' ) existing_upgrade_issues=$( echo "$existing_tasks" | jq -c --arg TITLE "$ISSUE_TITLE" '.[] | select(.title==$TITLE)' )
if [[ ${existing_upgrade_issues} = "" ]]; then if [[ ${existing_upgrade_issues} = "" ]]; then
@ -19,7 +20,7 @@ if [[ ${existing_upgrade_issues} = "" ]]; then
-s \ -s \
-u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \ -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \
-H "Content-type:application/json" \ -H "Content-type:application/json" \
-d "{\"title\":\"${ISSUE_TITLE}\",\"body\": \"Upgrade to ubuntu:${ubuntu}-${latest}\",\"labels\":[\"status: waiting-for-triage\",\"type: task\"]}" \ -d "{\"title\":\"${ISSUE_TITLE}\",\"milestone\":\"${milestone_number}\",\"body\": \"Upgrade to ubuntu:${ubuntu}-${latest}\",\"labels\":[\"status: waiting-for-triage\",\"type: task\"]}" \
-f \ -f \
-X \ -X \
POST "https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues" > /dev/null || { echo "Failed to create issue" >&2; exit 1; } POST "https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues" > /dev/null || { echo "Failed to create issue" >&2; exit 1; }

@ -9,5 +9,6 @@ outputs:
params: params:
GITHUB_REPO: GITHUB_REPO:
GITHUB_ORGANIZATION: GITHUB_ORGANIZATION:
MILESTONE:
run: run:
path: git-repo/ci/scripts/detect-docker-updates.sh path: git-repo/ci/scripts/detect-docker-updates.sh

@ -8,5 +8,6 @@ params:
GITHUB_PASSWORD: GITHUB_PASSWORD:
GITHUB_USERNAME: GITHUB_USERNAME:
JDK_VERSION: JDK_VERSION:
MILESTONE:
run: run:
path: git-repo/ci/scripts/detect-jdk-updates.sh path: git-repo/ci/scripts/detect-jdk-updates.sh

@ -7,5 +7,6 @@ params:
GITHUB_ORGANIZATION: GITHUB_ORGANIZATION:
GITHUB_PASSWORD: GITHUB_PASSWORD:
GITHUB_USERNAME: GITHUB_USERNAME:
MILESTONE:
run: run:
path: git-repo/ci/scripts/detect-ubuntu-image-updates.sh path: git-repo/ci/scripts/detect-ubuntu-image-updates.sh

Loading…
Cancel
Save