Release workflow simplifications (#356)
* Release workflow simplifications * doc * Sync * Remove prerelease support * More * Sync * Fix
This commit is contained in:
parent
e999efdf18
commit
d5650937ea
|
|
@ -23,6 +23,9 @@ else
|
|||
range="v$major.$((minor - 1)).0..HEAD"
|
||||
fi
|
||||
|
||||
echo "## Unreleased"
|
||||
echo
|
||||
|
||||
declare -A component_names=()
|
||||
component_names["aws-xray/"]="AWS X-Ray"
|
||||
component_names["consistent-sampling/"]="Consistent sampling"
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@
|
|||
|
||||
# this should be run on the release branch
|
||||
|
||||
# NOTE if you need to run this script locally, you will need to first:
|
||||
# git fetch upstream main
|
||||
# git push origin upstream/main:main
|
||||
# export GITHUB_REPOSITORY=open-telemetry/opentelemetry-java-contrib
|
||||
|
||||
from_version=$1
|
||||
|
||||
# get the date of the first commit that was not in the from_version
|
||||
|
|
@ -80,4 +85,5 @@ echo $contributors1 $contributors2 \
|
|||
| grep -v linux-foundation-easycla \
|
||||
| grep -v github-actions \
|
||||
| grep -v dependabot \
|
||||
| grep -v opentelemetry-java-bot \
|
||||
| sed 's/^/@/'
|
||||
|
|
|
|||
|
|
@ -10,6 +10,12 @@ jobs:
|
|||
backport:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: |
|
||||
if [[ ! $GITHUB_REF_NAME =~ ^release/v[0-9]+\.[0-9]+\.x$ ]]; then
|
||||
echo this workflow should only be run against release branches
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# history is needed to run git cherry-pick below
|
||||
|
|
@ -21,12 +27,11 @@ jobs:
|
|||
- name: Create pull request
|
||||
env:
|
||||
NUMBER: ${{ github.event.inputs.number }}
|
||||
# not using the default GITHUB_TOKEN because pull requests generated by it do not run any workflows
|
||||
# not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
run: |
|
||||
commit=$(gh pr view $NUMBER --json mergeCommit --jq .mergeCommit.oid)
|
||||
title=$(gh pr view $NUMBER --json title --jq .title)
|
||||
url=$(gh pr view $NUMBER --json url --jq .url)
|
||||
|
||||
branch="backport-${NUMBER}-to-${GITHUB_REF_NAME//\//-}"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
name: Merge change log to main
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
create-pull-request:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# this workflow is run against the release branch (see usage of GITHUB_REF_NAME below)
|
||||
# but it is creating a pull request against main
|
||||
ref: main
|
||||
# history is needed to run format-patch below
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set git user
|
||||
run: .github/scripts/set-git-user.sh
|
||||
|
||||
# this will fail if there have been conflicting change log updates introduced in main
|
||||
- name: Create pull request against main
|
||||
env:
|
||||
# not using the default GITHUB_TOKEN because pull requests generated by it do not run any workflows
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
run: |
|
||||
message="Merge change log updates from $GITHUB_REF_NAME"
|
||||
body="Merge change log updates from \`$GITHUB_REF_NAME\`."
|
||||
branch="merge-change-log-updates-from-${GITHUB_REF_NAME//\//-}"
|
||||
|
||||
# perform a 3-way merge of a single file
|
||||
git format-patch --stdout HEAD..origin/$GITHUB_REF_NAME CHANGELOG.md | git apply --3way
|
||||
|
||||
git commit -a -m "$message"
|
||||
git push origin HEAD:$branch
|
||||
gh pr create --title "$message" \
|
||||
--body "$body" \
|
||||
--head $branch \
|
||||
--base main
|
||||
|
|
@ -8,10 +8,21 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- run: |
|
||||
if [[ ! $GITHUB_REF_NAME =~ ^release/v[0-9]+\.[0-9]+\.x$ ]]; then
|
||||
echo this workflow should only be run against release branches
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep --quiet "^## Unreleased$" CHANGELOG.md; then
|
||||
echo the change log is missing an \"Unreleased\" section
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Set environment variables
|
||||
run: |
|
||||
version=$(.github/scripts/get-version.sh)
|
||||
if [[ $version =~ ([0-9]+\.[0-9]+)\.([0-9]+) ]]; then
|
||||
if [[ $version =~ ^([0-9]+\.[0-9]+)\.([0-9]+)$ ]]; then
|
||||
major_minor="${BASH_REMATCH[1]}"
|
||||
patch="${BASH_REMATCH[2]}"
|
||||
else
|
||||
|
|
@ -20,22 +31,20 @@ jobs:
|
|||
fi
|
||||
echo "VERSION=$major_minor.$((patch + 1))" >> $GITHUB_ENV
|
||||
|
||||
- name: Check change log has been updated
|
||||
run: |
|
||||
if ! grep --quiet "^## Version $VERSION" CHANGELOG.md; then
|
||||
echo the change log needs to be updated
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Update version
|
||||
run: .github/scripts/update-version.sh $VERSION
|
||||
|
||||
- name: Update the change log with the approximate release date
|
||||
run: |
|
||||
date=$(date "+%Y-%m-%d")
|
||||
sed -Ei "s/^## Unreleased$/## Version $VERSION ($date)/" CHANGELOG.md
|
||||
|
||||
- name: Set git user
|
||||
run: .github/scripts/set-git-user.sh
|
||||
|
||||
- name: Create pull request
|
||||
env:
|
||||
# not using the default GITHUB_TOKEN because pull requests generated by it do not run any workflows
|
||||
# not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
run: |
|
||||
message="Prepare release $VERSION"
|
||||
|
|
|
|||
|
|
@ -9,10 +9,13 @@ jobs:
|
|||
- uses: actions/checkout@v3
|
||||
|
||||
- run: |
|
||||
version=$(.github/scripts/get-version.sh)
|
||||
version=${version//-SNAPSHOT/}
|
||||
if ! grep --quiet "^## Version $version" CHANGELOG.md; then
|
||||
echo the change log needs to be updated
|
||||
if [[ $GITHUB_REF_NAME != main ]]; then
|
||||
echo this workflow should only be run against main
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep --quiet "^## Unreleased$" CHANGELOG.md; then
|
||||
echo the change log is missing an \"Unreleased\" section
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
@ -23,11 +26,15 @@ jobs:
|
|||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Create release branch
|
||||
id: create-release-branch
|
||||
run: |
|
||||
version=$(.github/scripts/get-version.sh)
|
||||
version=${version//-SNAPSHOT/}
|
||||
release_branch_name=$(echo $version | sed -E 's/([0-9]+)\.([0-9]+)\.0/release\/v\1.\2.x/')
|
||||
if [[ $version =~ ^([0-9]+)\.([0-9]+)\.0$ ]]; then
|
||||
release_branch_name=$(echo $version | sed -E 's/([0-9]+)\.([0-9]+)\.0/release\/v\1.\2.x/')
|
||||
else
|
||||
echo "unexpected version: $version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git push origin HEAD:$release_branch_name
|
||||
|
||||
|
|
@ -37,12 +44,17 @@ jobs:
|
|||
- name: Update version
|
||||
run: .github/scripts/update-version.sh $VERSION
|
||||
|
||||
- name: Update the change log with the approximate release date
|
||||
run: |
|
||||
date=$(date "+%Y-%m-%d")
|
||||
sed -Ei "s/^## Unreleased$/## Version $VERSION ($date)/" CHANGELOG.md
|
||||
|
||||
- name: Set git user
|
||||
run: .github/scripts/set-git-user.sh
|
||||
|
||||
- name: Create pull request against the release branch
|
||||
env:
|
||||
# not using the default GITHUB_TOKEN because pull requests generated by it do not run any workflows
|
||||
# not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
run: |
|
||||
message="Prepare release $VERSION"
|
||||
|
|
@ -64,26 +76,33 @@ jobs:
|
|||
- name: Set environment variables
|
||||
run: |
|
||||
version=$(.github/scripts/get-version.sh)
|
||||
if [[ $version =~ ([0-9]+)\.([0-9]+)\.0 ]]; then
|
||||
version=${version//-SNAPSHOT/}
|
||||
if [[ $version =~ ^([0-9]+)\.([0-9]+)\.0$ ]]; then
|
||||
major="${BASH_REMATCH[1]}"
|
||||
minor="${BASH_REMATCH[2]}"
|
||||
next_version="$major.$((minor + 1)).0"
|
||||
else
|
||||
echo "unexpected version: $version"
|
||||
exit 1
|
||||
fi
|
||||
next_version="$major.$((minor + 1)).0"
|
||||
next_version="${next_version}-SNAPSHOT"
|
||||
echo "NEXT_VERSION=$next_version" >> $GITHUB_ENV
|
||||
echo "NEXT_VERSION=${next_version}-SNAPSHOT" >> $GITHUB_ENV
|
||||
echo "VERSION=$version" >> $GITHUB_ENV
|
||||
|
||||
- name: Update version
|
||||
run: .github/scripts/update-version.sh $NEXT_VERSION
|
||||
|
||||
- name: Update the change log on main
|
||||
run: |
|
||||
# the actual release date on main will be updated at the end of the release workflow
|
||||
date=$(date "+%Y-%m-%d")
|
||||
sed -Ei "s/^## Unreleased$/## Unreleased\n\n## Version $VERSION ($date)/" CHANGELOG.md
|
||||
|
||||
- name: Set git user
|
||||
run: .github/scripts/set-git-user.sh
|
||||
|
||||
- name: Create pull request against main
|
||||
env:
|
||||
# not using the default GITHUB_TOKEN because pull requests generated by it do not run any workflows
|
||||
# not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
run: |
|
||||
message="Update version to $NEXT_VERSION"
|
||||
|
|
|
|||
|
|
@ -3,64 +3,88 @@ on:
|
|||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
assemble:
|
||||
uses: ./.github/workflows/reusable-assemble.yml
|
||||
|
||||
- name: Set up JDK for running Gradle
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 17
|
||||
test:
|
||||
uses: ./.github/workflows/reusable-test.yml
|
||||
|
||||
- uses: gradle/gradle-build-action@v2
|
||||
name: Build
|
||||
with:
|
||||
arguments: build
|
||||
# test-latest-deps is intentionally not included in the release workflows
|
||||
# because any time a new library version is released to maven central
|
||||
# it can fail due to test code incompatibility with the new library version,
|
||||
# or due to slight changes in emitted telemetry
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
name: Save unit test results
|
||||
if: always()
|
||||
with:
|
||||
name: test-results
|
||||
path: jmx-metrics/build/reports/tests/test
|
||||
smoke-test:
|
||||
uses: ./.github/workflows/reusable-smoke-test.yml
|
||||
|
||||
integration-test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
# muzzle is intentionally not included in the release workflows
|
||||
# because any time a new library version is released to maven central it can fail,
|
||||
# and this is not a reason to hold up the release
|
||||
|
||||
- name: Set up JDK for running Gradle
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 17
|
||||
gradle-plugins:
|
||||
uses: ./.github/workflows/reusable-gradle-plugins.yml
|
||||
|
||||
- uses: gradle/gradle-build-action@v2
|
||||
name: Integration test
|
||||
with:
|
||||
arguments: integrationTest
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
name: Save integration test results
|
||||
if: always()
|
||||
with:
|
||||
name: integration-test-results
|
||||
path: jmx-metrics/build/reports/tests/integrationTest
|
||||
examples:
|
||||
uses: ./.github/workflows/reusable-examples.yml
|
||||
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- build
|
||||
- integration-test
|
||||
- assemble
|
||||
- test
|
||||
- smoke-test
|
||||
- gradle-plugins
|
||||
- examples
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: |
|
||||
if [[ $GITHUB_REF_NAME != release/* ]]; then
|
||||
echo the release workflow should only be run against release branches
|
||||
echo this workflow should only be run against release branches
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set environment variables
|
||||
run: |
|
||||
version=$(.github/scripts/get-version.sh)
|
||||
if [[ $version =~ ^([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then
|
||||
major="${BASH_REMATCH[1]}"
|
||||
minor="${BASH_REMATCH[2]}"
|
||||
patch="${BASH_REMATCH[3]}"
|
||||
else
|
||||
echo "unexpected version: $version"
|
||||
exit 1
|
||||
fi
|
||||
if [[ $patch == 0 ]]; then
|
||||
if [[ $minor == 0 ]]; then
|
||||
prior_major=$((major - 1))
|
||||
prior_minor=$(grep -Po "^## Version $prior_major.\K[0-9]+" CHANGELOG.md | head -1)
|
||||
prior_version="$prior_major.$prior_minor"
|
||||
else
|
||||
prior_version="$major.$((minor - 1)).0"
|
||||
fi
|
||||
else
|
||||
prior_version="$major.$minor.$((patch - 1))"
|
||||
fi
|
||||
echo "VERSION=$version" >> $GITHUB_ENV
|
||||
echo "PRIOR_VERSION=$prior_version" >> $GITHUB_ENV
|
||||
|
||||
# check out main branch to verify there won't be problems with merging the change log
|
||||
# at the end of this workflow
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: main
|
||||
|
||||
- run: |
|
||||
if [[ $VERSION == *.0 ]]; then
|
||||
# not making a patch release
|
||||
if ! grep --quiet "^## Version $VERSION " CHANGELOG.md; then
|
||||
echo the pull request generated by prepare-release-branch.yml needs to be merged first
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# back to the release branch
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# tags are needed for the generate-release-contributors.sh script
|
||||
|
|
@ -82,30 +106,19 @@ jobs:
|
|||
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
|
||||
|
||||
- name: Set environment variables
|
||||
run: |
|
||||
version=$(.github/scripts/get-version.sh)
|
||||
if [[ $version =~ ([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then
|
||||
major="${BASH_REMATCH[1]}"
|
||||
minor="${BASH_REMATCH[2]}"
|
||||
patch="${BASH_REMATCH[3]}"
|
||||
else
|
||||
echo "unexpected version: $version"
|
||||
exit 1
|
||||
fi
|
||||
if [[ $patch == 0 ]]; then
|
||||
if [[ $minor == 0 ]]; then
|
||||
prior_major=$((major - 1))
|
||||
prior_minor=$(grep -Po "^## Version $prior_major.\K([0-9]+)" CHANGELOG.md | head -1)
|
||||
prior_version="$prior_major.$prior_minor"
|
||||
else
|
||||
prior_version="$major.$((minor - 1)).0"
|
||||
fi
|
||||
else
|
||||
prior_version="$major.$minor.$((patch - 1))"
|
||||
fi
|
||||
echo "VERSION=$version" >> $GITHUB_ENV
|
||||
echo "PRIOR_VERSION=$prior_version" >> $GITHUB_ENV
|
||||
- name: Build and publish gradle plugins
|
||||
uses: gradle/gradle-build-action@v2
|
||||
env:
|
||||
SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
|
||||
SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }}
|
||||
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
|
||||
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
|
||||
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
|
||||
with:
|
||||
# Don't use publishToSonatype since we don't want to publish the marker artifact
|
||||
arguments: build publishPlugins publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository
|
||||
build-root-directory: gradle-plugins
|
||||
|
||||
- name: Generate release notes
|
||||
env:
|
||||
|
|
@ -124,17 +137,21 @@ jobs:
|
|||
EOF
|
||||
fi
|
||||
|
||||
# CHANGELOG_SECTION.md is also used at the end of the release workflow
|
||||
# for copying the change log updates to main
|
||||
sed -n "0,/^## Version $VERSION /d;/^## Version /q;p" CHANGELOG.md \
|
||||
> /tmp/CHANGELOG_SECTION.md
|
||||
|
||||
# the complex perl regex is needed because markdown docs render newlines as soft wraps
|
||||
# while release notes render them as line breaks
|
||||
sed -n "0,/^## Version $VERSION/d;/^## Version /q;p" CHANGELOG.md \
|
||||
| perl -0pe 's/(?<!\n)\n *(?!\n)(?![-*] )(?![1-9]+\. )/ /g' \
|
||||
perl -0pe 's/(?<!\n)\n *(?!\n)(?![-*] )(?![1-9]+\. )/ /g' /tmp/CHANGELOG_SECTION.md \
|
||||
>> /tmp/release-notes.txt
|
||||
|
||||
# conditional block not indented because of the heredoc
|
||||
if [[ $VERSION == *.0 ]]; then
|
||||
cat >> /tmp/release-notes.txt << EOF
|
||||
|
||||
### 🙇 Thank you
|
||||
|
||||
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
|
||||
|
||||
EOF
|
||||
|
|
@ -154,27 +171,117 @@ jobs:
|
|||
v$VERSION \
|
||||
opentelemetry-jmx-metrics.jar
|
||||
|
||||
- name: Update the change log with the release date
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# the step below is creating a pull request against main
|
||||
ref: main
|
||||
|
||||
- name: Copy change log updates to main
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
date=$(gh release view v$VERSION --json publishedAt --jq .publishedAt | sed 's/T.*//')
|
||||
sed -Ei "s/## Version $VERSION .*/## Version $VERSION ($date)/" CHANGELOG.md
|
||||
if [[ $VERSION == *.0 ]]; then
|
||||
# this was not a patch release, so the version exists already in the CHANGELOG.md
|
||||
|
||||
# update the release date
|
||||
date=$(gh release view v$VERSION --json publishedAt --jq .publishedAt | sed 's/T.*//')
|
||||
sed -Ei "s/## Version $VERSION .*/## Version $VERSION ($date)/" CHANGELOG.md
|
||||
|
||||
# the entries are copied over from the release branch to support workflows
|
||||
# where change log entries may be updated after preparing the release branch
|
||||
|
||||
# copy the portion above the release, up to and including the heading
|
||||
sed -n "0,/^## Version $VERSION ($date)/p" CHANGELOG.md > /tmp/CHANGELOG.md
|
||||
|
||||
# copy the release notes
|
||||
cat /tmp/CHANGELOG_SECTION.md >> /tmp/CHANGELOG.md
|
||||
|
||||
# copy the portion below the release
|
||||
sed -n "0,/^## Version $VERSION /d;0,/^## Version /{/^## Version/!d};p" CHANGELOG.md \
|
||||
>> /tmp/CHANGELOG.md
|
||||
|
||||
# update the real CHANGELOG.md
|
||||
cp /tmp/CHANGELOG.md CHANGELOG.md
|
||||
else
|
||||
# this was a patch release, so the version does not exist already in the CHANGELOG.md
|
||||
|
||||
# copy the portion above the top-most release, not including the heading
|
||||
sed -n "0,/^## Version /{ /^## Version /!p }" CHANGELOG.md > /tmp/CHANGELOG.md
|
||||
|
||||
# add the heading
|
||||
date=$(gh release view v$VERSION --json publishedAt --jq .publishedAt | sed 's/T.*//')
|
||||
echo "## Version $VERSION ($date)" >> /tmp/CHANGELOG.md
|
||||
|
||||
# copy the release notes
|
||||
cat /tmp/CHANGELOG_SECTION.md >> /tmp/CHANGELOG.md
|
||||
|
||||
# copy the portion starting from the top-most release
|
||||
sed -n "/^## Version /,\$p" CHANGELOG.md >> /tmp/CHANGELOG.md
|
||||
|
||||
# update the real CHANGELOG.md
|
||||
cp /tmp/CHANGELOG.md CHANGELOG.md
|
||||
fi
|
||||
|
||||
- name: Set git user
|
||||
run: .github/scripts/set-git-user.sh
|
||||
|
||||
- name: Create pull request against the release branch
|
||||
- name: Create pull request against main
|
||||
env:
|
||||
# not using the default GITHUB_TOKEN because pull requests generated by it do not run any workflows
|
||||
# not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
run: |
|
||||
message="Add the release date for $VERSION to the change log"
|
||||
branch="add-release-date-for-${VERSION}"
|
||||
message="Copy change log updates from $GITHUB_REF_NAME"
|
||||
body="Copy log updates from \`$GITHUB_REF_NAME\`."
|
||||
branch="copy-change-log-updates-from-${GITHUB_REF_NAME//\//-}"
|
||||
|
||||
if [[ $VERSION == *.0 ]]; then
|
||||
if git diff --quiet; then
|
||||
echo there are no updates needed to the change log on main, not creating pull request
|
||||
exit 0 # success
|
||||
fi
|
||||
fi
|
||||
|
||||
git commit -a -m "$message"
|
||||
git push origin HEAD:$branch
|
||||
gh pr create --title "[$GITHUB_REF_NAME] $message" \
|
||||
--body "$message." \
|
||||
gh pr create --title "$message" \
|
||||
--body "$body" \
|
||||
--head $branch \
|
||||
--base $GITHUB_REF_NAME
|
||||
--base main
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: opentelemetry-java-bot/opentelemetry-operator
|
||||
# this is the personal access token used for "git push" below
|
||||
token: ${{ secrets.BOT_TOKEN }}
|
||||
|
||||
- name: Initialize pull request branch
|
||||
run: |
|
||||
git remote add upstream https://github.com/open-telemetry/opentelemetry-operator.git
|
||||
git fetch upstream
|
||||
git checkout -b update-opentelemetry-javaagent-to-${VERSION} upstream/main
|
||||
|
||||
- name: Update version
|
||||
run: |
|
||||
echo $VERSION > autoinstrumentation/java/version.txt
|
||||
|
||||
- name: Set git user
|
||||
run: .github/scripts/set-git-user.sh
|
||||
|
||||
- name: Create pull request against opentelemetry-operator
|
||||
env:
|
||||
# this is the personal access token used for "gh pr create" below
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
run: |
|
||||
message="Update the javaagent version to $VERSION"
|
||||
body="Update the javaagent version to \`$VERSION\`."
|
||||
|
||||
# gh pr create doesn't have a way to explicitly specify different head and base
|
||||
# repositories currently, but it will implicitly pick up the head from a different
|
||||
# repository if you set up a tracking branch
|
||||
|
||||
git commit -a -m "$message"
|
||||
git push --set-upstream origin update-opentelemetry-javaagent-to-${VERSION}
|
||||
gh pr create --title "$message" \
|
||||
--body "$body" \
|
||||
--repo open-telemetry/opentelemetry-operator \
|
||||
--base main
|
||||
|
|
|
|||
48
RELEASING.md
48
RELEASING.md
|
|
@ -14,19 +14,19 @@ as the last step, which publishes a snapshot build to
|
|||
|
||||
* Close the release milestone if there is one.
|
||||
* Merge a pull request to `main` updating the `CHANGELOG.md`.
|
||||
* The heading for the release should include the release version but not the release date, e.g.
|
||||
`## Version 1.9.0 (unreleased)`.
|
||||
* Use `.github/scripts/draft-change-log-entries.sh` as a starting point for writing the change
|
||||
log.
|
||||
* The heading for the unreleased entries should be `## Unreleased`.
|
||||
* Use `.github/scripts/draft-change-log-entries.sh` as a starting point for writing the change log.
|
||||
* Run the [Prepare release branch workflow](https://github.com/open-telemetry/opentelemetry-java-contrib/actions/workflows/prepare-release-branch.yml).
|
||||
* Review and merge the two pull requests that it creates
|
||||
(one is targeted to the release branch and one is targeted to the `main` branch).
|
||||
* Press the "Run workflow" button, and leave the default branch `main` selected.
|
||||
* Review and merge the two pull requests that it creates
|
||||
(one is targeted to the release branch and one is targeted to `main`).
|
||||
|
||||
## Preparing a new patch release
|
||||
|
||||
All patch releases should include only bug-fixes, and must avoid adding/modifying the public APIs.
|
||||
|
||||
In general, patch releases are only made for regressions, memory leaks and deadlocks.
|
||||
In general, patch releases are only made for regressions, security vulnerabilities, memory leaks
|
||||
and deadlocks.
|
||||
|
||||
* Backport pull request(s) to the release branch.
|
||||
* Run the [Backport workflow](https://github.com/open-telemetry/opentelemetry-java-contrib/actions/workflows/backport.yml).
|
||||
|
|
@ -35,33 +35,19 @@ In general, patch releases are only made for regressions, memory leaks and deadl
|
|||
then click the "Run workflow" button below that.
|
||||
* Review and merge the backport pull request that it generates.
|
||||
* 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.
|
||||
`## Version 1.9.1 (unreleased)`.
|
||||
* The heading for the unreleased entries should be `## Unreleased`.
|
||||
* Run the [Prepare patch release workflow](https://github.com/open-telemetry/opentelemetry-java-contrib/actions/workflows/prepare-patch-release.yml).
|
||||
* 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.
|
||||
* Review and merge the pull request that it creates.
|
||||
* Review and merge the pull request that it creates for updating the version.
|
||||
|
||||
## Making the release
|
||||
|
||||
Run the [Release workflow](https://github.com/open-telemetry/opentelemetry-java-contrib/actions/workflows/release.yml).
|
||||
|
||||
* 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.
|
||||
* This workflow will publish the artifacts to maven central and will publish a GitHub release
|
||||
with release notes based on the change log and with the jmx metrics jar attached.
|
||||
* Review and merge the pull request that the release workflow creates against the release branch
|
||||
which adds the release date to the change log.
|
||||
|
||||
## After the release
|
||||
|
||||
Run the [Merge change log to main workflow](https://github.com/open-telemetry/opentelemetry-java-contrib/actions/workflows/merge-change-log-to-main.yml).
|
||||
|
||||
* 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.
|
||||
* This will create a pull request that merges the change log updates from the release branch
|
||||
back to main.
|
||||
* Review and merge the pull request that it creates.
|
||||
* This workflow will fail if there have been conflicting change log updates introduced in main,
|
||||
in which case you will need to merge the change log updates manually and send your own pull
|
||||
request against main.
|
||||
* Run the [Release workflow](https://github.com/open-telemetry/opentelemetry-java-contrib/actions/workflows/release.yml).
|
||||
* 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.
|
||||
* This workflow will publish the artifacts to maven central and will publish a GitHub release
|
||||
with release notes based on the change log and with the jmx metrics jar attached.
|
||||
* Review and merge the pull request that it creates for updating the change log in main
|
||||
(note that if this is not a patch release then the change log on main may already be up-to-date,
|
||||
in which case no pull request will be created).
|
||||
|
|
|
|||
Loading…
Reference in New Issue