Skip to content

Commit

Permalink
Project Management: Milestone It: Read version from master branch pac…
Browse files Browse the repository at this point in the history
…kage.json (#16511)

* Project Management: Milestone It: Read version from master branch package.json

* Project Management: Milestone It: Exit neutral when skipping milestoned

* Project Management: Milestone It: Apply milestone only on master merges
  • Loading branch information
aduth authored Jul 10, 2019
1 parent 5756b29 commit 8995efd
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions .github/actions/milestone-it/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
#!/bin/bash
set -e

# 1. Determine if milestone already exists (don't replace one which has already
# 1. Proceed only when merge occurs to `master` base branch.

base=$(jq -r '.pull_request.base.ref' $GITHUB_EVENT_PATH)

if [ "$base" != 'master' ]; then
echo 'Milestones apply only to master merge. Aborting.'
exit 78;
fi

# 2. Determine if milestone already exists (don't replace one which has already
# been assigned).

pr=$(jq -r '.number' $GITHUB_EVENT_PATH)
Expand All @@ -16,18 +25,18 @@ current_milestone=$(

if [ "$current_milestone" != 'null' ]; then
echo 'Milestone already applied. Aborting.'
exit 1;
exit 78;
fi

# 2. Read current version.
# 3. Read current version.

version=$(jq -r '.version' package.json)
version=$(git show master:package.json | jq -r '.version')

IFS='.' read -ra parts <<< "$version"
major=${parts[0]}
minor=${parts[1]}

# 3. Determine next milestone.
# 4. Determine next milestone.

if [[ $minor == 9* ]]; then
major=$((major+1))
Expand All @@ -38,7 +47,7 @@ fi

milestone="Gutenberg $major.$minor"

# 4. Calculate next milestone due date, using a static reference of an earlier
# 5. Calculate next milestone due date, using a static reference of an earlier
# release (v5.0) as a reference point for the biweekly release schedule.

reference_major=5
Expand All @@ -48,7 +57,7 @@ num_versions_elapsed=$(((major-reference_major)*10+(minor-reference_minor)))
weeks=$((num_versions_elapsed*2))
due=$(date -u --iso-8601=seconds -d "$(date -d @$(echo $reference_date)) + $(echo $weeks) weeks")

# 5. Create milestone. This may fail for duplicates, which is expected and
# 6. Create milestone. This may fail for duplicates, which is expected and
# ignored.

curl \
Expand All @@ -59,7 +68,7 @@ curl \
-d "{\"title\":\"$milestone\",\"due_on\":\"$due\",\"description\":\"Tasks to be included in the $milestone plugin release.\"}" \
"https://api.github.com/repos/$GITHUB_REPOSITORY/milestones" > /dev/null

# 6. Find milestone number. This could be improved to allow for non-open status
# 7. Find milestone number. This could be improved to allow for non-open status
# or paginated results.

number=$(
Expand All @@ -70,7 +79,7 @@ number=$(
| jq ".[] | select(.title == \"$milestone\") | .number"
)

# 7. Assign pull request to milestone.
# 8. Assign pull request to milestone.

curl \
--silent \
Expand Down

0 comments on commit 8995efd

Please sign in to comment.