Skip to content

Adding package publish #53

Adding package publish

Adding package publish #53

Workflow file for this run

name: Package and deploy versions
on:
push:
branches: ["main"]
jobs:
project-info:
runs-on: ubuntu-latest
container:
image: ubuntu:latest
outputs:
PROJECT_ARTIFACT: ${{ steps.project-info.outputs.PROJECT_ARTIFACT }}
PROJECT_VERSION: ${{ steps.project-info.outputs.PROJECT_VERSION }}
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install tools
run: |
apt-get update
apt-get install -y jq libxml2-utils
- name: Store Project Information
id: project-info
run: |
PROJECT_VERSION=$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml | sed 's/-SNAPSHOT/.${{github.run_number}}'/)
echo "PROJECT_VERSION=${PROJECT_VERSION}"
echo "PROJECT_VERSION=${PROJECT_VERSION}" >> $GITHUB_OUTPUT
PROJECT_ARTIFACT=$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="artifactId"]/text()' pom.xml)
echo "PROJECT_ARTIFACT=${PROJECT_ARTIFACT}"
echo "PROJECT_ARTIFACT=${PROJECT_ARTIFACT}" >> $GITHUB_OUTPUT
linux-build:
needs: project-info
runs-on: ubuntu-latest
container:
image: ubuntu:latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install tools
run: |
apt-get update
apt-get install -y jq git libxml2-utils nsis curl zip unzip tar gzip gcc zlib1g-dev
- uses: graalvm/setup-graalvm@v1
with:
java-version: '22'
distribution: 'graalvm'
github-token: ${{ github.token }}
- run: which java && java -version
- name: Set Version
run: |
./mvnw -U --batch-mode versions:set dependency:tree -DnewVersion=${{ needs.project-info.outputs.PROJECT_VERSION }}
- name: Build
run: ./mvnw --batch-mode -Pnative -Dagent=true -Dosname.short=Linux clean install
- name: 'Upload Jar'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}.jar
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}.jar
retention-days: 1
if-no-files-found: error
- name: 'Upload Shaded'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-shaded.jar
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-shaded.jar
retention-days: 1
if-no-files-found: error
- name: 'Upload Zip'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.zip
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.zip
retention-days: 1
if-no-files-found: error
- name: 'Upload TGZ'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.tar.gz
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.tar.gz
retention-days: 1
if-no-files-found: error
- name: 'Upload Windows Installer'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-installer.exe
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-installer.exe
retention-days: 1
if-no-files-found: error
- name: 'Upload Linux Binary'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Linux-amd64.bin
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Linux-amd64
retention-days: 1
if-no-files-found: error
windows-build:
needs: project-info
runs-on: windows-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- uses: ilammy/msvc-dev-cmd@v1
- uses: graalvm/setup-graalvm@v1
with:
java-version: '22'
distribution: 'graalvm'
github-token: ${{ github.token }}
- run: java -version
- name: Set Version
run: |
./mvnw -U --batch-mode versions:set dependency:tree "-DnewVersion=${{ needs.project-info.outputs.PROJECT_VERSION }}"
- name: Build
run: ./mvnw --batch-mode -Pnative -Dagent=true clean package && ls target
- name: 'Upload Windows Binary'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Windows-amd64.exe
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Windows-amd64.exe
retention-days: 1
if-no-files-found: error
mac-build:
needs: project-info
runs-on: macos-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- uses: graalvm/setup-graalvm@v1
with:
java-version: '22'
distribution: 'graalvm'
github-token: ${{ github.token }}
- run: java -version
- run: brew install makensis
- name: Set Version
run: |
./mvnw -U --batch-mode versions:set dependency:tree -DnewVersion=${{ needs.project-info.outputs.PROJECT_VERSION }}
- name: Build
run: ./mvnw --batch-mode -Pnative -Dagent=true clean package && ls target
- name: 'Upload Mac Binary'
uses: actions/upload-artifact@v4
with:
name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Mac-x86_64.bin
path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Mac-x86_64
retention-days: 1
if-no-files-found: error
release:
runs-on: ubuntu-latest
container:
image: ubuntu:latest
needs: [project-info, linux-build, windows-build, mac-build]
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Download All Artifacts
uses: actions/download-artifact@v4
with:
path: target
merge-multiple: true
- name: release
uses: actions/create-release@v1
id: create_release
with:
draft: false
prerelease: false
release_name: ${{ needs.project-info.outputs.PROJECT_VERSION }}
tag_name: ${{ needs.project-info.outputs.PROJECT_VERSION }}
body_path: README.md
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Upload JAR
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}.jar
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}.jar
asset_content_type: application/java-archive
- name: Upload Shaded JAR
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-shaded.jar
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-shaded.jar
asset_content_type: application/java-archive
- name: Upload Zip
id: upload-zip
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.zip
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.zip
asset_content_type: application/zip
- name: Upload TGZ
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.tar.gz
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-anyos.tar.gz
asset_content_type: application/tar+gzip
- name: Upload EXE
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-installer.exe
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-installer.exe
asset_content_type: application/tar+gzip
- name: Upload Linux Bin
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Linux-amd64
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Linux-amd64.bin
asset_content_type: application/octet-stream
- name: Upload Mac Bin
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Mac-x86_64
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Mac-x86_64.bin
asset_content_type: application/octet-stream
- name: Upload Bin
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./target/${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Windows-amd64.exe
asset_name: ${{ needs.project-info.outputs.PROJECT_ARTIFACT }}-${{ needs.project-info.outputs.PROJECT_VERSION }}-Windows-amd64.exe
asset_content_type: application/octet-stream
- uses: graalvm/setup-graalvm@v1
with:
java-version: '22'
distribution: 'graalvm'
github-token: ${{ github.token }}
- run: which java && java -version
- name: Install tools
run: |
apt-get update
apt-get install -y jq git libxml2-utils nsis curl zip unzip tar gzip gcc zlib1g-dev
- name: Set Version
run: |
./mvnw -U --batch-mode versions:set dependency:tree -DnewVersion=${{ needs.project-info.outputs.PROJECT_VERSION }}
- name: Deploy to Github Package Registry
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
mkdir -p ~/.m2
echo "<settings><servers><server><id>gh</id><username>${{github.actor}}</username><password>${{github.token}}</password></server></servers></settings>" > ~/.m2/settings.xml
REPO="gh::default::https://maven.pkg.github.com/${{github.repository}}"
./mvnw deploy -DaltReleaseDeploymentRepository="${REPO}" -DaltSnapshotDeploymentRepository="${REPO}"