Some checks failed
Build APK / build-apk (push) Failing after 11m29s
SvelteKit + Capacitor 6 Netzwerk-Diagnose-App: - Tool-Plattform (IP-Scan, Port, Ping, WLAN, DHCP, SNMP, Traceroute, Stresstest, iperf) - Offline-First SQLite-Cache + idempotenter Dolibarr-Sync - Natives Kotlin-Plugin NetDiagScanner (ARP, Ping, Ports, WLAN, DHCP, SNMP, Traceroute) - Backbutton-Single-Instance-Modul, Auto-Updater, Toast-System - Auftrags-/Kunden-Übersicht nach Baustellen-App-Muster - CI: [apk]-Tag → Forgejo Runner → Package Registry netdiag-apk Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
143 lines
5.2 KiB
YAML
143 lines
5.2 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: MainActivity — Plugin registrieren
|
|
run: |
|
|
MAIN=android/app/src/main/java/de/data_it_solution/netdiag/MainActivity.kt
|
|
if ! grep -q 'NetDiagScannerPlugin' "$MAIN"; then
|
|
cat > "$MAIN" <<'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
|
|
fi
|
|
|
|
- name: Kotlin-Coroutines sicherstellen
|
|
run: |
|
|
GRADLE=android/app/build.gradle
|
|
if ! grep -q 'kotlinx-coroutines-android' "$GRADLE"; then
|
|
sed -i '/dependencies {/a \ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0"' "$GRADLE"
|
|
fi
|
|
|
|
- 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
|