Skip to content

Building apps

Building apps #96

Workflow file for this run

name: Build apps
run-name: Building apps
on:
workflow_dispatch:
push:
# only build if (non-ios) app files were modified
paths:
- 'app/**'
- '!app/.idea/**'
- '!app/.fleet/**'
- '!app/.gitignore'
- '!app/iosApp/**'
defaults:
run:
working-directory: ./app
jobs:
build-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
#cache: 'gradle'
- name: Setup Android SDK and licenses
uses: android-actions/setup-android@v3
- uses: actions/checkout@v4
- name: Retrieve the secret and decode it to a file
env:
KEYSTORE_B64: ${{ secrets.keystore_b64 }}
run: echo $KEYSTORE_B64 | base64 --decode > $GITHUB_WORKSPACE/signing-key.jks
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Build app
run: ./gradlew buildRelease
- name: Sign app
env:
KEYSTORE_PASSWORD: ${{ secrets.keystore_password }}
KEY_ALIAS: ${{ secrets.key_alias }}
KEY_PASSWORD: ${{ secrets.key_password }}
run: |
./gradlew assembleRelease \
-Pandroid.injected.signing.store.file=$GITHUB_WORKSPACE/signing-key.jks \
-Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \
-Pandroid.injected.signing.key.alias=$KEY_ALIAS \
-Pandroid.injected.signing.key.password=$KEY_PASSWORD
- name: "Deleting keystore file"
run: rm $GITHUB_WORKSPACE/signing-key.jks
- name: Upload apk as artifact
uses: actions/upload-artifact@v4
with:
name: app-build
path: app/composeApp/build/outputs/apk/release/composeApp-release.apk
build-desktop:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
#cache: 'gradle'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Build jar
run: ./gradlew packageUberJarForCurrentOS
- name: Rename file
run: mv composeApp/build/compose/jars/com.pras.slugcourses-windows-x64-1.0.0.jar composeApp/build/compose/jars/com.pras.slugcourses.jar
- name: Upload jar as artifact
uses: actions/upload-artifact@v4
with:
name: universal-jar-build
path: app/composeApp/build/compose/jars/com.pras.slugcourses.jar
- name: Build exe
run: ./gradlew packageReleaseExe
- name: Upload windows exe as artifact
uses: actions/upload-artifact@v4
with:
name: exe-build
path: app/composeApp/build/compose/binaries/main-release/exe/com.pras.slugcourses-1.0.0.exe
# build-ios:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v4
#
# - name: Set up JDK 17
# uses: actions/setup-java@v4
# with:
# java-version: '17'
# distribution: 'temurin'
## cache: 'gradle'
##
## - name: Setup Gradle
## uses: gradle/actions/setup-gradle@v3
#
# - name: Prepare build
# working-directory: .
# run: ./gradlew iosArm64Binaries
#
# - name: Build xcarchive
# working-directory: .
# run: xcodebuild build -workspace iosApp/iosApp.xcodeproj/project.xcworkspace/ -configuration Release -scheme iosApp -sdk iphoneos -destination name='iPhone 15' -verbose -archivePath iosOut/SlugCourses.xcarchive archive -allowProvisioningUpdates
#
# - name: Create ipa (may not work)
# working-directory: iosOut/SlugCourses.xcarchive/Products/Applications
# run: zip -r SlugCourses.ipa Slug\ Courses.app/
#
# - name: Upload ipa as artifact
# uses: actions/upload-artifact@v4
# with:
# name: ipa-build-untested
# path: iosOut/SlugCourses.xcarchive/Products/Applications/SlugCourses.ipa