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 < 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