Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions .github/actions/build-signed-apk/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Build signed debug APK
description: >-
Decodes the debug keystore and assembles the signed Dhis2 debug APK.
Assumes the repository is checked out and a JDK is already set up.

inputs:
keystore-base64:
description: Base64-encoded debug keystore.
required: true
keystore-alias:
description: Debug keystore alias.
required: true
key-pass:
description: Debug key password.
required: true
keystore-password:
description: Debug keystore password.
required: true
sentry-dsn:
description: Sentry DSN.
required: false
default: ''
open-id-auth-scheme:
required: false
default: ''
open-id-type:
required: false
default: ''
open-id-server:
required: false
default: ''
open-id-client:
required: false
default: ''
open-id-redirect-uri:
required: false
default: ''
open-id-discovery-uri:
required: false
default: ''
open-id-authorization-url:
required: false
default: ''
open-id-token-url:
required: false
default: ''
open-id-button-text:
required: false
default: ''

runs:
using: composite
steps:
- name: Decode keystore
id: decode_keystore
uses: timheuer/base64-to-file@dfa5a5dd38803cb4f5c3a081eeb28e8362d43e9c
with:
fileName: 'debug.keystore'
encodedString: ${{ inputs.keystore-base64 }}

- name: Assemble Dhis2 debug APK
shell: bash
env:
SENTRY_DSN: ${{ inputs.sentry-dsn }}
DEBUG_KEYSTORE_ALIAS: ${{ inputs.keystore-alias }}
DEBUG_KEY_PASS: ${{ inputs.key-pass }}
DEBUG_KEYSTORE_PASSWORD: ${{ inputs.keystore-password }}
DEBUG_KEYSTORE_PATH: ${{ steps.decode_keystore.outputs.filePath }}
OPEN_ID_AUTH_SCHEME: ${{ inputs.open-id-auth-scheme }}
OPEN_ID_TYPE: ${{ inputs.open-id-type }}
OPEN_ID_SERVER: ${{ inputs.open-id-server }}
OPEN_ID_CLIENT: ${{ inputs.open-id-client }}
OPEN_ID_REDIRECT_URI: ${{ inputs.open-id-redirect-uri }}
OPEN_ID_DISCOVERY_URI: ${{ inputs.open-id-discovery-uri }}
OPEN_ID_AUTHORIZATION_URL: ${{ inputs.open-id-authorization-url }}
OPEN_ID_TOKEN_URL: ${{ inputs.open-id-token-url }}
OPEN_ID_BUTTON_TEXT: ${{ inputs.open-id-button-text }}
run: ./gradlew assembleDhis2Debug
31 changes: 31 additions & 0 deletions .github/actions/run-form-tests/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Run form tests on BrowserStack
description: >-
Locates the built form androidTest APK and runs the BrowserStack form suite.
Assumes the form APK already exists under form/build/outputs.

inputs:
browserstack-username:
description: BrowserStack username.
required: true
browserstack-password:
description: BrowserStack access key.
required: true
build-tag:
description: BrowserStack build tag.
required: true

runs:
using: composite
steps:
- name: Run form tests
shell: bash
env:
BROWSERSTACK_USR: ${{ inputs.browserstack-username }}
BROWSERSTACK_PSW: ${{ inputs.browserstack-password }}
buildTag: ${{ inputs.build-tag }}
run: |
form_apk=$(find form/build/outputs -iname "*.apk" | sed -n 1p)
export form_apk_path="${GITHUB_WORKSPACE}/${form_apk}"
cd scripts
chmod +x browserstackJenkinsForm.sh
./browserstackJenkinsForm.sh
16 changes: 6 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: CI

on:
pull_request:
types: [opened, synchronize, reopened, edited]
push:
branches:
- main
Expand Down Expand Up @@ -124,16 +125,11 @@ jobs:
path: .

- name: Run Form Tests
env:
BROWSERSTACK_USR: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_PSW: ${{ secrets.BROWSERSTACK_PASSWORD }}
buildTag: ${{ github.head_ref || github.ref_name }} - form
run: |
form_apk=$(find form/build/outputs -iname "*.apk" | sed -n 1p)
export form_apk_path="${GITHUB_WORKSPACE}/${form_apk}"
cd scripts
chmod +x browserstackJenkinsForm.sh
./browserstackJenkinsForm.sh
uses: ./.github/actions/run-form-tests
with:
browserstack-username: ${{ secrets.BROWSERSTACK_USERNAME }}
browserstack-password: ${{ secrets.BROWSERSTACK_PASSWORD }}
build-tag: ${{ github.head_ref || github.ref_name }} - form

run-ui-portrait:
runs-on: ubuntu-latest
Expand Down
41 changes: 17 additions & 24 deletions .github/workflows/continuous-delivery.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,32 +42,25 @@ jobs:
- name: Change wrapper permissions
run: chmod +x ./gradlew

- name: Decode Keystore
id: decode_keystore
uses: timheuer/base64-to-file@dfa5a5dd38803cb4f5c3a081eeb28e8362d43e9c
with:
fileName: 'debug.keystore'
encodedString: ${{ secrets.DEBUG_KEYSTORE_BASE64 }}

# Create APK Debug
- name: Build apk debug project (APK) - ${{ env.main_project_module }} module
run: ./gradlew assembleDhis2Debug
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
DEBUG_KEYSTORE_ALIAS: ${{ secrets.DEBUG_KEYSTORE_ALIAS }}
DEBUG_KEY_PASS: ${{ secrets.DEBUG_KEY_PASS }}
DEBUG_KEYSTORE_PASSWORD: ${{ secrets.DEBUG_KEYSTORE_PASSWORD }}
DEBUG_KEYSTORE_PATH: ${{ steps.decode_keystore.outputs.filePath }}
OPEN_ID_AUTH_SCHEME: ${{ secrets.OPEN_ID_AUTH_SCHEME }}
OPEN_ID_TYPE: ${{ secrets.OPEN_ID_TYPE }}
OPEN_ID_SERVER: ${{ secrets.OPEN_ID_SERVER }}
OPEN_ID_CLIENT: ${{ secrets.OPEN_ID_CLIENT }}
OPEN_ID_REDIRECT_URI: ${{ secrets.OPEN_ID_REDIRECT_URI }}
OPEN_ID_DISCOVERY_URI: ${{ secrets.OPEN_ID_DISCOVERY_URI }}
OPEN_ID_AUTHORIZATION_URL: ${{ secrets.OPEN_ID_AUTHORIZATION_URL }}
OPEN_ID_TOKEN_URL: ${{ secrets.OPEN_ID_TOKEN_URL }}
OPEN_ID_BUTTON_TEXT: ${{ secrets.OPEN_ID_BUTTON_TEXT }}
uses: ./.github/actions/build-signed-apk
with:
keystore-base64: ${{ secrets.DEBUG_KEYSTORE_BASE64 }}
keystore-alias: ${{ secrets.DEBUG_KEYSTORE_ALIAS }}
key-pass: ${{ secrets.DEBUG_KEY_PASS }}
keystore-password: ${{ secrets.DEBUG_KEYSTORE_PASSWORD }}
sentry-dsn: ${{ secrets.SENTRY_DSN }}
open-id-auth-scheme: ${{ secrets.OPEN_ID_AUTH_SCHEME }}
open-id-type: ${{ secrets.OPEN_ID_TYPE }}
open-id-server: ${{ secrets.OPEN_ID_SERVER }}
open-id-client: ${{ secrets.OPEN_ID_CLIENT }}
open-id-redirect-uri: ${{ secrets.OPEN_ID_REDIRECT_URI }}
open-id-discovery-uri: ${{ secrets.OPEN_ID_DISCOVERY_URI }}
open-id-authorization-url: ${{ secrets.OPEN_ID_AUTHORIZATION_URL }}
open-id-token-url: ${{ secrets.OPEN_ID_TOKEN_URL }}
open-id-button-text: ${{ secrets.OPEN_ID_BUTTON_TEXT }}

- name: Locate built APK
id: apk-path
run: |
Expand Down
Loading