Skip to content

ci: implement branch-based release strategy #40

ci: implement branch-based release strategy

ci: implement branch-based release strategy #40

Workflow file for this run

name: Build and Deploy Java Parser
on:
push:
branches: [develop]
tags: ['v*']
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install ANTLR4 and Maven
run: |
sudo apt-get update
sudo apt-get install -y maven
make dev
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
- name: Set SNAPSHOT version (develop branch)
if: github.ref == 'refs/heads/develop'
run: |
cd java
BASE_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed 's/-SNAPSHOT//')
mvn versions:set -DnewVersion="${BASE_VERSION}-SNAPSHOT" -DgenerateBackupPoms=false
- name: Set release version (tag)
if: startsWith(github.ref, 'refs/tags/v')
run: |
cd java
TAG_VERSION=${GITHUB_REF_NAME#v}
mvn versions:set -DnewVersion="${TAG_VERSION}" -DgenerateBackupPoms=false
- name: Generate and Compile Java Code
run: make java_parser
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Deploy SNAPSHOT to OSSRH (develop branch)
if: github.ref == 'refs/heads/develop'
run: cd java && mvn clean deploy --settings ../.github/settings.xml
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Deploy Release to Maven Central (tag)
if: startsWith(github.ref, 'refs/tags/v')
run: cd java && mvn clean deploy --settings ../.github/settings.xml
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}