Skip to content

Commit

Permalink
ci: Setup workflows to build all variants in the app (WPB-8644) (#3014)
Browse files Browse the repository at this point in the history
  • Loading branch information
ohassine authored May 28, 2024
1 parent 0fee9fe commit 482c179
Show file tree
Hide file tree
Showing 7 changed files with 329 additions and 105 deletions.
46 changes: 0 additions & 46 deletions .github/workflows/build-app.yml

This file was deleted.

78 changes: 78 additions & 0 deletions .github/workflows/build-beta-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: "Beta build"

on:
push:
branches:
- main
merge_group:
pull_request:
branches:
- main
types: [ opened, synchronize ]
workflow_call:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
code-analysis:
uses: ./.github/workflows/code-analysis.yml
ui-tests:
uses: ./.github/workflows/gradle-run-ui-tests.yml
unit-tests:
uses: ./.github/workflows/gradle-run-unit-tests.yml
build-app:
needs: [ code-analysis, ui-tests, unit-tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive # Needed in order to fetch Kalium sources for building
fetch-depth: 0
- name: Set up JDK 17
uses: buildjet/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.ENCODED_KEYSTORE_PRE_RELEASE }}
run: |
TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore
mkdir "${TMP_KEYSTORE_FILE_PATH}"
echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/the.keystore
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Build beta flavour APK
run:
./gradlew app:assembleBetaRelease
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_RELEASE: ${{ secrets.SIGNING_KEY_ALIAS_PRE_RELEASE }}
KEYPWD_RELEASE: ${{ secrets.SIGNING_KEY_PASSWORD_PRE_RELEASE }}
KEYSTOREPWD_RELEASE: ${{ secrets.SIGNING_STORE_PASSWORD_PRE_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Build beta flavour Bundle
run:
./gradlew app:bundleBetaRelease
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_RELEASE: ${{ secrets.SIGNING_KEY_ALIAS_PRE_RELEASE }}
KEYPWD_RELEASE: ${{ secrets.SIGNING_KEY_PASSWORD_PRE_RELEASE }}
KEYSTOREPWD_RELEASE: ${{ secrets.SIGNING_STORE_PASSWORD_PRE_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Upload
if: success()
uses: actions/upload-artifact@v4
with:
name: Build Artifacts
path: app/build/outputs/
79 changes: 79 additions & 0 deletions .github/workflows/build-develop-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: "Develop build"
on:
push:
branches:
- develop
pull_request:
branches:
- develop
types: [ opened, synchronize ]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
code-analysis:
uses: ./.github/workflows/code-analysis.yml
ui-tests:
uses: ./.github/workflows/gradle-run-ui-tests.yml
unit-tests:
uses: ./.github/workflows/gradle-run-unit-tests.yml
build-app:
needs: [ code-analysis, ui-tests, unit-tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive # Needed in order to fetch Kalium sources for building
fetch-depth: 0
- name: Set up JDK 17
uses: buildjet/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Decode debug Keystore
env:
ENCODED_STRING: ${{ secrets.ENCODED_KEYSTORE_DEBUG }}
run: |
TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore
mkdir "${TMP_KEYSTORE_FILE_PATH}"
echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/the.keystore
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: build dev flavour
run:
./gradlew app:assembleDevDebug
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_DEBUG: ${{ secrets.SIGNING_KEY_ALIAS_DEBUG }}
KEYPWD_DEBUG: ${{ secrets.SIGNING_KEY_PASSWORD_DEBUG }}
KEYSTOREPWD_DEBUG: ${{ secrets.SIGNING_STORE_PASSWORD_DEBUG }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Decode release Keystore
env:
ENCODED_STRING: ${{ secrets.ENCODED_KEYSTORE_PRE_RELEASE }}
run: |
TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore
echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/the.keystore
- name: build staging flavour
run:
./gradlew app:assembleStagingRelease
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_RELEASE: ${{ secrets.SIGNING_KEY_ALIAS_PRE_RELEASE }}
KEYPWD_RELEASE: ${{ secrets.SIGNING_KEY_PASSWORD_PRE_RELEASE }}
KEYSTOREPWD_RELEASE: ${{ secrets.SIGNING_STORE_PASSWORD_PRE_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Upload
if: success()
uses: actions/upload-artifact@v4
with:
name: Build Artifacts
path: app/build/outputs/
72 changes: 72 additions & 0 deletions .github/workflows/build-prod-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: "Prod build"

on:
push:
tags:
- 'v*'

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
code-analysis:
uses: ./.github/workflows/code-analysis.yml
ui-tests:
uses: ./.github/workflows/gradle-run-ui-tests.yml
unit-tests:
uses: ./.github/workflows/gradle-run-unit-tests.yml
build-app:
needs: [ code-analysis, ui-tests, unit-tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive # Needed in order to fetch Kalium sources for building
fetch-depth: 0
- name: Set up JDK 17
uses: buildjet/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.ENCODED_KEYSTORE_PUBLIC_RELEASE }}
run: |
TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore
mkdir "${TMP_KEYSTORE_FILE_PATH}"
echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/the.keystore
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: build prod flavour APK
run:
./gradlew app:assembleProdCompatRelease
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_COMPAT_RELEASE: ${{ secrets.SIGNING_KEY_ALIAS_PUBLIC_RELEASE }}
KEYPWD_COMPAT_RELEASE: ${{ secrets.SIGNING_KEY_PASSWORD_PUBLIC_RELEASE }}
KEYSTOREPWD_COMPAT_RELEASE: ${{ secrets.SIGNING_STORE_PASSWORD_PUBLIC_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: build prod flavour bundle
run:
./gradlew app:bundleProdCompatRelease
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_COMPAT_RELEASE: ${{ secrets.SIGNING_KEY_ALIAS_PUBLIC_RELEASE }}
KEYPWD_COMPAT_RELEASE: ${{ secrets.SIGNING_KEY_PASSWORD_PUBLIC_RELEASE }}
KEYSTOREPWD_COMPAT_RELEASE: ${{ secrets.SIGNING_STORE_PASSWORD_PUBLIC_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Upload
if: success()
uses: actions/upload-artifact@v4
with:
name: Build Artifacts
path: app/build/outputs/
88 changes: 88 additions & 0 deletions .github/workflows/build-rc-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: "Release candidate build"

on:
push:
branches:
- release/candidate
merge_group:
pull_request:
branches:
- release/candidate
types: [ opened, synchronize ]
workflow_call:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
code-analysis:
uses: ./.github/workflows/code-analysis.yml
ui-tests:
uses: ./.github/workflows/gradle-run-ui-tests.yml
unit-tests:
uses: ./.github/workflows/gradle-run-unit-tests.yml
build-app:
needs: [ code-analysis, ui-tests, unit-tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive # Needed in order to fetch Kalium sources for building
fetch-depth: 0
- name: Set up JDK 17
uses: buildjet/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.ENCODED_KEYSTORE_INTERNAL_RELEASE }}
run: |
TMP_KEYSTORE_FILE_PATH="${RUNNER_TEMP}"/keystore
mkdir "${TMP_KEYSTORE_FILE_PATH}"
echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/the.keystore
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Build internal flavour APK
run:
./gradlew app:assembleInternalCompat
env:
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_COMPAT: ${{ secrets.SIGNING_KEY_ALIAS_INTERNAL_RELEASE }}
KEYPWD_COMPAT: ${{ secrets.SIGNING_KEY_PASSWORD_INTERNAL_RELEASE }}
KEYSTOREPWD_COMPAT: ${{ secrets.SIGNING_STORE_PASSWORD_INTERNAL_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Build internal flavour bundle
run:
./gradlew app:bundleInternalCompat
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
WIRE_KEYSTORE_PATH: ${{ vars.WIRE_KEYSTORE_PATH }}
KEYSTORE_KEY_NAME_COMPAT: ${{ secrets.SIGNING_KEY_ALIAS_INTERNAL_RELEASE }}
KEYPWD_COMPAT: ${{ secrets.SIGNING_KEY_PASSWORD_INTERNAL_RELEASE }}
KEYSTOREPWD_COMPAT: ${{ secrets.SIGNING_STORE_PASSWORD_INTERNAL_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Build Staging flavour
run:
./gradlew app:assembleStagingCompat
env:
KEYSTORE_FILE_PATH_DEBUG: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_FILE_PATH_COMPAT_RELEASE: ${{ vars.KEYSTORE_FILE_PATH }}
KEYSTORE_KEY_NAME_COMPAT: ${{ secrets.SIGNING_KEY_ALIAS_INTERNAL_RELEASE }}
KEYPWD_COMPAT: ${{ secrets.SIGNING_KEY_PASSWORD_INTERNAL_RELEASE }}
KEYSTOREPWD_COMPAT: ${{ secrets.SIGNING_STORE_PASSWORD_INTERNAL_RELEASE }}
ENABLE_SIGNING: ${{ secrets.ENABLE_SIGNING }}
- name: Upload
if: success()
uses: actions/upload-artifact@v4
with:
name: Build Artifacts
path: app/build/outputs/
23 changes: 5 additions & 18 deletions .github/workflows/gradle-run-ui-tests.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,10 @@
name: "Run UI Tests"

on:
merge_group:
push:
branches:
- develop
- release/candidate
- prod
- internal
- main
pull_request:
types: [ opened, synchronize ] # Don't rerun on `edited` to save time
branches:
- develop
- release/candidate
- prod
- internal
- main
workflow_call:

on: [ workflow_call ]

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
Expand Down
Loading

0 comments on commit 482c179

Please sign in to comment.