Some checks failed
Build APK / build-apk (push) Failing after 3m21s
- build.yml: kotlin-android-Plugin (1.9.24) + JVM-Target 17 aktiviert — .kt-Dateien wurden vorher stillschweigend ignoriert (kein Kotlin-Compiler), NetDiagScannerPlugin fehlte im APK -> 'plugin not implemented' fuer alle nativen Scan-Methoden - build.yml: MainActivity.java durch .kt ersetzen (rm + cat), vermeidet Klassenkollision und registriert das Plugin korrekt - sync.svelte.ts: syncManual() -- gibt immer sichtbares Toast-Feedback (Fehler-Details, offline, nicht angemeldet, alles synchronisiert) - AppHeader.svelte: Sync-Button ruft syncManual() statt syncNow() Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
160 lines
6.5 KiB
YAML
160 lines
6.5 KiB
YAML
name: Build APK
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
build-apk:
|
|
if: contains(github.event.head_commit.message, '[apk]')
|
|
runs-on: docker
|
|
steps:
|
|
- name: Notify Start
|
|
uses: https://git.data-it-solution.de/data/ntfy-action@main
|
|
with:
|
|
status: start
|
|
project: NetDiag APK
|
|
ntfy_auth: ${{ secrets.NTFY_AUTH }}
|
|
run_number: ${{ github.run_number }}
|
|
message: ${{ github.event.head_commit.message }}
|
|
|
|
- name: Repo klonen + Version festlegen
|
|
run: |
|
|
git clone https://data:${{ secrets.GIT_TOKEN }}@git.data-it-solution.de/data/netdiag-app.git .
|
|
git checkout ${{ github.sha }}
|
|
echo "$(date +%Y%m%d-%H%M)" > /tmp/BUILD_VERSION
|
|
|
|
- name: Node.js Dependencies installieren
|
|
run: npm install
|
|
|
|
- name: Frontend bauen
|
|
run: VITE_APP_VERSION="$(cat /tmp/BUILD_VERSION)" npx vite build
|
|
|
|
- name: Android-Projekt anlegen
|
|
run: |
|
|
# cap add android nur wenn android/ noch nicht vorhanden
|
|
[ -d android ] || npx cap add android
|
|
|
|
- name: Natives Plugin kopieren
|
|
run: |
|
|
PLUGIN_DST=android/app/src/main/java/de/data_it_solution/netdiag
|
|
mkdir -p "$PLUGIN_DST"
|
|
cp native-plugin/NetDiagScannerPlugin.kt "$PLUGIN_DST/"
|
|
cp native-plugin/Snmp.kt "$PLUGIN_DST/"
|
|
|
|
- name: Kotlin im Gradle-Build aktivieren
|
|
run: |
|
|
# Das native Plugin ist Kotlin. Das von `cap add android` erzeugte
|
|
# App-Modul hat aber KEIN Kotlin aktiviert. Ohne kotlin-android-Plugin
|
|
# werden .kt-Dateien beim Build stillschweigend ignoriert (kein Fehler)
|
|
# -> NetDiagScannerPlugin landet nie im APK -> "plugin not implemented".
|
|
KOTLIN_VERSION=1.9.24
|
|
# 1. Kotlin-Gradle-Plugin auf Projektebene verfügbar machen
|
|
if ! grep -q 'kotlin-gradle-plugin' android/build.gradle; then
|
|
sed -i "/com.android.tools.build:gradle/a\\ classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:${KOTLIN_VERSION}\"" android/build.gradle
|
|
fi
|
|
# 2. Plugin im App-Modul anwenden + JVM-Target auf 17 (Java-Target von Capacitor 6)
|
|
APP=android/app/build.gradle
|
|
if ! grep -q 'kotlin-android' "$APP"; then
|
|
sed -i "/apply plugin: 'com.android.application'/a apply plugin: 'kotlin-android'" "$APP"
|
|
sed -i "/^android {/a\\ kotlinOptions { jvmTarget = '17' }" "$APP"
|
|
fi
|
|
# 3. Coroutines-Abhängigkeit (vom Plugin genutzt)
|
|
if ! grep -q 'kotlinx-coroutines-android' "$APP"; then
|
|
sed -i '/dependencies {/a \ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0"' "$APP"
|
|
fi
|
|
|
|
- name: MainActivity durch Kotlin-Variante ersetzen (Plugin registrieren)
|
|
run: |
|
|
PKG=android/app/src/main/java/de/data_it_solution/netdiag
|
|
# `cap add android` erzeugt MainActivity.java — die registriert das
|
|
# Plugin NICHT und würde mit unserer .kt-Klasse kollidieren (gleiche
|
|
# Klasse, gleiches Package). Also Java-Datei löschen, Kotlin schreiben.
|
|
rm -f "$PKG/MainActivity.java"
|
|
cat > "$PKG/MainActivity.kt" <<'KT'
|
|
package de.data_it_solution.netdiag
|
|
|
|
import android.os.Bundle
|
|
import com.getcapacitor.BridgeActivity
|
|
|
|
class MainActivity : BridgeActivity() {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
registerPlugin(NetDiagScannerPlugin::class.java)
|
|
super.onCreate(savedInstanceState)
|
|
}
|
|
}
|
|
KT
|
|
|
|
- name: Capacitor sync
|
|
run: npx cap sync android
|
|
|
|
- name: Keystore vorbereiten
|
|
run: |
|
|
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > /tmp/release.jks
|
|
cat > android/gradle.properties <<PROPS
|
|
android.useAndroidX=true
|
|
RELEASE_STORE_FILE=/tmp/release.jks
|
|
RELEASE_STORE_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }}
|
|
RELEASE_KEY_ALIAS=${{ secrets.KEY_ALIAS }}
|
|
RELEASE_KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}
|
|
PROPS
|
|
|
|
- name: Release-Signing in build.gradle eintragen
|
|
run: |
|
|
cd android/app
|
|
sed -i '/buildTypes {/i \
|
|
signingConfigs {\
|
|
release {\
|
|
storeFile file(RELEASE_STORE_FILE)\
|
|
storePassword RELEASE_STORE_PASSWORD\
|
|
keyAlias RELEASE_KEY_ALIAS\
|
|
keyPassword RELEASE_KEY_PASSWORD\
|
|
}\
|
|
}' build.gradle
|
|
sed -i 's/minifyEnabled false/minifyEnabled false\n signingConfig signingConfigs.release/' build.gradle
|
|
|
|
- name: APK bauen (Release)
|
|
run: |
|
|
cd android
|
|
echo "sdk.dir=/opt/android-sdk" > local.properties
|
|
echo "org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m" >> gradle.properties
|
|
chmod +x gradlew
|
|
./gradlew assembleRelease --no-daemon
|
|
|
|
- name: APK in Package Registry hochladen
|
|
run: |
|
|
VERSION=$(cat /tmp/BUILD_VERSION)
|
|
APK_FILE=$(find android/app/build -name "*.apk" -path "*/release/*" | head -1)
|
|
echo "APK gefunden: $APK_FILE"
|
|
|
|
curl --fail --user "data:${{ secrets.REGISTRY_TOKEN }}" \
|
|
--upload-file "$APK_FILE" \
|
|
"https://git.data-it-solution.de/api/packages/data-it/generic/netdiag-apk/${VERSION}/NetDiag-${VERSION}.apk"
|
|
|
|
curl -s -X DELETE --user "data:${{ secrets.REGISTRY_TOKEN }}" \
|
|
"https://git.data-it-solution.de/api/v1/packages/data-it/generic/netdiag-apk/latest" || true
|
|
|
|
curl --fail --user "data:${{ secrets.REGISTRY_TOKEN }}" \
|
|
--upload-file "$APK_FILE" \
|
|
"https://git.data-it-solution.de/api/packages/data-it/generic/netdiag-apk/latest/NetDiag.apk"
|
|
|
|
echo "APK hochgeladen: ${VERSION} + latest"
|
|
|
|
- name: Notify Success
|
|
if: success()
|
|
uses: https://git.data-it-solution.de/data/ntfy-action@main
|
|
with:
|
|
status: success
|
|
project: NetDiag APK
|
|
ntfy_auth: ${{ secrets.NTFY_AUTH }}
|
|
run_number: ${{ github.run_number }}
|
|
|
|
- name: Notify Failure
|
|
if: failure()
|
|
uses: https://git.data-it-solution.de/data/ntfy-action@main
|
|
with:
|
|
status: failure
|
|
project: NetDiag APK
|
|
ntfy_auth: ${{ secrets.NTFY_AUTH }}
|
|
run_number: ${{ github.run_number }}
|
|
click_url: https://git.data-it-solution.de/${{ github.repository }}/actions
|