1 Commits
3.0 ... master

Author SHA1 Message Date
346b0158eb Ajout de la compilation signée de l’apk 2025-07-09 18:12:10 +02:00
2 changed files with 44 additions and 15 deletions

View File

@ -1,5 +1,3 @@
name: 🚀 Créer une nouvelle version
on: on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
@ -15,16 +13,16 @@ on:
- oui - oui
- non - non
jobs: jobs:
release: release:
name: 🚀 Créer une nouvelle version
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: 📦 Cloner le dépôt - name: 📦 Cloner le dépôt
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
fetch-depth: 0 # important pour récupérer tout l'historique fetch-depth: 0
- name: 🔧 Préparation de Git (tags) - name: 🔧 Préparation de Git (tags)
run: git fetch --tags run: git fetch --tags
@ -86,7 +84,7 @@ jobs:
echo "$LOG" >> $GITHUB_OUTPUT echo "$LOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT
- name: 📦 Création de la version sur Gitea - name: 📦 Création de la publication sur Gitea
id: creation-release id: creation-release
env: env:
REGISTRY_URL: ${{ vars.REGISTRY_URL }} REGISTRY_URL: ${{ vars.REGISTRY_URL }}
@ -95,8 +93,6 @@ jobs:
COMMITS: ${{ steps.changelog.outputs.modifications }} COMMITS: ${{ steps.changelog.outputs.modifications }}
run: | run: |
TAG_NAME="${{ github.event.inputs.tag }}" TAG_NAME="${{ github.event.inputs.tag }}"
# Échappement du contenu pour JSON
DESCRIPTION="Changelog:"$'\n'"$COMMITS" DESCRIPTION="Changelog:"$'\n'"$COMMITS"
ESCAPED_DESCRIPTION=$(printf '%s\n' "$DESCRIPTION" | jq -Rsa .) ESCAPED_DESCRIPTION=$(printf '%s\n' "$DESCRIPTION" | jq -Rsa .)
@ -112,9 +108,12 @@ jobs:
echo "$REPONSE" echo "$REPONSE"
ID_RELEASE=$(echo "$REPONSE" | jq -r .id) ID_RELEASE=$(echo "$REPONSE" | jq -r .id)
if [ -z "$ID_RELEASE" ] || [ "$ID_RELEASE" = "null" ]; then
echo "❌ Échec : impossible de récupérer lID de la version depuis Gitea."
exit 1
fi
echo "id_release=$ID_RELEASE" >> $GITHUB_OUTPUT echo "id_release=$ID_RELEASE" >> $GITHUB_OUTPUT
- name: 🔍️ Extraire les informations de lapplication - name: 🔍️ Extraire les informations de lapplication
id: extraire-info-gradle id: extraire-info-gradle
if: ${{ github.event.inputs.build_apk == 'oui' }} if: ${{ github.event.inputs.build_apk == 'oui' }}
@ -141,9 +140,29 @@ jobs:
api-level: ${{ steps.extraire-info-gradle.outputs.sdk }} api-level: ${{ steps.extraire-info-gradle.outputs.sdk }}
build-tools-version: ${{ steps.extraire-info-gradle.outputs.sdk }}.0.3 build-tools-version: ${{ steps.extraire-info-gradle.outputs.sdk }}.0.3
- name: 🛠️ Compilation de lapplication (APK) - name: 🔐 Récupérer et décoder le keystore
id: decode-keystore
if: ${{ github.event.inputs.build_apk == 'oui' }} if: ${{ github.event.inputs.build_apk == 'oui' }}
run: ./gradlew assembleRelease env:
KEYSTORE_B64: ${{ secrets.KEYSTORE_B64 }}
run: |
echo "$KEYSTORE_B64" | base64 -d > app/keystore.jks
ls -1 app/keystore.jks
echo "keystore_path=$(realpath app/keystore.jks)" >> $GITHUB_OUTPUT
- name: 🛠️ Compilation signée de lapplication (APK)
if: ${{ github.event.inputs.build_apk == 'oui' }}
env:
KEYSTORE_FILE: ${{ steps.decode-keystore.outputs.keystore_path }}
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 lAPK avec le nom de lapplication et le tag - name: 🏷️ Renommer lAPK avec le nom de lapplication et le tag
id: renommer-apk id: renommer-apk
@ -152,19 +171,19 @@ jobs:
APP_NAME=${{ steps.extraire-info-gradle.outputs.app_name }} APP_NAME=${{ steps.extraire-info-gradle.outputs.app_name }}
TAG=${{ github.event.inputs.tag }} TAG=${{ github.event.inputs.tag }}
APK_DIR="app/build/outputs/apk/release" APK_DIR="app/build/outputs/apk/release"
APKs="" APKs=""
for apk in "$APK_DIR"/*.apk; do for apk in "$APK_DIR"/*.apk; do
BASENAME=$(basename "$apk") # ex: app-release-unsigned.apk BASENAME=$(basename "$apk")
SUFFIX=${BASENAME#app} # ex: -release-unsigned.apk SUFFIX=${BASENAME#app}
NEW_NAME="${APP_NAME}${SUFFIX%\.apk}_${TAG}.apk" # ex: MonApp-release-unsigned_v1.2.3.apk NEW_NAME="${APP_NAME}${SUFFIX%\.apk}_${TAG}.apk"
mv "$apk" "$APK_DIR/$NEW_NAME" mv "$apk" "$APK_DIR/$NEW_NAME"
APKs+=" $APK_DIR/$NEW_NAME" APKs+=" $APK_DIR/$NEW_NAME"
done done
echo "📦 Liste des apks : $APKs" echo "📦 Liste des apks : $APKs"
echo "apk_files=$APKs" >> $GITHUB_OUTPUT echo "apk_files=$APKs" >> $GITHUB_OUTPUT
- name: 📤 Téléversement de lAPK dans la version - name: 📤 Ajout de lAPK sur la publication
if: ${{ github.event.inputs.build_apk == 'oui' }} if: ${{ github.event.inputs.build_apk == 'oui' }}
env: env:
REGISTRY_URL: ${{ vars.REGISTRY_URL }} REGISTRY_URL: ${{ vars.REGISTRY_URL }}

View File

@ -12,8 +12,18 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 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 { buildTypes {
release { release {
signingConfig signingConfigs.release
minifyEnabled true minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }