This commit is contained in:
Trask Stalnaker 2022-04-21 07:58:39 -07:00 committed by GitHub
parent 8f7124495f
commit dbf086589e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 14 deletions

View File

@ -3,14 +3,15 @@
# shellcheck disable=SC2016 # shellcheck disable=SC2016
# shellcheck disable=SC2086 # shellcheck disable=SC2086
from_version=$1 # this should be run on the release branch
to_version=$2
# get the date of the first commit on main that wasn't in the from_version from_version=$1
# get the date of the first commit that was not in the from_version
from=$(git log --reverse --pretty=format:"%cI" $from_version..HEAD | head -1) from=$(git log --reverse --pretty=format:"%cI" $from_version..HEAD | head -1)
# get the last commit on main that was in the to_version # get the last commit on main that was included in the release
to=$(git merge-base HEAD $to_version | xargs git log -1 --pretty=format:"%cI") to=$(git merge-base origin/main HEAD | xargs git log -1 --pretty=format:"%cI")
contributors1=$(gh api graphql --paginate -F q="repo:$GITHUB_REPOSITORY is:pr base:main is:merged merged:$from..$to" -f query=' contributors1=$(gh api graphql --paginate -F q="repo:$GITHUB_REPOSITORY is:pr base:main is:merged merged:$from..$to" -f query='
query($q: String!, $endCursor: String) { query($q: String!, $endCursor: String) {
@ -66,7 +67,7 @@ query($q: String!, $endCursor: String) {
} }
} }
' --jq '.data.search.edges.[].node.body' \ ' --jq '.data.search.edges.[].node.body' \
| grep -oE "#[0-9]{4,}|issues/[0-9]{4,}" \ | grep -oE "#[0-9]{4,}|$GITHUB_REPOSITORY/issues/[0-9]{4,}" \
| grep -oE "[0-9]{4,}" \ | grep -oE "[0-9]{4,}" \
| xargs -I{} gh issue view {} --json 'author,url' --jq '[.author.login,.url]' \ | xargs -I{} gh issue view {} --json 'author,url' --jq '[.author.login,.url]' \
| grep -v '/pull/' \ | grep -v '/pull/' \

View File

@ -66,13 +66,15 @@ jobs:
EOF EOF
fi fi
# the last complex regex is needed because markdown docs render newlines as soft wraps
# while release notes render them as line breaks
sed -n "/^## Version $VERSION/,/^## Version /p" CHANGELOG.md \ sed -n "/^## Version $VERSION/,/^## Version /p" CHANGELOG.md \
| tail -n +2 \ | tail -n +2 \
| head -n -1 \ | head -n -1 \
| perl -0pe 's/^\n+//g' \ | perl -0pe 's/^\n+//g' \
| perl -0pe 's/\n+$/\n/g' \ | perl -0pe 's/\n+$/\n/g' \
| sed -r "s,\[#([0-9]+)]\(https://github.com/$GITHUB_REPOSITORY/(pull|issues)/[0-9]+\),#\1," \ | sed -r "s,\[#([0-9]+)]\(https://github.com/$GITHUB_REPOSITORY/(pull|issues)/[0-9]+\),#\1," \
| perl -0pe 's/\n +/ /g' \ | perl -0pe 's/(?<!\n)\n *(?!\n)(?![-*] )(?![1-9]+\. )/ /g' \
>> release-notes.txt >> release-notes.txt
# conditional block not indented because of the heredoc # conditional block not indented because of the heredoc
@ -84,7 +86,7 @@ jobs:
EOF EOF
.github/scripts/generate-release-contributors.sh v$PRIOR_VERSION $GITHUB_REF_NAME >> release-notes.txt .github/scripts/generate-release-contributors.sh v$PRIOR_VERSION >> release-notes.txt
fi fi
- name: Create GitHub release - name: Create GitHub release

View File

@ -33,7 +33,7 @@ In general, patch releases are only made for regressions, memory leaks and deadl
* Review and merge the backport pull request that it generates. * Review and merge the backport pull request that it generates.
* Merge a pull request to the release branch updating the `CHANGELOG.md`. * Merge a pull request to the release branch updating the `CHANGELOG.md`.
* The heading for the release should include the release version but not the release date, e.g. * The heading for the release should include the release version but not the release date, e.g.
`## Version 1.9.0 (unreleased)`. `## Version 1.9.1 (unreleased)`.
* Run the [Prepare patch release workflow](https://github.com/open-telemetry/opentelemetry-java/actions/workflows/prepare-patch-release.yml). * Run the [Prepare patch release workflow](https://github.com/open-telemetry/opentelemetry-java/actions/workflows/prepare-patch-release.yml).
* Press the "Run workflow" button, then select the release branch from the dropdown list, * Press the "Run workflow" button, then select the release branch from the dropdown list,
e.g. `release/v1.9.x`, and click the "Run workflow" button below that. e.g. `release/v1.9.x`, and click the "Run workflow" button below that.

View File

@ -397,7 +397,7 @@ Here's some sample `RELEASING.md` documentation that goes with the automation be
* Review and merge the backport pull request that it generates. * Review and merge the backport pull request that it generates.
* Merge a pull request to the release branch updating the `CHANGELOG.md`. * Merge a pull request to the release branch updating the `CHANGELOG.md`.
* The heading for the release should include the release version but not the release date, e.g. * The heading for the release should include the release version but not the release date, e.g.
`## Version 1.9.0 (unreleased)`. `## Version 1.9.1 (unreleased)`.
* Run the [Prepare patch release workflow](https://github.com/open-telemetry/TODO/actions/workflows/prepare-patch-release.yml). * Run the [Prepare patch release workflow](https://github.com/open-telemetry/TODO/actions/workflows/prepare-patch-release.yml).
* Press the "Run workflow" button, then select the release branch from the dropdown list, * Press the "Run workflow" button, then select the release branch from the dropdown list,
e.g. `release/v1.9.x`, and click the "Run workflow" button below that. e.g. `release/v1.9.x`, and click the "Run workflow" button below that.
@ -682,14 +682,17 @@ jobs:
EOF EOF
fi fi
# TODO this is dependent on the conventions you follow in your CHANGELOG.md # TODO the initial sed range match is dependent on the your CHANGELOG.md format
# the last complex regex is needed because markdown docs render newlines as soft wraps
# while release notes render them as line breaks
sed -n "/^## Version $VERSION/,/^## Version /p" CHANGELOG.md \ sed -n "/^## Version $VERSION/,/^## Version /p" CHANGELOG.md \
| tail -n +2 \ | tail -n +2 \
| head -n -1 \ | head -n -1 \
| perl -0pe 's/^\n+//g' \ | perl -0pe 's/^\n+//g' \
| perl -0pe 's/\n+$/\n/g' \ | perl -0pe 's/\n+$/\n/g' \
| sed -r "s,\[#([0-9]+)]\(https://github.com/$GITHUB_REPOSITORY/(pull|issues)/[0-9]+\),#\1," \ | sed -r "s,\[#([0-9]+)]\(https://github.com/$GITHUB_REPOSITORY/(pull|issues)/[0-9]+\),#\1," \
| perl -0pe 's/\n +/ /g' \ | perl -0pe 's/(?<!\n)\n *(?!\n)(?![-*] )(?![1-9]+\. )/ /g' \
>> release-notes.txt >> release-notes.txt
``` ```
@ -749,8 +752,8 @@ For example to send a PR to notify/update another repository that a new release
as part of the release workflow. as part of the release workflow.
Note that the Personal Access Token used will need `workflow` (Update GitHub Action workflows) Note that the Personal Access Token used will need `workflow` (Update GitHub Action workflows)
permission since it will be updating the workflows of the origin repository when it pushes the permission since if workflows have been updated upstream it will be updating the workflows of the
branch and workflows have been updated upstream. origin repository when it pushes the branch.
```yaml ```yaml
- uses: actions/checkout@v3 - uses: actions/checkout@v3