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

@ -24,7 +24,8 @@ if [[ $current = $latest ]]; then
exit 0;
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)' )
if [[ ${existing_jdk_issues} = "" ]]; then
@ -32,7 +33,7 @@ if [[ ${existing_jdk_issues} = "" ]]; then
-s \
-u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \
-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 \
-X \
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;
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)' )
if [[ ${existing_upgrade_issues} = "" ]]; then
@ -19,7 +20,7 @@ if [[ ${existing_upgrade_issues} = "" ]]; then
-s \
-u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \
-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 \
-X \
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:
GITHUB_REPO:
GITHUB_ORGANIZATION:
MILESTONE:
run:
path: git-repo/ci/scripts/detect-docker-updates.sh

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

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

Loading…
Cancel
Save