Skip to content

Merge pull request #68 from textkernel/fix-ci #6

Merge pull request #68 from textkernel/fix-ci

Merge pull request #68 from textkernel/fix-ci #6

# This workflow will build a package using Maven and then publish it to Maven Central when a release is created
# For more information see: https://github.com/actions/setup-java#apache-maven-with-a-settings-path
name: create-release
on:
push:
branches:
- master
workflow_dispatch: #add this option in case of a failure and we need to re-run
jobs:
get-version-tag:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Get version
id: package_version
uses: mavrosxristoforos/get-xml-info@2.0
with:
xml-file: pom.xml
xpath: '/project/version'
outputs:
version_tag: v${{ steps.package_version.outputs.info }}
check-tag-exists:
needs: get-version-tag
runs-on: ubuntu-latest
steps:
- uses: mukunku/tag-exists-action@v1.6.0
id: check_tag
with:
tag: ${{ needs.get-version-tag.outputs.version_tag }}
outputs:
should_create_release: ${{ steps.check_tag.outputs.exists != 'true' }}
create-release:
needs: [check-tag-exists, get-version-tag]
if: ${{ needs.check-tag-exists.outputs.should_create_release == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
make_latest: 'true'
tag_name: ${{ needs.get-version-tag.outputs.version_tag }}
name: ${{ needs.get-version-tag.outputs.version_tag }}
maven-publish:
needs: [create-release, check-tag-exists]
if: ${{ needs.check-tag-exists.outputs.should_create_release == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package -DskipTests --file pom.xml
- name: Set up Apache Maven Central
uses: actions/setup-java@v1
with: # running setup-java again overwrites the settings.xml
java-version: 1.8
server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml
server-username: MAVEN_USERNAME # env variable for username in deploy
server-password: MAVEN_CENTRAL_TOKEN # env variable for token in deploy
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY_TK }} # Value of the GPG private key to import
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
- name: Publish to Apache Maven Central
run: mvn -B clean deploy -DskipTests
env:
MAVEN_USERNAME: GerskonW
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN_TK }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE_TK }}