Skip to content

Build Pipeline

Build Pipeline #6

Workflow file for this run

name: Build Pipeline
# This is responsible for the whole delivery pipeline (build, integrate, test and release)
on:
workflow_dispatch:
pull_request:
types: [ opened, synchronize, reopened ]
branches:
- deploy
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
config: [
{ target: Android, os: ubuntu-latest, tasks: ":composeApp:assembleDebug :composeApp:assembleRelease :composeApp:bundleRelease", continueOnError: false },
# { target: ios, os: macos-12, tasks: "iosX64Test iosSimulatorArm64Test", continueOnError: false },
{ target: Windows, os: windows-latest, tasks: ":composeApp:packageReleaseMsi", continueOnError: false },
{ target: Linux, os: ubuntu-latest, tasks: ":composeApp:packageReleaseDeb", continueOnError: false },
]
runs-on: ${{ matrix.config.os }}
name: Build ${{ matrix.config.target }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin
cache: gradle
- if: ${{ matrix.config.target == 'ios' }}
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Build Targets
run: |
./gradlew --console=plain ${{ matrix.config.tasks }} --info
- if: ${{ matrix.config.target == 'Android' }}
name: Sign Android AAB
uses: ilharp/sign-android-release@v1
id: sign_aab
with:
releaseDir: composeApp/build/outputs/bundle/release
signingKey: ${{ secrets.KEYSTORE_FILE }}
keyAlias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
buildToolsVersion: 34.0.0
- if: ${{ matrix.config.target == 'Android' }}
name: Sign Android APK
uses: ilharp/sign-android-release@v1
id: sign_apk
with:
releaseDir: composeApp/build/outputs/apk/release
signingKey: ${{ secrets.KEYSTORE_FILE }}
keyAlias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
buildToolsVersion: 34.0.0
- if: ${{ matrix.config.target == 'Android' }}
name: Upload Android AAB
uses: actions/upload-artifact@master
with:
name: android-release.aab
path: ${{steps.sign_aab.outputs.signedFiles}}
- if: ${{ matrix.config.target == 'Android' }}
name: Upload Android APK
uses: actions/upload-artifact@master
with:
name: android-release.apk
path: ${{steps.sign_apk.outputs.signedFiles}}
- if: ${{ matrix.config.target == 'Android' }}
name: Upload Android Debug APK
uses: actions/upload-artifact@master
with:
name: android-debug.apk
path: ./composeApp/build/outputs/apk/debug/*.apk
- if: ${{ matrix.config.target == 'Windows' }}
name: Upload Windows MSI Package
uses: actions/upload-artifact@master
with:
name: windows-x64.msi
path: ./composeApp/build/compose/binaries/main-release/msi/*.msi
- if: ${{ matrix.config.target == 'Linux' }}
name: Upload Linux DEB Package
uses: actions/upload-artifact@master
with:
name: linux-x64.deb
path: ./composeApp/build/compose/binaries/main-release/deb/*.deb
# - if: ${{ matrix.config.target == 'Android' }}
# name: Upload Mapping File
# uses: actions/upload-artifact@master
# with:
# name: android-mapping.txt
# path:
# android/app/build/outputs/mapping/release/mapping.txt