nordiccalendar

A simple Material 3 native calendar app fitting my personal requirements
git clone git://archive.git.mtrnord.blog/MTRNord/nordiccalendar.git
Log | Files | Refs | README | LICENSE

commit 80302eb67ec2ae535f377c4a1916f5f401708970
parent 13b525ff9b839be11f005f1a3ba8b45533529534
Author: MTRNord <MTRNord@users.noreply.github.com>
Date:   Tue, 29 Jul 2025 14:05:39 +0200

Prepare CI

Diffstat:
A.github/workflows/nightly.yml | 39+++++++++++++++++++++++++++++++++++++++
A.github/workflows/release.yml | 36++++++++++++++++++++++++++++++++++++
Mapp/build.gradle.kts | 11+++++++++--
3 files changed, 84 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml @@ -0,0 +1,39 @@ +name: Nightly Build + +on: + schedule: + - cron: '0 2 * * *' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + - name: Decode Keystore + run: | + echo "$RELEASE_KEYSTORE_BASE64" | base64 -d > release.jks + env: + RELEASE_KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }} + - name: Build APK & AAB (signed) + env: + RELEASE_KEYSTORE_PATH: release.jks + RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} + RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }} + RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} + run: ./gradlew assembleRelease bundleRelease + - name: Upload APK & AAB to Nightly Release + uses: softprops/action-gh-release@v2 + with: + tag_name: nightly + name: Nightly Build + prerelease: true + files: | + app/build/outputs/apk/release/app-release.apk + app/build/outputs/bundle/release/app-release.aab + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml @@ -0,0 +1,36 @@ +name: Release Build + +on: + push: + tags: + - 'v*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + - name: Decode Keystore + run: | + echo "$RELEASE_KEYSTORE_BASE64" | base64 -d > release.jks + env: + RELEASE_KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }} + - name: Build APK & AAB (signed) + env: + RELEASE_KEYSTORE_PATH: release.jks + RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} + RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }} + RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} + run: ./gradlew assembleRelease bundleRelease + - name: Upload APK & AAB to Release + uses: softprops/action-gh-release@v2 + with: + files: | + app/build/outputs/apk/release/app-release.apk + app/build/outputs/bundle/release/app-release.aab + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/app/build.gradle.kts b/app/build.gradle.kts @@ -20,6 +20,14 @@ android { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } + signingConfigs { + create("release") { + storeFile = file(System.getenv("RELEASE_KEYSTORE_PATH") ?: "release.jks") + storePassword = System.getenv("RELEASE_KEYSTORE_PASSWORD") + keyAlias = System.getenv("RELEASE_KEY_ALIAS") + keyPassword = System.getenv("RELEASE_KEY_PASSWORD") + } + } buildTypes { release { isMinifyEnabled = false @@ -28,8 +36,7 @@ android { getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) - - signingConfig = signingConfigs.getByName("debug") + signingConfig = signingConfigs.getByName("release") } } compileOptions {