1- name : JReleaser Common Workflow
2-
3- on :
4- workflow_call :
5- inputs :
6- version_source :
7- description : ' Source of version: "tag", "input", or "gradle"'
8- required : true
9- type : string
10- manual_version :
11- description : ' Manual version for input source'
12- required : false
13- type : string
14- default : ' '
15- deploy_enabled :
16- description : ' Whether to actually deploy (true/false)'
17- required : true
18- type : boolean
19- secrets :
20- JRELEASER_MAVENCENTRAL_USERNAME :
21- required : true
22- JRELEASER_MAVENCENTRAL_PASSWORD :
23- required : true
24- JRELEASER_GPG_PASSPHRASE :
25- required : true
26- JRELEASER_GPG_SECRET_KEY :
27- required : true
28- JRELEASER_GPG_PUBLIC_KEY :
29- required : true
30-
31- jobs :
32- jreleaser :
33- runs-on : ubuntu-latest
34-
35- steps :
36- - name : Checkout code
37- uses : actions/checkout@v4
38- with :
39- fetch-depth : 0 # Full history for JReleaser
40-
41- - name : Set up JDK 17
42- uses : actions/setup-java@v4
43- with :
44- java-version : ' 17'
45- distribution : ' temurin'
46-
47- - name : Cache Gradle dependencies
48- uses : actions/cache@v4
49- with :
50- path : |
51- ~/.gradle/caches
52- ~/.gradle/wrapper
53- key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
54- restore-keys : |
55- ${{ runner.os }}-gradle-
56-
57- - name : Install JReleaser CLI (manual setup)
58- run : |
59- # Try to install a working version manually
60- JRELEASER_VERSION="1.18.0"
61- mkdir -p ~/.jreleaser/bin
62-
63- # Download the tar.gz version which usually contains all dependencies
64- curl -sL "https://github.com/jreleaser/jreleaser/releases/download/v${JRELEASER_VERSION}/jreleaser-tool-provider-${JRELEASER_VERSION}.jar" -o ~/.jreleaser/bin/jreleaser.jar
65-
66- # Create a wrapper script
67- cat > ~/.jreleaser/bin/jreleaser << 'EOF'
68- #!/bin/bash
69- java -jar ~/.jreleaser/bin/jreleaser.jar "$@"
70- EOF
71- chmod +x ~/.jreleaser/bin/jreleaser
72-
73- echo "$HOME/.jreleaser/bin" >> $GITHUB_PATH
74-
75- - name : Print JReleaser version and check Java
76- run : |
77- echo "Java version:"
78- java -version
79- echo "JReleaser version:"
80- jreleaser --version
81- echo "JReleaser path:"
82- which jreleaser
83- echo "JReleaser is running on JVM (not native binary)"
84-
85- - name : Extract version
86- id : version
87- run : |
88- case "${{ inputs.version_source }}" in
89- "tag")
90- # Extract version from tag (remove refs/tags/ prefix)
91- VERSION=${GITHUB_REF#refs/tags/}
92- echo "Using version from git tag: $VERSION"
93- ;;
94- "input")
95- # Use manual input
96- VERSION="${{ inputs.manual_version }}"
97- echo "Using version from manual input: $VERSION"
98- ;;
99- "gradle")
100- # Read version from gradle.properties
101- VERSION=$(grep '^version=' gradle.properties | cut -d'=' -f2)
102- echo "Using version from gradle.properties: $VERSION"
103- ;;
104- *)
105- echo "❌ Error: Unknown version source '${{ inputs.version_source }}'"
106- exit 1
107- ;;
108- esac
109-
110- # Validate that version is not empty
111- if [ -z "$VERSION" ]; then
112- echo "❌ Error: Could not determine version!"
113- exit 1
114- fi
115-
116- echo "PROJECT_VERSION=$VERSION" >> $GITHUB_ENV
117- echo "version=$VERSION" >> $GITHUB_OUTPUT
118- echo "✅ Final version: $VERSION"
119-
120- - name : Make publish script executable
121- run : chmod +x scripts/publish-maven-central.sh
122-
123- - name : Run JReleaser
124- env :
125- DEPLOY : ${{ inputs.deploy_enabled }}
126- CI : true
127- PROJECT_VERSION : ${{ env.PROJECT_VERSION }}
128- JRELEASER_MAVENCENTRAL_USERNAME : ${{ secrets.JRELEASER_MAVENCENTRAL_USERNAME }}
129- JRELEASER_MAVENCENTRAL_PASSWORD : ${{ secrets.JRELEASER_MAVENCENTRAL_PASSWORD }}
130- JRELEASER_GPG_PASSPHRASE : ${{ secrets.JRELEASER_GPG_PASSPHRASE }}
131- JRELEASER_GPG_SECRET_KEY : ${{ secrets.JRELEASER_GPG_SECRET_KEY }}
132- JRELEASER_GPG_PUBLIC_KEY : ${{ secrets.JRELEASER_GPG_PUBLIC_KEY }}
133- run : |
134- if [ "${{ inputs.deploy_enabled }}" = "true" ]; then
135- echo "🚀 Publishing version $PROJECT_VERSION to Maven Central..."
136- else
137- echo "🔍 Checking JReleaser configuration for version $PROJECT_VERSION..."
138- fi
139- ./scripts/publish-maven-central.sh
140-
141- - name : Upload JReleaser logs
142- if : always()
143- uses : actions/upload-artifact@v4
144- with :
145- name : jreleaser-logs-${{ github.run_id }}
146- path : out/jreleaser/
147- retention-days : 5
1+ # name: JReleaser Common Workflow
2+ #
3+ # on:
4+ # workflow_call:
5+ # inputs:
6+ # version_source:
7+ # description: 'Source of version: "tag", "input", or "gradle"'
8+ # required: true
9+ # type: string
10+ # manual_version:
11+ # description: 'Manual version for input source'
12+ # required: false
13+ # type: string
14+ # default: ''
15+ # deploy_enabled:
16+ # description: 'Whether to actually deploy (true/false)'
17+ # required: true
18+ # type: boolean
19+ # secrets:
20+ # JRELEASER_MAVENCENTRAL_USERNAME:
21+ # required: true
22+ # JRELEASER_MAVENCENTRAL_PASSWORD:
23+ # required: true
24+ # JRELEASER_GPG_PASSPHRASE:
25+ # required: true
26+ # JRELEASER_GPG_SECRET_KEY:
27+ # required: true
28+ # JRELEASER_GPG_PUBLIC_KEY:
29+ # required: true
30+ #
31+ # jobs:
32+ # jreleaser:
33+ # runs-on: ubuntu-latest
34+ #
35+ # steps:
36+ # - name: Checkout code
37+ # uses: actions/checkout@v4
38+ # with:
39+ # fetch-depth: 0 # Full history for JReleaser
40+ #
41+ # - name: Set up JDK 17
42+ # uses: actions/setup-java@v4
43+ # with:
44+ # java-version: '17'
45+ # distribution: 'temurin'
46+ #
47+ # - name: Cache Gradle dependencies
48+ # uses: actions/cache@v4
49+ # with:
50+ # path: |
51+ # ~/.gradle/caches
52+ # ~/.gradle/wrapper
53+ # key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
54+ # restore-keys: |
55+ # ${{ runner.os }}-gradle-
56+ #
57+ # - name: Install JReleaser CLI (manual setup)
58+ # run: |
59+ # # Try to install a working version manually
60+ # JRELEASER_VERSION="1.18.0"
61+ # mkdir -p ~/.jreleaser/bin
62+ #
63+ # # Download the tar.gz version which usually contains all dependencies
64+ # curl -sL "https://github.com/jreleaser/jreleaser/releases/download/v${JRELEASER_VERSION}/jreleaser-tool-provider-${JRELEASER_VERSION}.jar" -o ~/.jreleaser/bin/jreleaser.jar
65+ #
66+ # # Create a wrapper script
67+ # cat > ~/.jreleaser/bin/jreleaser << 'EOF'
68+ # #!/bin/bash
69+ # java -jar ~/.jreleaser/bin/jreleaser.jar "$@"
70+ # EOF
71+ # chmod +x ~/.jreleaser/bin/jreleaser
72+ #
73+ # echo "$HOME/.jreleaser/bin" >> $GITHUB_PATH
74+ #
75+ # - name: Print JReleaser version and check Java
76+ # run: |
77+ # echo "Java version:"
78+ # java -version
79+ # echo "JReleaser version:"
80+ # jreleaser --version
81+ # echo "JReleaser path:"
82+ # which jreleaser
83+ # echo "JReleaser is running on JVM (not native binary)"
84+ #
85+ # - name: Extract version
86+ # id: version
87+ # run: |
88+ # case "${{ inputs.version_source }}" in
89+ # "tag")
90+ # # Extract version from tag (remove refs/tags/ prefix)
91+ # VERSION=${GITHUB_REF#refs/tags/}
92+ # echo "Using version from git tag: $VERSION"
93+ # ;;
94+ # "input")
95+ # # Use manual input
96+ # VERSION="${{ inputs.manual_version }}"
97+ # echo "Using version from manual input: $VERSION"
98+ # ;;
99+ # "gradle")
100+ # # Read version from gradle.properties
101+ # VERSION=$(grep '^version=' gradle.properties | cut -d'=' -f2)
102+ # echo "Using version from gradle.properties: $VERSION"
103+ # ;;
104+ # *)
105+ # echo "❌ Error: Unknown version source '${{ inputs.version_source }}'"
106+ # exit 1
107+ # ;;
108+ # esac
109+ #
110+ # # Validate that version is not empty
111+ # if [ -z "$VERSION" ]; then
112+ # echo "❌ Error: Could not determine version!"
113+ # exit 1
114+ # fi
115+ #
116+ # echo "PROJECT_VERSION=$VERSION" >> $GITHUB_ENV
117+ # echo "version=$VERSION" >> $GITHUB_OUTPUT
118+ # echo "✅ Final version: $VERSION"
119+ #
120+ # - name: Make publish script executable
121+ # run: chmod +x scripts/publish-maven-central.sh
122+ #
123+ # - name: Run JReleaser
124+ # env:
125+ # DEPLOY: ${{ inputs.deploy_enabled }}
126+ # CI: true
127+ # PROJECT_VERSION: ${{ env.PROJECT_VERSION }}
128+ # JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.JRELEASER_MAVENCENTRAL_USERNAME }}
129+ # JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.JRELEASER_MAVENCENTRAL_PASSWORD }}
130+ # JRELEASER_GPG_PASSPHRASE: ${{ secrets.JRELEASER_GPG_PASSPHRASE }}
131+ # JRELEASER_GPG_SECRET_KEY: ${{ secrets.JRELEASER_GPG_SECRET_KEY }}
132+ # JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.JRELEASER_GPG_PUBLIC_KEY }}
133+ # run: |
134+ # if [ "${{ inputs.deploy_enabled }}" = "true" ]; then
135+ # echo "🚀 Publishing version $PROJECT_VERSION to Maven Central..."
136+ # else
137+ # echo "🔍 Checking JReleaser configuration for version $PROJECT_VERSION..."
138+ # fi
139+ # ./scripts/publish-maven-central.sh
140+ #
141+ # - name: Upload JReleaser logs
142+ # if: always()
143+ # uses: actions/upload-artifact@v4
144+ # with:
145+ # name: jreleaser-logs-${{ github.run_id }}
146+ # path: out/jreleaser/
147+ # retention-days: 5
0 commit comments