Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Release workflow #2236

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions .github/workflows/prepare-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: SmallRye Prepare Release

on:
pull_request:
types: [ closed ]
paths:
- '.github/project.yml'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: write

jobs:
prepare-gradle:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: git author
run: |
git config --global user.name "SmallRye CI"
git config --global user.email "smallrye@googlegroups.com"

- uses: radcortez/project-metadata-action@main
name: retrieve project metadata
id: metadata
with:
github-token: ${{secrets.GITHUB_TOKEN}}
metadata-file-path: '.github/project.yml'

- name: Prepare Gradle
run: |
echo "version=${{steps.metadata.outputs.current-version}}" > tools/gradle-plugin/gradle.properties
git add tools/gradle-plugin/gradle.properties
git commit -m "Update Gradle plugin version"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to push the changes somewhere, the prepare-release job below won't execute in the same context as this job

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd recommend having a hook to perform the changes you need in the prepare-release.yml, like in https://github.com/quarkiverse/.github/blob/main/.github/workflows/prepare-release.yml#L118-L124

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we need to do a git push there.

Then, the job below would just check out the new commit.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For git push to work, it depends on the ruleset configured in this repository too (I don't know if the current user is able to bypass the branch restrictions). In any case, I think it would be better if it used the GitHub App token, as in
https://github.com/smallrye/.github/blob/main/.github/workflows/prepare-release.yml#L35-L40

git push

prepare-release:
needs: [prepare-gradle]
name: Prepare Release
if: ${{ github.event.pull_request.merged == true}}
uses: smallrye/.github/.github/workflows/prepare-release.yml@main
secrets: inherit
30 changes: 30 additions & 0 deletions .github/workflows/publish-gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Publish Gradle

on:
workflow_call:
inputs:
version:
required: true
description: Tag version to perform release
type: string

jobs:
publish-gradle:
name: Publish Gradle
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
name: checkout ${{inputs.version}}
with:
ref: ${{inputs.version}}

- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 11

- name: gradle release ${{inputs.version}}
run: |
mkdir -p ~/.gradle ; echo -e "gradle.publish.key=${{secrets.GRADLE_PUBLISH_KEY}}\ngradle.publish.secret=${{secrets.GRADLE_PUBLISH_SECRET}}" > ~/.gradle/gradle.properties
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't you set them as environment variables?

cd tools/gradle-plugin && gradle publishPlugins
99 changes: 32 additions & 67 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,71 +1,36 @@
name: SmallRye Release

run-name: Perform ${{github.event.inputs.tag || github.ref_name}} Release
on:
pull_request:
types: [closed]
paths:
- '.github/project.yml'
push:
tags:
- '*'
workflow_dispatch:
inputs:
tag:
description: 'Tag to release'
required: true

permissions:
attestations: write
id-token: write
# Needed for the publish-* workflows
contents: write

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
release:
runs-on: ubuntu-latest
name: release
if: ${{github.event.pull_request.merged == true}}
env:
GITHUB_TOKEN: ${{secrets.RELEASE_TOKEN}}

steps:
- uses: radcortez/project-metadata-action@main
name: retrieve project metadata
id: metadata
with:
github-token: ${{secrets.GITHUB_TOKEN}}
metadata-file-path: '.github/project.yml'

- uses: actions/checkout@v2
with:
token: ${{secrets.RELEASE_TOKEN}}

- uses: actions/setup-java@v1.4.3
with:
java-version: 17
server-id: 'oss.sonatype'
server-username: 'MAVEN_DEPLOY_USERNAME'
server-password: 'MAVEN_DEPLOY_TOKEN'
gpg-private-key: ${{secrets.MAVEN_GPG_PRIVATE_KEY}}
gpg-passphrase: 'MAVEN_GPG_PASSPHRASE'

- name: Install graphviz
run: sudo apt install graphviz

- name: maven release ${{steps.metadata.outputs.current-version}}
env:
MAVEN_DEPLOY_USERNAME: ${{secrets.MAVEN_DEPLOY_USERNAME}}
MAVEN_DEPLOY_TOKEN: ${{secrets.MAVEN_DEPLOY_TOKEN}}
MAVEN_GPG_PASSPHRASE: ${{secrets.MAVEN_GPG_PASSPHRASE}}
run: |
java -version
git config --global user.name "SmallRye CI"
git config --global user.email "smallrye@googlegroups.com"
git checkout -b release
# update gradle version plugin
echo "version=${{steps.metadata.outputs.current-version}}" > tools/gradle-plugin/gradle.properties
git add tools/gradle-plugin/gradle.properties
git commit -m "Update Gradle plugin version"
mvn -X -e -B release:prepare -Prelease -DreleaseVersion=${{steps.metadata.outputs.current-version}} -DdevelopmentVersion=${{steps.metadata.outputs.next-version}}
git checkout ${{github.base_ref}}
git rebase release
mvn -X -e -B release:perform -Prelease
git push
git push --tags

- name: Gradle plugin release ${{steps.metadata.outputs.current-version}}
run: |
mkdir -p ~/.gradle ; echo -e "gradle.publish.key=${{secrets.GRADLE_PUBLISH_KEY}}\ngradle.publish.secret=${{secrets.GRADLE_PUBLISH_SECRET}}" > ~/.gradle/gradle.properties
cd tools/gradle-plugin && gradle publishPlugins

- uses: radcortez/milestone-release-action@main
name: milestone release
with:
github-token: ${{secrets.GITHUB_TOKEN}}
milestone-title: ${{steps.metadata.outputs.current-version}}
perform-release:
name: Perform Release
uses: smallrye/.github/.github/workflows/perform-release.yml@main
secrets: inherit
with:
version: ${{github.event.inputs.tag || github.ref_name}}

publish-gradle:
name: Publish Gradle
uses: ./.github/workflows/publish-gradle.yml
secrets: inherit
with:
version: ${{github.event.inputs.tag || github.ref_name}}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: SmallRye Pre Release
name: SmallRye Review Release

on:
pull_request:
Expand All @@ -18,6 +18,12 @@ jobs:
github-token: ${{secrets.GITHUB_TOKEN}}
metadata-file-path: '.github/project.yml'

- name: Validate version
if: contains(steps.metadata.outputs.current-version, 'SNAPSHOT')
run: |
echo '::error::Cannot release a SNAPSHOT version.'
exit 1
- uses: radcortez/milestone-review-action@main
name: milestone review
with:
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/update-milestone.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Update Milestone

on:
pull_request_target:
types: [closed]

jobs:
update:
runs-on: ubuntu-latest
name: update-milestone
if: ${{github.event.pull_request.merged == true}}

steps:
- uses: radcortez/milestone-set-action@main
name: milestone set
with:
github-token: ${{secrets.GITHUB_TOKEN}}
Loading