diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c6269a3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +# This workflow will perform release of this project when a tag is pushed. + +name: release + +on: + push: + tags: [ "v*" ] + +jobs: + release: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Java + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + + # Configure Gradle for optimal use in GiHub Actions, including caching of downloaded dependencies. + # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md + - name: Setup Gradle + uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2 + + - name: Clean + run: ./gradlew clean + + - name: Assemble + run: ./gradlew assemble + + - name: Release + run: ./gradlew jreleaserFullRelease + env: + JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + JRELEASER_GITHUB_USERNAME: ${{ github.actor }} + JRELEASER_GITHUB_EMAIL: ${{ github.actor }}@users.noreply.github.com + JRELEASER_GPG_PASSPHRASE : ${{ secrets.JRELEASER_GPG_PASSPHRASE }} + JRELEASER_GPG_SECRET_KEY : ${{ secrets.JRELEASER_GPG_SECRET_KEY }} + JRELEASER_GPG_PUBLIC_KEY : ${{ secrets.JRELEASER_GPG_PUBLIC_KEY }} + + # Persist jreleaser logs + - name: JReleaser logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: jreleaser-release + path: | + build/jreleaser/trace.log + build/jreleaser/output.properties \ No newline at end of file diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000..d6b841c --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,9 @@ +# Project release process + +This project can be released by creating and pushing an annotated tag to the repository. +The tag should be named `vX.Y.Z` where `X.Y.Z` is the version number of the release. + +```shell +git tag -a v1.0.0 -m "Release v1.0.0" +git push origin v1.0.0 +``` \ No newline at end of file