diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml index 507d544..82be94a 100644 --- a/.github/workflows/android-build.yml +++ b/.github/workflows/android-build.yml @@ -145,6 +145,12 @@ jobs: - name: Build Android wheels run: bash scripts/build-android-wheels-local.sh --python-minor "${PYTHON_VERSION}" --chaquopy-ref "${CHAQUOPY_REF}" --abis arm64-v8a,x86_64,armeabi-v7a + - name: Build MeshChatX wheel for repository bundle + run: | + set -euo pipefail + python -m pip install -U pip build + python -m build --wheel -o dist . + - name: Verify required Android wheels are present run: | set -euo pipefail @@ -177,20 +183,20 @@ jobs: working-directory: android run: | chmod +x gradlew - ./gradlew --no-daemon :app:testSlimDebugUnitTest + ./gradlew --no-daemon :app:testDebugUnitTest - name: Build debug APK working-directory: android run: | chmod +x gradlew - ./gradlew --no-daemon :app:assembleSlimDebug + ./gradlew --no-daemon :app:assembleDebug - name: Build release APK if: ${{ github.event_name != 'workflow_dispatch' || inputs.build_release }} working-directory: android run: | chmod +x gradlew - ./gradlew --no-daemon :app:assembleSlimRelease + ./gradlew --no-daemon :app:assembleRelease - name: Upload wheels uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 @@ -203,7 +209,7 @@ jobs: uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: name: meshchatx-android-debug-${{ github.ref_name }}-${{ github.run_id }} - path: android/app/build/outputs/apk/slim/debug/*.apk + path: android/app/build/outputs/apk/debug/*.apk if-no-files-found: error - name: Upload test reports @@ -221,5 +227,5 @@ jobs: uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: name: meshchatx-android-release-${{ github.ref_name }}-${{ github.run_id }} - path: android/app/build/outputs/apk/slim/release/*.apk + path: android/app/build/outputs/apk/release/*.apk if-no-files-found: error diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6f539fa..c6ca9ad 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,4 +1,5 @@ # Build multi-arch image, push to GHCR, and keyless-sign the manifest (Cosign). +# Runs on push to dev (tags :dev and :sha-*), tags (semver tags), and workflow_dispatch. # # Pinned third-party actions (bump tag and SHA together when upgrading). # Automated check: first step resolves each tag via api.github.com and @@ -21,6 +22,8 @@ name: Docker (GHCR) on: workflow_dispatch: push: + branches: + - dev tags: - "*" diff --git a/Taskfile.yml b/Taskfile.yml index 73d97e9..7fff36c 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -479,7 +479,7 @@ tasks: echo "Preparing Android assets..." mkdir -p "{{.PYTHON_SRC_DIR}}" rm -rf "{{.PYTHON_SRC_DIR}}/meshchatx" - echo "MeshChatX Python tree is synced by Gradle into app/src/slim|full/python/meshchatx (see android/app/build.gradle)." + echo "MeshChatX Python tree is synced by Gradle into app/src/main/python/meshchatx (see android/app/build.gradle)." android:wheels: desc: Build the Android (Chaquopy) wheels into android/vendor/. Mirrors CI. @@ -495,30 +495,28 @@ tasks: --abis "{{.ANDROID_WHEEL_ABIS}}" android:build: - desc: Build Debug APK (slim flavor, universal ABI packaging, arm64-v8a only unless overridden) + desc: Build Debug APK (universal ABI packaging; arm64-v8a only unless overridden) deps: [android:prepare] vars: - MESHCHATX_ANDROID_FLAVOR: '{{.MESHCHATX_ANDROID_FLAVOR | default "slim"}}' MESHCHATX_ABIS: '{{.MESHCHATX_ABIS | default "arm64-v8a"}}' MESHCHATX_ABI_PACKAGING: '{{.MESHCHATX_ABI_PACKAGING | default "universal"}}' cmds: - - cd "{{.ANDROID_DIR}}" && ./gradlew :app:assemble{{title (.MESHCHATX_ANDROID_FLAVOR | default "slim")}}Debug -PmeshchatxAbis={{.MESHCHATX_ABIS}} -PmeshchatxAbiPackaging={{.MESHCHATX_ABI_PACKAGING}} + - cd "{{.ANDROID_DIR}}" && ./gradlew :app:assembleDebug -PmeshchatxAbis={{.MESHCHATX_ABIS}} -PmeshchatxAbiPackaging={{.MESHCHATX_ABI_PACKAGING}} android:build:release: - desc: Build Release APK (same flavor / ABI defaults as android:build unless overridden) + desc: Build Release APK (same ABI defaults as android:build unless overridden) deps: [android:prepare] vars: - MESHCHATX_ANDROID_FLAVOR: '{{.MESHCHATX_ANDROID_FLAVOR | default "slim"}}' MESHCHATX_ABIS: '{{.MESHCHATX_ABIS | default "arm64-v8a"}}' MESHCHATX_ABI_PACKAGING: '{{.MESHCHATX_ABI_PACKAGING | default "universal"}}' cmds: - - cd "{{.ANDROID_DIR}}" && ./gradlew :app:assemble{{title (.MESHCHATX_ANDROID_FLAVOR | default "slim")}}Release -PmeshchatxAbis={{.MESHCHATX_ABIS}} -PmeshchatxAbiPackaging={{.MESHCHATX_ABI_PACKAGING}} + - cd "{{.ANDROID_DIR}}" && ./gradlew :app:assembleRelease -PmeshchatxAbis={{.MESHCHATX_ABIS}} -PmeshchatxAbiPackaging={{.MESHCHATX_ABI_PACKAGING}} android:clean: desc: Clean Android artifacts cmds: - cd "{{.ANDROID_DIR}}" && ./gradlew clean - - rm -rf "{{.PYTHON_SRC_DIR}}/meshchatx" "{{.ANDROID_DIR}}/app/src/slim/python/meshchatx" "{{.ANDROID_DIR}}/app/src/full/python/meshchatx" + - rm -rf "{{.PYTHON_SRC_DIR}}/meshchatx" "{{.ANDROID_DIR}}/app/src/main/python/meshchatx" # --- Maintenance ---