From a9b9da2c5da99690a96888f4ab89bbdf6449cdcd Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Sun, 18 Feb 2024 23:17:15 +0100 Subject: [PATCH] Release update --- .github/workflows/release.yml | 102 ++++++++++++++++++++++------------ .github/workflows/trigger.yml | 85 ---------------------------- pom.xml | 54 +++++++++++++++--- 3 files changed, 113 insertions(+), 128 deletions(-) delete mode 100644 .github/workflows/trigger.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 126e408..c0285f5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,57 +9,89 @@ name: Release on: - push: - tags: - - v* + workflow_dispatch: + inputs: + version: + description: 'Release version' + required: true + next: + description: 'Next version' + required: false + +env: + JAVA_VERSION: '11' + JAVA_DISTRO: 'temurin' jobs: release: - name: Release runs-on: ubuntu-latest - steps: - - name: Version - id: version - run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/} - - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Cache Maven - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - name: Setup Java uses: actions/setup-java@v4 with: - java-version: 11 - distribution: 'temurin' - server-id: central - server-username: MAVEN_USERNAME - server-password: MAVEN_CENTRAL_TOKEN - gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} - gpg-passphrase: MAVEN_GPG_PASSPHRASE + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_DISTRO }} + cache: maven - - name: Release - env: - MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - MAVEN_CENTRAL_TOKEN: ${{ secrets.SONATYPE_PASSWORD }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + - name: Set release version + id: version + run: | + BRANCH="oss-quickstart-${{ github.event.inputs.version }}" + RELEASE_VERSION=${{ github.event.inputs.version }} + NEXT_VERSION=${{ github.event.inputs.next }} + PLAIN_VERSION=`echo ${RELEASE_VERSION} | awk 'match($0, /^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)/) { print substr($0, RSTART, RLENGTH); }'` + COMPUTED_NEXT_VERSION="${PLAIN_VERSION}-SNAPSHOT" + if [ -z $NEXT_VERSION ] + then + NEXT_VERSION=$COMPUTED_NEXT_VERSION + fi + git checkout -b $BRANCH + ./mvnw -ntp -B versions:set versions:commit -DnewVersion=$RELEASE_VERSION + git config --global user.email "moditect-release-bot@moditect.org" + git config --global user.name "moditect-release-bot" + git commit -a -m "Releasing version $RELEASE_VERSION" + git push origin $BRANCH + echo "BRANCH=$BRANCH" >> $GITHUB_ENV + echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV + echo "NEXT_VERSION=$NEXT_VERSION" >> $GITHUB_ENV + echo "PLAIN_VERSION=$PLAIN_VERSION" >> $GITHUB_ENV + + - name: Stage run: | export GPG_TTY=$(tty) - export MAVEN_OPTS=--illegal-access=permit - mvn --no-transfer-progress -B --file pom.xml \ + ./mvnw -ntp -B --file pom.xml \ -Drepository.url=https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git \ - -Dmaven.site.skip=true -Drelease=true deploy + -Dmaven.site.skip=true -Drelease=true -Ppublication,stage - - name: Release to GitHub + - name: Release env: JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + JRELEASER_BRANCH: ${{ env.BRANCH }} + JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + run: | + ./mvnw -ntp -B --file pom.xml -Pjreleaser jreleaser:release + + - name: JReleaser output + if: always() + uses: actions/upload-artifact@v4 + with: + name: jreleaser-release + path: | + parent/target/jreleaser/trace.log + parent/target/jreleaser/output.properties + + - name: Set next version run: | - mvn -B --file pom.xml -pl :ossquickstart-aggregator -Pjreleaser jreleaser:release + ./mvnw -ntp -B versions:set versions:commit -DnewVersion=${{ env.NEXT_VERSION }} + git config --global user.email "moditect-release-bot@moditect.org" + git config --global user.name "moditect-release-bot" + git commit -a -m "Next version ${{ env.NEXT_VERSION }}" + git push origin ${{ env.BRANCH }} diff --git a/.github/workflows/trigger.yml b/.github/workflows/trigger.yml deleted file mode 100644 index cfb0e38..0000000 --- a/.github/workflows/trigger.yml +++ /dev/null @@ -1,85 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# Copyright The original authors -# -# Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 -# - -name: Trigger - -on: - workflow_dispatch: - inputs: - branch: - description: "Branch to release from" - required: true - default: "main" - version: - description: "Release version" - required: true - -jobs: - build: - name: Build - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: 11 - distribution: 'temurin' - - - name: Cache Maven - uses: actions/cache@v4 - with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - - name: Build - run: mvn --no-transfer-progress -B --file pom.xml verify - - tag: - name: Tag - needs: build - runs-on: ubuntu-latest - - steps: - - name: Checkout sources - uses: actions/checkout@v4 - with: - # required for triggering release workflow on tagging - token: ${{ secrets.GIT_ACCESS_TOKEN }} - - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: 11 - distribution: 'temurin' - - - name: Cache Maven - uses: actions/cache@v4 - with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - - name: Create tag - run: | - git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/* - BRANCH=${{ github.event.inputs.branch }} - VERSION=${{ github.event.inputs.version }} - echo "Releasing $VERSION from $BRANCH branch" - git checkout $BRANCH - mvn -B versions:set versions:commit -DnewVersion=$VERSION - git config --global user.email "moditect-release-bot@moditect.org" - git config --global user.name "moditect-release-bot" - git commit -a -m "Releasing version $VERSION" - git tag v$VERSION - git push origin $BRANCH - git push origin v$VERSION diff --git a/pom.xml b/pom.xml index 9821063..3a9fbcd 100644 --- a/pom.xml +++ b/pom.xml @@ -161,6 +161,15 @@ + + stage + + local::file:${maven.multiModuleProjectDirectory}/target/staging-deploy + + + deploy + + jreleaser @@ -171,22 +180,51 @@ 1.10.0 false + true + + oss-quickstart + + https://github.com/moditect/oss-quickstart + https://github.com/moditect/oss-quickstart + + + + ALWAYS + true + + + + + + ALWAYS + https://oss.sonatype.org/service/local + https://oss.sonatype.org/content/repositories/snapshots/ + true + true + ${maven.multiModuleProjectDirectory}/target/staging-deploy + + + + - true + {{projectVersion}} + {{projectVersion}} + true + + true + ALWAYS - gitmoji - - {{commitShortHash}} {{commitTitle}} + ALWAYS + conventional-commits + true - * {{contributorName}}{{#contributorUsernameAsLink}} ({{.}}){{/contributorUsernameAsLink}} + - {{contributorName}}{{#contributorUsernameAsLink}} ({{.}}){{/contributorUsernameAsLink}} - - GitHub - bot - + GitHub,dependabot