Commit 1a3df294 authored by Madhura Bhave's avatar Madhura Bhave

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
parent d5a3310b
...@@ -161,6 +161,7 @@ jobs: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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 @@ ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment