1- name : WalletAndroid-SDK
1+ name : WalletAndroid-SDK-Publish
22
33on :
4- push :
5- branches :
6- - main
74 workflow_dispatch :
85 inputs :
96 environment :
10- description : Configuration environment
7+ description : ' Environment to deploy to '
118 required : true
12- default : ' dev'
139 type : choice
1410 options :
1511 - dev
1612 - rc
1713 - prod
1814
19- env :
20- PACKAGE_TYPE : " aar"
21- GRADLE_VERSION : " 8.8.2"
22- JAVA_VERSION : " 17"
23- ARTIFACT_PATH : " VCL/build/outputs"
24- GLOBAL_ENV : ${{ github.event_name == 'push' && format('{0}', 'dev') || inputs.environment }}
25-
2615jobs :
27- test -android-sdk :
16+ release -android-sdk :
2817 runs-on : ubuntu-latest
18+
2919 steps :
30- - name : Git clone repository
20+ - name : 🧾 Checkout code
3121 uses : actions/checkout@v4
32- # Setup java
33- - uses : actions/setup-java@v4
34- with :
35- distribution : temurin
36- java-version : ${{ env.JAVA_VERSION }}
37- # Run test
38- - name : Run Test
39- run : ./gradlew test
4022
41- build-and-publish-android-sdk :
42- runs-on : ubuntu-latest
43- needs :
44- - test-android-sdk
45- steps :
46- - name : Git clone repository
47- uses : actions/checkout@v4
48- # Setup java
49- - uses : actions/setup-java@v4
23+ - name : ☕ Set up Java 17
24+ uses : actions/setup-java@v4
5025 with :
26+ java-version : 17
5127 distribution : temurin
52- java-version : ${{ env.JAVA_VERSION }}
53- # Gradle Assemble
54- - name : Gradle Assemble
55- run : ./gradlew assemble${{ env.RELEASE_TAG }}
56- env :
57- RELEASE_TAG : ${{ env.GLOBAL_ENV == 'prod' && format('{0}', 'Release' ) || 'Rc' }}
58- # Convert artifact to lowercase
59- - name : Rename artifact to lowercase
60- run : mv ${{ env.ARTIFACT_PATH}}/${{ env.PACKAGE_TYPE }}/VCL-${{ env.RELEASE_TAG }}.${{ env.PACKAGE_TYPE }} ${{ env.ARTIFACT_PATH }}/${{ env.PACKAGE_TYPE }}/vcl-${{ env.RELEASE_TAG }}.${{ env.PACKAGE_TYPE }}
61- env :
62- RELEASE_TAG : ${{ env.GLOBAL_ENV == 'prod' && format('{0}', 'release' ) || 'rc' }}
63- # Show Me Built packages
64- - name : Show Me Built packages
65- run : ls -al ${{ env.ARTIFACT_PATH}}/${{ env.PACKAGE_TYPE }}/
66- - name : Export Nexus Private Key
67- run : echo "signingPrivateKey=${{ secrets.ANDROID_NEXUS_PRIVATE_KEY }}" >> nexus.properties
68- # Publish Prod/Rc
69- - name : Publish Prod/Rc
70- if : ${{ env.GLOBAL_ENV == 'prod' || env.GLOBAL_ENV == 'rc' }}
71- run : ./gradlew publish${{ env.RELEASE_TAG }}
72- env :
73- RELEASE_TAG : ${{ env.GLOBAL_ENV == 'prod' && format('{0}', 'Release' ) || 'Rc' }}
74- MAVEN_CENTRAL_TOKEN_USERNAME : ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
75- MAVEN_CENTRAL_TOKEN_PASSWORD : ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
76- MAVEN_CENTRAL_SIGNING_KEY_ID : ${{ secrets.MAVEN_CENTRAL_SIGNING_KEY_ID }}
77- MAVEN_CENTRAL_SIGNING_PASSWORD : ${{ secrets.MAVEN_CENTRAL_SIGNING_PASSWORD }}
78- MAVEN_CENTRAL_PRIVATE_KEY_B64 : ${{ secrets.MAVEN_CENTRAL_PRIVATE_KEY_B64 }}
79- # Upload Artifacts
80- - name : Upload Artifact
81- if : success()
82- uses : actions/upload-artifact@v4
83- with :
84- name : vcl-${{ env.RELEASE_TAG }}.${{ env.PACKAGE_TYPE }}
85- path : ${{ env.ARTIFACT_PATH }}/${{ env.PACKAGE_TYPE }}
86- if-no-files-found : error
87- retention-days : 1
88- env :
89- RELEASE_TAG : ${{ env.GLOBAL_ENV == 'prod' && format('{0}', 'release' ) || 'rc' }}
9028
29+ - name : 🛠️ Set up Gradle
30+ uses : gradle/actions/setup-gradle@v3
31+
32+ - name : 📝 Get version from build.gradle
33+ run : |
34+ VERSION=$(grep 'publishVersion *= *".*"' VCL/build.gradle | sed -n 's/.*publishVersion *= *"\([^"]*\)".*/\1/p')
35+ echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV
36+ echo "Found version: $VERSION"
9137
38+ - name : 🔧 Set publication name and POM file name
39+ run : |
40+ PUB_NAME=
41+ echo "PUBLICATION_NAME=${{ github.event.inputs.environment == 'rc' && 'rc' || 'release' }}" >> $GITHUB_ENV
42+ echo "POM_FILE_NAME=vcl-${{ github.event.inputs.environment == 'rc' && 'rc-' || '' }}${RELEASE_VERSION}.pom" >> $GITHUB_ENV
9243
44+ - name : 🧪 Build AAR + Sources + Javadoc
45+ run : |
46+ ./gradlew clean \
47+ :VCL:assembleAll${{ github.event.inputs.environment == 'rc' && 'Rc' || 'Release' }} \
48+ -PprojectVersion=${RELEASE_VERSION} \
49+ -Pprerelease=${{ github.event.inputs.environment == 'rc' }} \
50+ --stacktrace
9351
52+ - name : ✅ Verify expected artifacts exist
53+ run : |
54+ ./gradlew \
55+ :VCL:verifyExpectedArtifactsExist
9456
57+ - name : 📦 Stage Artifacts
58+ run : |
59+ ./gradlew :VCL:stageArtifacts
9560
61+ - name : 🧪 Generate POM File
62+ run : |
63+ ./gradlew :VCL:generatePomFileFor${{ env.PUBLICATION_NAME }}Publication
64+ cp VCL/build/publications/${{ env.PUBLICATION_NAME }}/pom-default.xml VCL/target/staging-deploy/io/velocitycareerlabs/vcl/$RELEASE_VERSION/${{ env.POM_FILE_NAME }}
9665
66+ - name : 📂 List staged artifacts
67+ run : |
68+ ls -R VCL/target/staging-deploy
69+
70+ - name : 🚀 Run JReleaser full-release
71+ if : github.event.inputs.environment != 'dev'
72+ uses : jreleaser/release-action@v2
73+ with :
74+ version : 1.18.0
75+ arguments : >
76+ full-release
77+ --config-file=jreleaser.template.yml
78+ --debug
79+ env :
80+ JRELEASER_PROJECT_JAVA_ARTIFACT_ID : ${{ github.event.inputs.environment == 'rc' && 'vcl-rc' || 'vcl' }}
81+ JRELEASER_MAVENCENTRAL_USERNAME : ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
82+ JRELEASER_MAVENCENTRAL_PASSWORD : ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
83+ JRELEASER_MAVENCENTRAL_STAGE : ${{ secrets.MAVEN_CENTRAL_STAGING_PROFILE_ID }}
84+ JRELEASER_GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
85+ JRELEASER_PROJECT_VERSION : ${{ env.RELEASE_VERSION }}
86+ JRELEASER_GPG_PUBLIC_KEY : ${{ secrets.MAVEN_CENTRAL_GPG_PUBLIC_KEY }}
87+ JRELEASER_GPG_SECRET_KEY : ${{ secrets.MAVEN_CENTRAL_GPG_PRIVATE_KEY }}
88+ JRELEASER_GPG_PASSPHRASE : ${{ secrets.MAVEN_CENTRAL_SIGNING_PASSWORD }}
89+ JRELEASER_TAG_NAME : ${{ github.event.inputs.environment == 'rc' && 'rc-' || '' }}${{ env.RELEASE_VERSION }}
90+ JRELEASER_RELEASE_NAME : ${{ github.event.inputs.environment == 'rc' && 'Release Candidate ' || '' }}${{ env.RELEASE_VERSION }}
91+ JRELEASER_PRERELEASE_PATTERN : ${{ github.event.inputs.environment == 'rc' && env.RELEASE_VERSION || 'OFF' }}
92+
0 commit comments