diff --git a/.gitea/workflows/publish.yml b/.gitea/workflows/publish.yml index 574c021..83d5fd8 100644 --- a/.gitea/workflows/publish.yml +++ b/.gitea/workflows/publish.yml @@ -15,7 +15,6 @@ on: - oui - non - jobs: release: runs-on: ubuntu-latest @@ -24,7 +23,7 @@ jobs: - name: 📦 Cloner le dépôt uses: actions/checkout@v3 with: - fetch-depth: 0 # important pour récupérer tout l'historique + fetch-depth: 0 - name: 🔧 Préparation de Git (tags) run: git fetch --tags @@ -95,8 +94,6 @@ jobs: COMMITS: ${{ steps.changelog.outputs.modifications }} run: | TAG_NAME="${{ github.event.inputs.tag }}" - - # Échappement du contenu pour JSON DESCRIPTION="Changelog:"$'\n'"$COMMITS" ESCAPED_DESCRIPTION=$(printf '%s\n' "$DESCRIPTION" | jq -Rsa .) @@ -114,7 +111,6 @@ jobs: ID_RELEASE=$(echo "$REPONSE" | jq -r .id) echo "id_release=$ID_RELEASE" >> $GITHUB_OUTPUT - - name: 🔍️ Extraire les informations de l’application id: extraire-info-gradle if: ${{ github.event.inputs.build_apk == 'oui' }} @@ -141,9 +137,27 @@ jobs: api-level: ${{ steps.extraire-info-gradle.outputs.sdk }} build-tools-version: ${{ steps.extraire-info-gradle.outputs.sdk }}.0.3 - - name: 🛠️ Compilation de l’application (APK) + - name: 🔐 Récupérer et décoder le keystore if: ${{ github.event.inputs.build_apk == 'oui' }} - run: ./gradlew assembleRelease + env: + KEYSTORE_B64: ${{ secrets.KEYSTORE_B64 }} + run: | + echo "$KEYSTORE_B64" | base64 -d > my-release-key.jks + ls -l keystore.jks + + - name: 🛠️ Compilation signée de l’application (APK) + if: ${{ github.event.inputs.build_apk == 'oui' }} + env: + KEYSTORE_FILE: keystore.jks + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + KEY_ALIAS: ${{ secrets.KEYSTORE_ALIAS }} + KEY_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + run: | + ./gradlew assembleRelease \ + -Pandroid.injected.signing.store.file=$KEYSTORE_FILE \ + -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \ + -Pandroid.injected.signing.key.alias=$KEY_ALIAS \ + -Pandroid.injected.signing.key.password=$KEY_PASSWORD - name: 🏷️ Renommer l’APK avec le nom de l’application et le tag id: renommer-apk @@ -152,12 +166,12 @@ jobs: APP_NAME=${{ steps.extraire-info-gradle.outputs.app_name }} TAG=${{ github.event.inputs.tag }} APK_DIR="app/build/outputs/apk/release" - + APKs="" for apk in "$APK_DIR"/*.apk; do - BASENAME=$(basename "$apk") # ex: app-release-unsigned.apk - SUFFIX=${BASENAME#app} # ex: -release-unsigned.apk - NEW_NAME="${APP_NAME}${SUFFIX%\.apk}_${TAG}.apk" # ex: MonApp-release-unsigned_v1.2.3.apk + BASENAME=$(basename "$apk") + SUFFIX=${BASENAME#app} + NEW_NAME="${APP_NAME}${SUFFIX%\.apk}_${TAG}.apk" mv "$apk" "$APK_DIR/$NEW_NAME" APKs+=" $APK_DIR/$NEW_NAME" done diff --git a/app/build.gradle b/app/build.gradle index 4aebca6..6091184 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,18 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + signingConfigs { + release { + storeFile file(System.getenv("KEYSTORE_FILE")) + storePassword System.getenv("KEYSTORE_PASSWORD") + keyAlias System.getenv("KEY_ALIAS") + keyPassword System.getenv("KEY_PASSWORD") + } + } + buildTypes { release { + signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' }