chore: dependencies #301
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build APK (Pre-Release) | |
on: | |
push: | |
branches: | |
- master | |
paths-ignore: | |
- '**.md' | |
- '**.yml' | |
- '**.json' | |
- '**.lock' | |
- '**.properties' | |
- '**.py' | |
- '**.sh' | |
workflow_dispatch: | |
inputs: | |
message: | |
description: 'Message to be sent' | |
required: true | |
default: 'New pre-release APK available for testing!' | |
jobs: | |
validation: | |
name: Commit Validation | |
runs-on: ubuntu-latest | |
outputs: | |
CANCEL_WORKFLOW: ${{ steps.check_commit_message.outputs.CANCEL_WORKFLOW }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Check commit message | |
run: | | |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then | |
echo "Workflow was manually dispatched. Skipping commit message check." | |
echo "CANCEL_WORKFLOW=false" >> $GITHUB_OUTPUT | |
else | |
commit_message=$(git log --format=%B -n 1) | |
if [[ ! "$commit_message" == *"build pre"* ]]; then | |
echo "Commit message does not contain 'build pre'. Cancelling workflow." | |
echo "CANCEL_WORKFLOW=true" >> $GITHUB_OUTPUT | |
else | |
echo "Commit message contains 'build pre'. Proceeding with the workflow." | |
echo "CANCEL_WORKFLOW=false" >> $GITHUB_OUTPUT | |
fi | |
fi | |
id: check_commit_message | |
- name: Verify Actor | |
run: | | |
encoded_actor=$(echo "SGFtemE0MTc=" | base64 --decode) | |
if [[ "${{ github.actor }}" != "$encoded_actor" ]]; then | |
exit 1 | |
fi | |
build: | |
needs: validation | |
if: needs.validation.outputs.CANCEL_WORKFLOW == 'false' | |
name: Build APK | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
cache: 'gradle' | |
- name: Cache Gradle dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.gradle/caches | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Decode Keystore | |
id: decode_keystore | |
uses: timheuer/base64-to-file@v1 | |
with: | |
fileName: 'keystore/key.jks' | |
encodedString: ${{ secrets.SIGN_KEY }} | |
- name: Extract Version Name and Version Code | |
run: | | |
VERSION_NAME=$(cat app/build.gradle | grep -oP 'versionName "\K[^"]*') | |
VERSION_CODE=$(cat app/build.gradle | grep -oP 'versionCode \K\d+') | |
VERSION_NAME=$(echo "$VERSION_NAME" | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) tolower(substr($i,2));}1') | |
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV | |
echo "VERSION_CODE=$VERSION_CODE" >> $GITHUB_ENV | |
- name: Append Latest Commit ID to Version Name | |
run: | | |
VERSION_NAME="${{ env.VERSION_NAME }}_$(git rev-parse --short HEAD)" | |
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV | |
echo "COMMIT_ID=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
- name: Set Current Commit Message | |
run: | | |
echo "COMMIT_MESSAGE=$(git log --format=%B -n 1 | head -n 1)" >> $GITHUB_ENV | |
- name: Accept Android SDK licenses | |
run: yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --licenses | |
- name: Build APK (Pre-Release) | |
run: | | |
if [[ -n "${{ env.GRADLE_PATH }}" ]]; then | |
chmod +x "${{ env.GRADLE_PATH }}" | |
${{ env.GRADLE_PATH }} clean assembleGithubRelease | |
else | |
chmod +x ./gradlew | |
./gradlew clean assembleGithubRelease | |
fi | |
env: | |
SIGNING_KEY_ALIAS: ${{ secrets.ALIAS }} | |
SIGNING_KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} | |
SIGNING_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} | |
- name: Find APK | |
id: find_apk | |
run: | | |
apk=$(find . -type f -name "*.apk") | |
if [ -z "$apk" ]; then | |
echo "No APK file found." | |
exit 1 | |
else | |
echo "APK_PATH=$apk" >> $GITHUB_ENV | |
echo "${{ env.APK_PATH }}" | |
fi | |
- name: Rename APK | |
run: | | |
mv "${{ env.APK_PATH }}" "${{ env.VERSION_NAME }}.apk" | |
echo "APK_PATH=$(find . -type f -name "*.apk")" >> $GITHUB_ENV | |
echo "${{ env.APK_PATH }}" | |
- name: Check File Permissions | |
run: | | |
ls -l "${{ env.APK_PATH }}" | |
echo "File Permissions: $(stat -c '%A' "${{ env.APK_PATH }}")" | |
- name: Set Read Permission | |
run: | | |
chmod +r "${{ env.APK_PATH }}" | |
echo "File Permissions: $(stat -c '%A' "${{ env.APK_PATH }}")" | |
- name: Send APK to Telegram | |
uses: appleboy/telegram-action@master | |
with: | |
to: ${{ secrets.TG_TO }} | |
token: ${{ secrets.TG_BOT_KEY }} | |
document: ${{ env.APK_PATH }} | |
message: | | |
${{ github.event.inputs.message }} | |
Current Build Code: ${{ env.VERSION_CODE }} | |
Current Commit ID: ${{ env.COMMIT_ID }} | |
Commit Message: ${{ env.COMMIT_MESSAGE }} | |
- name: Archive APK | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Pre-Release APK (GitHub) | |
path: ${{ env.APK_PATH }} |