From 50090c8ed79e4d0c106c696d427d78d510aecf39 Mon Sep 17 00:00:00 2001 From: benya Date: Sun, 18 Jan 2026 22:09:19 +0300 Subject: [PATCH] Bump to check CI/CD --- .gitea/workflows/release.yml | 110 +++++++++++++++++++---------------- app/build.gradle | 2 +- 2 files changed, 62 insertions(+), 50 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index b1377d1..7945158 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -10,33 +10,39 @@ jobs: runs-on: ubuntu-latest steps: + # ------------------- Checkout ------------------- - name: Checkout uses: https://git.daemonlord.ru/actions/checkout@v4 with: fetch-depth: 0 tags: true + # ------------------- Setup JDK ------------------- - name: Set up JDK 17 uses: https://git.daemonlord.ru/actions/setup-java@v4 with: distribution: temurin java-version: 17 + # ------------------- Install Node.js ------------------- - name: Install Node.js run: | curl -fsSL https://deb.nodesource.com/setup_22.x | bash - apt-get install -y nodejs + # ------------------- Extract version ------------------- - name: Extract versionName + id: extract_version run: | VERSION=$(grep -oP 'versionName\s+"[^"]+"' app/build.gradle | head -n1 | cut -d'"' -f2 | tr -d '\r\n') - echo $VERSION > version.txt + echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Detected version: $VERSION" + # ------------------- Stop if already released ------------------- - name: Stop if version already released id: stop run: | - VERSION=$(cat version.txt) + VERSION=${{ steps.extract_version.outputs.version }} echo "version=$VERSION" >> $GITHUB_OUTPUT if git show-ref --tags --quiet --verify "refs/tags/$VERSION"; then echo "Version $VERSION already released, stopping job." @@ -44,56 +50,40 @@ jobs: else echo "Version $VERSION not released yet, continuing workflow..." echo "continue=true" >> $GITHUB_OUTPUT - fi + # ------------------- Decode keystore ------------------- - name: Decode keystore if: steps.stop.outputs.continue == 'true' run: | echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > app/release.keystore - - name: Check keystore - if: steps.stop.outputs.continue == 'true' - run: ls -l app/ - - name: Make Gradlew executable if: steps.stop.outputs.continue == 'true' run: chmod +x ./gradlew + # ------------------- Set up Android SDK ------------------- - name: Set up Android SDK if: steps.stop.outputs.continue == 'true' - run: | - mkdir -p $HOME/Android/sdk/cmdline-tools - wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O cmdline-tools.zip - unzip -q cmdline-tools.zip -d $HOME/Android/sdk/cmdline-tools - mv $HOME/Android/sdk/cmdline-tools/cmdline-tools $HOME/Android/sdk/cmdline-tools/latest - - export ANDROID_SDK_ROOT=$HOME/Android/sdk - export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH - - # Устанавливаем пакеты без интерактивного ввода - yes | sdkmanager --sdk_root=$ANDROID_SDK_ROOT --licenses || true - sdkmanager --sdk_root=$ANDROID_SDK_ROOT "platform-tools" "platforms;android-36" "build-tools;36.0.0" --verbose - - echo "ANDROID_SDK_ROOT=$HOME/Android/sdk" >> $GITHUB_ENV - echo "PATH=$HOME/Android/sdk/cmdline-tools/latest/bin:$HOME/Android/sdk/platform-tools:$PATH" >> $GITHUB_ENV + uses: https://git.daemonlord.ru/actions/setup-android + # ------------------- Build Release APK ------------------- - name: Build Release APK if: steps.stop.outputs.continue == 'true' env: KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} KEY_ALIAS: ${{ secrets.KEY_ALIAS }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - run: | - VERSION=$(cat version.txt) - ./gradlew assembleRelease + run: ./gradlew --no-daemon assembleRelease + # ------------------- Git tag ------------------- - name: Create git tag if: steps.stop.outputs.continue == 'true' run: | - VERSION=$(cat version.txt) + VERSION=${{ steps.stop.outputs.version }} git tag $VERSION git push origin $VERSION + # ------------------- Gitea release ------------------- - name: Create Gitea Release if: steps.stop.outputs.continue == 'true' uses: https://git.daemonlord.ru/actions/gitea-release-action@v1 @@ -108,35 +98,57 @@ jobs: files: | app/build/outputs/apk/release/*.apk + # ------------------- Prepare F-Droid Repo ------------------- - name: Prepare F-Droid Repo if: steps.stop.outputs.continue == 'true' run: | - mkdir -p /tmp/fdroid-repo - cp app/build/outputs/apk/release/*.apk /tmp/fdroid-repo/ - cp fdroid/config.yml /tmp/fdroid-repo/config.yml - cp fdroid/icon.png /tmp/fdroid-repo/icon.png + LICENSE="MIT" # или ${{ secrets.FDROID_LICENSE }} - # ----------------------------- - # 9. Обновляем F-Droid репозиторий - # ----------------------------- - - name: Update F-Droid Repo + mkdir -p fdroid-repo/repo + mkdir -p fdroid-repo/metadata + + cp app/build/outputs/apk/release/*.apk fdroid-repo/repo/ + + for apk in fdroid-repo/repo/*.apk; do + FILENAME=$(basename "$apk") + SHA256=$(sha256sum "$apk" | awk '{print $1}') + VERSION=${{ steps.stop.outputs.version }} + VERSION_CODE=$(echo $VERSION | awk -F. '{ printf("%d%02d%02d", $1,$2,$3 ? $3 : 0); }') + APPID=$(grep 'applicationId' app/build.gradle | awk -F '"' '{print $2}') + SOURCECODE="https://git.daemonlord.ru/${{ gitea.repository }}" + + cat > "fdroid-repo/metadata/$APPID.yml" < ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -p $SCP_PORT -H $SCP_SERVER >> ~/.ssh/known_hosts + rsync -avz --delete -e "ssh -p $SCP_PORT" fdroid-repo/ $SCP_USER@$SCP_SERVER:$SCP_TARGET_PATH diff --git a/app/build.gradle b/app/build.gradle index 069f8ae..412b2ed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { applicationId "com.anabasis.vkchatmanager" minSdk 26 targetSdk 36 - versionCode 5 + versionCode 10103 versionName "1.1.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"