Target just the library module for deploying the jar to maven central #4
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: release | |
on: | |
push: | |
branches: | |
- beta-test | |
jobs: | |
build: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'temurin' | |
cache: maven | |
- name: Set up Docker Build | |
uses: docker/setup-buildx-action@v2 | |
- name: Install Docker Compose | |
run: | | |
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |
sudo chmod +x /usr/local/bin/docker-compose | |
docker-compose --version | |
- name: Run MVN Verify | |
run: | | |
mvn -P coverage -B verify --file pom.xml | |
deploy: | |
runs-on: ubuntu-22.04 | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'temurin' | |
cache: maven | |
- name: maven-settings-xml-action | |
uses: whelk-io/maven-settings-xml-action@v20 | |
with: | |
servers: > | |
[ | |
{ | |
"id": "nexus", | |
"username": "${{ secrets.DEV_REPO_USERNAME }}", | |
"password": "${{ secrets.DEV_REPO_PASSWORD }}" | |
} | |
] | |
- name: Determine New Version | |
id: new_version | |
run: | | |
# Fetch all tags to ensure they are available | |
git fetch --tags | |
# Get the latest tag | |
latest_tag=$(git describe --tags `git rev-list --tags --max-count=1` || echo "v0.0.0") | |
echo "Latest tag: $latest_tag" | |
# Remove 'v' prefix and split into components | |
latest_version=${latest_tag#"v"} | |
IFS='.' read -r major minor patch_prerelease <<< "${latest_version}" | |
# Separate patch and prerelease if any | |
if [[ "$patch_prerelease" == *"-"* ]]; then | |
IFS='-' read -r patch prerelease <<< "$patch_prerelease" | |
else | |
patch="$patch_prerelease" | |
prerelease="" | |
fi | |
echo "Current version: $latest_version" | |
echo "Major: $major, Minor: $minor, Patch: $patch, Prerelease: $prerelease" | |
# Determine the new version | |
if [[ "$prerelease" == beta.* ]]; then | |
# Latest tag is a beta tag, increment beta version | |
beta_version=${prerelease#beta.} | |
beta_version=$((beta_version + 1)) | |
new_version="${major}.${minor}.${patch}-beta.${beta_version}" | |
else | |
# Latest tag is not a beta tag, start beta.1 | |
beta_version=1 | |
new_version="${major}.${minor}.${patch}-beta.${beta_version}" | |
fi | |
echo "New version: $new_version" | |
# Set outputs | |
echo "new_version=$new_version" >> $GITHUB_OUTPUT | |
echo "tag_name=v$new_version" >> $GITHUB_OUTPUT | |
- name: Configure Git | |
run: | | |
git config --global user.email "${{ secrets.GIT_USERNAME }}@digicert.com" | |
git config --global user.name "${{ secrets.GIT_USERNAME }}" | |
- name: Update Version in pom.xml | |
run: | | |
mvn versions:set -DnewVersion=${{ steps.new_version.outputs.new_version }} -DgenerateBackupPoms=false | |
- name: Generate Javadocs | |
run: mvn -pl library javadoc:javadoc | |
- name: Create Tag | |
run: | | |
git tag -a v${{ steps.new_version.outputs.new_version }} -m "Tagging v${{ steps.new_version.outputs.new_version }}" | |
git push origin v${{ steps.new_version.outputs.new_version }} | |
- name: Publish to Maven Central Beta | |
run: | | |
mvn -pl library javadoc:jar | |
mvn -pl library deploy -P deploy-to-maven-central-beta -DskipTests --batch-mode | |