Intro
This article documents the process for integration of the android client library release process to the CI for automation i.e CI/CD on Github. On needs admin rights on the repository to set up the credentials for the Github Actions CI pipeline.
This set up supports tagging releases on Github as pre-releases if they include alpha or beta keyword in the tag e.g. v2.3.5-alpha
Contents
Credentials Configuration
Github Actions CI
Publishing via Tag
Accessing your releases
Credentials configuration
Your applications build configuration should have the Nexus credentials configured in-order to be authorised to upload an artifact in the OpenSRP organization/group on sonatype.
...
For steps to manually publish the artefacts see How to upload and use maven jar artifactsAndroid client libraries on Maven/Sonatype
Github Actions CI
You can create a new Github action workflow file and name it release.yml with the following sample configuration used for building, signing and publishing the FHIR Core Quest application as a Github release.
NOTE: Remember to update the content with the module names corresponding to your project.
Code Block | ||
---|---|---|
| ||
# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: Snapshot Release
on:
push:
tags:
- v[0-9]+.[0-9]+.[0-9]+-SNAPSHOT
- v[0-9]+.[0-9]+.[0-9]+-[0-9a-zA-Z]+-SNAPSHOT
- v[0-9]+.[0-9]+.[0-9]+-[0-9a-zA-Z]+-[0-9a-zA-Z]+-SNAPSHOT
env:
NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Cancel previous workflow runs
uses: styfle/cancel-workflow-action@0.9.1
with:
access_token: ${{ github.token }}
- name: Checkout 🛎️
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Run unit tests with Gradle
run: ./gradlew :opensrp-core:clean :opensrp-core:testDebugUnitTest --stacktrace
- name: Generate & upload library snapshot artifact AAR (Android Archive) file
run: ./gradlew :opensrp-core:uploadArchives -PmavenLocal=false --stacktrace -PsonatypeUsername=${{ secrets.NEXUS_USERNAME }} -PsonatypePassword=${{ secrets.NEXUS_PASSWORD }}
- name: Github Release
uses: softprops/action-gh-release@v1
with:
prerelease: ${{ contains(github.ref, '-alpha') || contains(github.ref, '-beta') }}
|
Publishing via TAG
As part of integrating Continuous Delivery(CD) into the development lifecycle, CI has been set up to trigger artefact generation. The configuration requires the tag to have a prefix in the glob pattern formats:v[0-9]+.[0-9]+.[0-9]+-SNAPSHOT
...
Also please see Semantic versioning
Accessing your releases
Once the above command is executed and the tag is pushed, Github CI triggers an action to build the artefact and upload it to Sonatype.
...