diff --git a/.github/workflows/java-release.yml b/.github/workflows/java-release.yml new file mode 100644 index 00000000..bb19a909 --- /dev/null +++ b/.github/workflows/java-release.yml @@ -0,0 +1,57 @@ +name: Release Java + +on: + workflow_dispatch: + inputs: + version: + description: 'Version to release (e.g. 1.0.0)' + required: true + push: + tags: + - "v*" + +jobs: + release: + runs-on: ubuntu-latest + defaults: + run: + working-directory: java + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-java@v4 + with: + java-version: "17" + distribution: "temurin" + server-id: central + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.CI_GPG_PRIVATE_KEY }} + gpg-passphrase: ${{ secrets.CI_GPG_PASSPHRASE }} + + - name: Extract version + id: version + env: + EVENT_NAME: ${{ github.event_name }} + INPUT_VERSION: ${{ inputs.version }} + run: | + if [ "$EVENT_NAME" = "workflow_dispatch" ]; then + echo "VERSION=$INPUT_VERSION" >> $GITHUB_OUTPUT + else + echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT + fi + + - name: Set version in pom.xml + env: + VERSION: ${{ steps.version.outputs.VERSION }} + run: mvn versions:set -DnewVersion="$VERSION" + + - name: Build and test + run: mvn clean verify + + - name: Deploy to Maven Central + run: mvn source:jar javadoc:javadoc deploy -P symphony-release -DskipTests + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + GPG_PASSPHRASE: ${{ secrets.CI_GPG_PASSPHRASE }} \ No newline at end of file