Skip to content

Build Release Candidate #107

Build Release Candidate

Build Release Candidate #107

# This is a basic workflow that is manually triggered
name: Build Release Candidate
env:
# The name of the main module repository
main_project_module: app
# Controls when the action will run. Workflow runs when manually triggered using the UI
# or API.
on:
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build-release-candidate:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Runs a single command using the runners shell
- uses: actions/checkout@v7.0.1
# Set Repository Name As Env Variable
- name: Set repository name as env variable
run: echo "repository_name=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV
- name: Set Up JDK
uses: actions/setup-java@v6
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '17'
cache: 'gradle'
- name: Change wrapper permissions
run: chmod +x ./gradlew
- name: Decode Keystore
id: decode_keystore
uses: timheuer/base64-to-file@dfa5a5dd38803cb4f5c3a081eeb28e8362d43e9c
with:
fileName: 'dhis_keystore.jks'
encodedString: ${{ secrets.KEYSTORE }}
- name: Build Release APKs
run: ./gradlew --dependency-verification strict app:assembleDhis2Release app:assembleDhis2PlayServicesRelease
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SIGNING_KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
SIGNING_KEYSTORE_PATH: ${{ steps.decode_keystore.outputs.filePath }}
- name: Decode Training Keystore
id: decode_training_keystore
uses: timheuer/base64-to-file@dfa5a5dd38803cb4f5c3a081eeb28e8362d43e9c
with:
fileName: 'dhis_training_keystore.jks'
encodedString: ${{ secrets.TRAINING_KEYSTORE_BASE64 }}
- name: Build Training APK
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
TRAINING_KEY_ALIAS: ${{ secrets.TRAINING_KEY_ALIAS }}
TRAINING_KEY_PASSWORD: ${{ secrets.TRAINING_KEY_PASSWORD }}
TRAINING_STORE_PASSWORD: ${{ secrets.TRAINING_STORE_PASSWORD }}
TRAINING_STORE_FILE: ${{ steps.decode_training_keystore.outputs.filePath }}
run: ./gradlew --dependency-verification strict app:assembleDhis2TrainingRelease
- name: Read version name from file
working-directory: ./gradle
id: read-version
run: echo "vName=$(grep 'vName' libs.versions.toml | awk -F' = ' '{print $2}' | tr -d '"')" >> $GITHUB_OUTPUT
# Upload DhisRelease APK
- name: Upload DhisRelease APK
uses: actions/upload-artifact@v7.0.1
with:
name: ${{ env.repository_name }} - DhisRelease APK
path: ${{ env.main_project_module }}/build/outputs/apk/dhis2/release/dhis2-v${{ steps.read-version.outputs.vName }}.apk
# Upload DhisPlayServicesRelease APK
- name: Upload DhisPlayServicesRelease APK
uses: actions/upload-artifact@v7.0.1
with:
name: ${{ env.repository_name }} - DhisPlayServicesRelease APK
path: ${{ env.main_project_module }}/build/outputs/apk/dhis2PlayServices/release/dhis2-v${{ steps.read-version.outputs.vName }}-googlePlay.apk
# Upload Training Release APK
- name: Upload Training Release APK
uses: actions/upload-artifact@v7.0.1
with:
name: ${{ env.repository_name }} - Training Release APK
path: ${{ env.main_project_module }}/build/outputs/apk/dhis2Training/release/dhis2-v${{ steps.read-version.outputs.vName }}-training.apk