forked from Droid-ify/Releases
.github/workflows/release_build.yml aktualisiert
This commit is contained in:
123
.github/workflows/release_build.yml
vendored
123
.github/workflows/release_build.yml
vendored
@@ -4,21 +4,24 @@ on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
concurrency:
|
||||
group: "release-build"
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
|
||||
- name: Debug Environment
|
||||
run: |
|
||||
echo "Working directory: $(pwd)"
|
||||
@@ -26,141 +29,117 @@ jobs:
|
||||
echo "Ref: ${{ github.ref }}"
|
||||
echo "Ref name: ${{ github.ref_name }}"
|
||||
ls -la
|
||||
|
||||
|
||||
- name: Validate Gradle Wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
|
||||
|
||||
- name: Set up Java 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: 17
|
||||
distribution: 'adopt'
|
||||
cache: gradle
|
||||
|
||||
|
||||
- name: Debug Java and Gradle Setup
|
||||
run: |
|
||||
java -version
|
||||
echo "JAVA_HOME: $JAVA_HOME"
|
||||
|
||||
# Setting up Android SDK manually
|
||||
|
||||
- name: Setup Android SDK
|
||||
run: |
|
||||
mkdir -p $HOME/Android/sdk
|
||||
echo "sdk.dir=$HOME/Android/sdk" > local.properties
|
||||
echo "ANDROID_HOME=$HOME/Android/sdk" >> $GITHUB_ENV
|
||||
echo "PATH=$PATH:$HOME/Android/sdk/tools:$HOME/Android/sdk/tools/bin:$HOME/Android/sdk/platform-tools" >> $GITHUB_ENV
|
||||
|
||||
# Install cmdline-tools
|
||||
mkdir -p $HOME/Android/sdk/cmdline-tools
|
||||
echo "ANDROID_SDK_ROOT=$HOME/Android/sdk" >> $GITHUB_ENV
|
||||
echo "PATH=$PATH:$HOME/Android/sdk/cmdline-tools/latest/bin:$HOME/Android/sdk/platform-tools" >> $GITHUB_ENV
|
||||
|
||||
# Download & unpack command‑line tools
|
||||
wget -q https://dl.google.com/android/repository/commandlinetools-linux-8092744_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
|
||||
|
||||
# Debug cmdline-tools installation
|
||||
ls -la $HOME/Android/sdk/cmdline-tools/latest/bin/
|
||||
|
||||
# Accept licenses and install necessary components
|
||||
echo "y" | $HOME/Android/sdk/cmdline-tools/latest/bin/sdkmanager --licenses || echo "License acceptance failed but continuing"
|
||||
$HOME/Android/sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.0"
|
||||
|
||||
rm cmdline-tools.zip
|
||||
|
||||
# Accept all licenses
|
||||
yes | $HOME/Android/sdk/cmdline-tools/latest/bin/sdkmanager --licenses
|
||||
|
||||
# Install required SDK components (API 33 + API 35)
|
||||
$HOME/Android/sdk/cmdline-tools/latest/bin/sdkmanager \
|
||||
"platform-tools" \
|
||||
"platforms;android-33" \
|
||||
"build-tools;33.0.0" \
|
||||
"platforms;android-35" \
|
||||
"build-tools;35.0.0"
|
||||
|
||||
# Verify installation
|
||||
echo "Android SDK components installed:"
|
||||
echo "Installed SDK components:"
|
||||
$HOME/Android/sdk/cmdline-tools/latest/bin/sdkmanager --list_installed
|
||||
|
||||
|
||||
- name: Grant execution permission to Gradle Wrapper
|
||||
run: chmod +x gradlew
|
||||
|
||||
|
||||
- name: Debug Gradle setup
|
||||
run: |
|
||||
./gradlew --version
|
||||
cat local.properties
|
||||
|
||||
|
||||
- name: Build Release APK
|
||||
run: |
|
||||
./gradlew assembleRelease --stacktrace
|
||||
|
||||
|
||||
- name: Find APK files
|
||||
run: |
|
||||
echo "Looking for APK files:"
|
||||
find . -type f -name "*.apk"
|
||||
|
||||
|
||||
- name: Sign APK manually
|
||||
run: |
|
||||
# Find APK file
|
||||
APK_FILES=$(find app/build/outputs/apk/release/ -name "*.apk" | sort)
|
||||
if [ -z "$APK_FILES" ]; then
|
||||
echo "No APK files found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Found APK files:"
|
||||
echo "$APK_FILES"
|
||||
|
||||
# Use the first APK file found
|
||||
[ -n "$APK_FILES" ] || { echo "No APK files found!"; exit 1; }
|
||||
APK_FILE=$(echo "$APK_FILES" | head -1)
|
||||
echo "Using APK file: $APK_FILE"
|
||||
|
||||
# Create keystore from base64
|
||||
echo "Creating keystore..."
|
||||
|
||||
# Decode keystore and sign
|
||||
echo "${{ secrets.KEY_BASE64 }}" | base64 -d > keystore.jks
|
||||
|
||||
# Sign APK
|
||||
echo "Signing APK..."
|
||||
SIGNED_FILE="${APK_FILE%.apk}-signed.apk"
|
||||
|
||||
# Find apksigner in build-tools
|
||||
APKSIGNER_PATH=$(find $HOME/Android/sdk/build-tools -name "apksigner" | head -1)
|
||||
echo "Using apksigner at: $APKSIGNER_PATH"
|
||||
|
||||
$APKSIGNER_PATH sign --ks keystore.jks \
|
||||
APKSIGNER=$(find $HOME/Android/sdk/build-tools -name apksigner | head -1)
|
||||
SIGNED="${APK_FILE%.apk}-signed.apk"
|
||||
$APKSIGNER sign --ks keystore.jks \
|
||||
--ks-key-alias "${{ secrets.KEY_ALIAS }}" \
|
||||
--ks-pass pass:"${{ secrets.KEYSTORE_PASS }}" \
|
||||
--key-pass pass:"${{ secrets.KEYSTORE_PASS }}" \
|
||||
--out "$SIGNED_FILE" \
|
||||
"$APK_FILE"
|
||||
|
||||
echo "SIGNED_RELEASE_FILE=$SIGNED_FILE" >> $GITHUB_ENV
|
||||
|
||||
# Verify signed APK
|
||||
ls -la "$SIGNED_FILE" || echo "Failed to find signed APK"
|
||||
|
||||
--out "$SIGNED" "$APK_FILE"
|
||||
|
||||
echo "SIGNED_RELEASE_FILE=$SIGNED" >> $GITHUB_ENV
|
||||
ls -la "$SIGNED"
|
||||
|
||||
- name: Extract Version Code
|
||||
run: |
|
||||
VERSION_CODE=$(grep -oP '(?<=versionCode)\s*=?\s*\K\d+' app/build.gradle || grep -oP '(?<=versionCode)\s*=?\s*\K\d+' app/build.gradle.kts || echo "unknown")
|
||||
VERSION_CODE=$(grep -oP '(?<=versionCode)\s*=?\s*\K\d+' app/build.gradle* | head -1 || echo "unknown")
|
||||
echo "VERSION_CODE=$VERSION_CODE" >> $GITHUB_ENV
|
||||
echo "Version Code: $VERSION_CODE"
|
||||
|
||||
|
||||
- name: Read Changelog
|
||||
run: |
|
||||
CHANGELOG_PATH="metadata/en-US/changelogs/$VERSION_CODE.txt"
|
||||
echo "Looking for changelog at: $CHANGELOG_PATH"
|
||||
|
||||
if [[ -f "$CHANGELOG_PATH" ]]; then
|
||||
if [ -f "$CHANGELOG_PATH" ]; then
|
||||
echo "Changelog found:"
|
||||
cat "$CHANGELOG_PATH"
|
||||
echo ""
|
||||
|
||||
# Set environment variable for the changelog
|
||||
echo "CHANGELOG<<EOF" >> $GITHUB_ENV
|
||||
cat "$CHANGELOG_PATH" >> $GITHUB_ENV
|
||||
echo "EOF" >> $GITHUB_ENV
|
||||
else
|
||||
echo "No changelog found at: $CHANGELOG_PATH"
|
||||
echo "No changelog found; falling back to summary"
|
||||
echo "CHANGELOG=Release version $VERSION_CODE" >> $GITHUB_ENV
|
||||
|
||||
# Try to find any changelog files
|
||||
echo "Looking for any changelog files:"
|
||||
find metadata -type f -name "*.txt" || echo "No changelog files found"
|
||||
find metadata -type f -name "*.txt" || echo "No other changelogs found"
|
||||
fi
|
||||
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: Signed-APK-${{ env.VERSION_CODE }}
|
||||
path: ${{ env.SIGNED_RELEASE_FILE }}
|
||||
|
||||
|
||||
- name: Debug Final Output
|
||||
run: |
|
||||
echo "Signed APK path: ${{ env.SIGNED_RELEASE_FILE }}"
|
||||
echo "Version code: ${{ env.VERSION_CODE }}"
|
||||
echo "Changelog summary: $(echo "${{ env.CHANGELOG }}" | head -1)"
|
||||
echo "Changelog summary: $(echo "${{ env.CHANGELOG }}" | head -1)"
|
||||
|
||||
Reference in New Issue
Block a user