Building apps #96
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |