Release a new version #27
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release a new version of Akkurate | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'The version number to use (ex: 1.22.3)' | |
required: true | |
type: string | |
env: | |
RELEASE_VERSION: ${{ inputs.version }} | |
jobs: | |
create-release-pr: | |
name: Create a Pull Request for the release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install chan CLI | |
run: npm install -g @geut/chan | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
# This token allows committing modifications on workflow files (read/write on Contents and Workflows permissions) | |
token: ${{ secrets.RELEASE_TOKEN }} | |
- name: Write a new release to CHANGELOG.md | |
run: chan release $RELEASE_VERSION --release-prefix="" | |
- name: Update Akkurate's version in build files | |
run: | | |
echo 'version = "'$RELEASE_VERSION'"' > ./buildSrc/src/main/kotlin/akkurate.version.gradle.kts; | |
sed -ri 's|CONFIG_JSON_VERSION *:.*|CONFIG_JSON_VERSION: '$RELEASE_VERSION'|g' ./.github/workflows/deploy-website.yml; | |
sed -ri 's|<var.* name="version".*|<var name="version" value="'$RELEASE_VERSION'"/>|g' ./documentation/v.list; | |
sed -ri 's|<instance.* src="akkurate.tree".*|<instance src="akkurate.tree" version="'$RELEASE_VERSION'"/>|g' ./documentation/writerside.cfg; | |
- name: Commit and push | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: release ${{ inputs.version }} | |
branch: release/${{ inputs.version }} | |
create_branch: true | |
commit_author: Johann Pardanaud <[email protected]> | |
tagging_message: ${{ inputs.version }} | |
- name: Create a draft release | |
env: | |
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }} | |
# The tail command is used to remove an unnecessary title from the changelog. | |
run: chan show $RELEASE_VERSION | tail -n +2 | gh release create $RELEASE_VERSION --title "Akkurate $RELEASE_VERSION" --draft --notes-file - | |
- name: Create a Pull Request | |
env: | |
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }} | |
run: gh pr create --assignee nesk --base main --head release/$RELEASE_VERSION --title "Release $RELEASE_VERSION" --body "New release" -d | |
publish: | |
name: Publish to Maven Central Repository | |
runs-on: macos-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up JDK 8 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: 8 | |
- name: Validate Gradle wrapper | |
uses: gradle/actions/wrapper-validation@v3 | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v4 | |
- name: Publish to Maven Central Repository | |
env: | |
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEY }} | |
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }} | |
SONATYPE_URL: ${{ vars.SONATYPE_URL }} | |
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} | |
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} | |
run: ./gradlew publish |