forked from firka/firka
Update Jenkinsfile
This commit is contained in:
119
Jenkinsfile
vendored
119
Jenkinsfile
vendored
@@ -1,11 +1,12 @@
|
||||
pipeline {
|
||||
agent { label 'ubuntu' }
|
||||
agent {
|
||||
label 'ubuntu'
|
||||
}
|
||||
environment {
|
||||
PATH = "/home/jenkins/development/flutter/bin:${env.PATH}"
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Cleanup') {
|
||||
stage('Pre-build Cleanup') {
|
||||
steps {
|
||||
script {
|
||||
sh '''#!/bin/sh
|
||||
@@ -15,8 +16,7 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Decrypt keys') {
|
||||
stage('Decrypt main keys') {
|
||||
when {
|
||||
branch 'main'
|
||||
}
|
||||
@@ -33,16 +33,13 @@ pipeline {
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
env.PASSWORD = userInput.toString()
|
||||
}
|
||||
|
||||
sh '''#!/bin/sh
|
||||
echo \$PASSWORD | gocryptfs $HOME/android_secrets secrets/ -nonempty
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Clone submodules') {
|
||||
steps {
|
||||
script {
|
||||
@@ -50,23 +47,51 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build firka') {
|
||||
steps {
|
||||
sh 'bash -c "./tools/linux/build_apk.sh ' + env.BRANCH_NAME + '"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Rename Release APKs') {
|
||||
when {
|
||||
branch 'main'
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
sh '''#!/bin/sh
|
||||
set -e
|
||||
|
||||
APK_DIR="firka/build/app/outputs/flutter-apk"
|
||||
|
||||
# Find all release APKs and rename them
|
||||
for apk_file in $APK_DIR/app-*-release.apk; do
|
||||
if [ -f "$apk_file" ]; then
|
||||
# Extract ABI from filename (e.g., app-arm64-v8a-release.apk -> arm64-v8a)
|
||||
basename_file=$(basename "$apk_file")
|
||||
abi=$(echo "$basename_file" | sed 's/app-//; s/-release.apk//')
|
||||
|
||||
# Create new filename
|
||||
new_name="app.firka.naplo_${abi}.apk"
|
||||
new_path="$APK_DIR/$new_name"
|
||||
|
||||
echo "Renaming $apk_file to $new_path"
|
||||
mv "$apk_file" "$new_path"
|
||||
fi
|
||||
done
|
||||
|
||||
ls -la $APK_DIR/app.firka.naplo_*.apk || echo "APK files not found"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Publish release artifacts') {
|
||||
when {
|
||||
branch 'main'
|
||||
}
|
||||
steps {
|
||||
archiveArtifacts artifacts: 'firka/build/app/outputs/flutter-apk/app-*-release.apk', fingerprint: true
|
||||
sh 'rm firka/build/app/outputs/flutter-apk/app-*-release.apk'
|
||||
archiveArtifacts artifacts: 'firka/build/app/outputs/flutter-apk/app.firka.naplo_*.apk', fingerprint: true
|
||||
}
|
||||
}
|
||||
|
||||
stage('Publish debug artifacts') {
|
||||
when {
|
||||
not {
|
||||
@@ -75,8 +100,72 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
archiveArtifacts artifacts: 'firka/build/app/outputs/flutter-apk/app-debug.apk', fingerprint: true
|
||||
sh 'rm firka/build/app/outputs/flutter-apk/app-debug.apk'
|
||||
}
|
||||
}
|
||||
stage('Upload to F-Droid Debug') {
|
||||
when {
|
||||
branch 'dev'
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
withCredentials([usernamePassword(credentialsId: 'fdroid-ssh', usernameVariable: 'SSH_USER', passwordVariable: 'SSHPASS')]) {
|
||||
sh '''
|
||||
SOURCE_FILE="firka/build/app/outputs/flutter-apk/app-debug.apk"
|
||||
REMOTE_PATH="/home/fdroid/firka-fdroid/repo/app.firka.naplo.debug.apk"
|
||||
export SSHPASS
|
||||
|
||||
sshpass -e scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||
"$SOURCE_FILE" "$SSH_USER@10.0.0.21:$REMOTE_PATH"
|
||||
sshpass -e ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||
"$SSH_USER@10.0.0.21" \
|
||||
"cd /home/fdroid/firka-fdroid && /run/current-system/sw/bin/fdroid update"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Upload to F-Droid Release') {
|
||||
when {
|
||||
branch 'main'
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
withCredentials([usernamePassword(credentialsId: 'fdroid-ssh', usernameVariable: 'SSH_USER', passwordVariable: 'SSHPASS')]) {
|
||||
sh '''
|
||||
# Use the renamed APK files
|
||||
REMOTE_PATH="/home/fdroid/firka-fdroid/repo/"
|
||||
export SSHPASS
|
||||
|
||||
# Loop over each APK file and upload it one by one
|
||||
for SOURCE_FILE in firka/build/app/outputs/flutter-apk/app.firka.naplo_*.apk; do
|
||||
if [ -f "$SOURCE_FILE" ]; then
|
||||
echo "Uploading $SOURCE_FILE to $REMOTE_PATH"
|
||||
sshpass -e scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||
"$SOURCE_FILE" "$SSH_USER@10.0.0.21:$REMOTE_PATH"
|
||||
else
|
||||
echo "No APK files found to upload."
|
||||
fi
|
||||
done
|
||||
|
||||
# Update F-Droid repository
|
||||
sshpass -e ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||
"$SSH_USER@10.0.0.21" \
|
||||
"cd /home/fdroid/firka-fdroid && /run/current-system/sw/bin/fdroid update"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Post Cleanup') {
|
||||
steps {
|
||||
script {
|
||||
sh '''
|
||||
rm firka/build/app/outputs/flutter-apk/app.firka.naplo_*.apk || true
|
||||
rm firka/build/app/outputs/flutter-apk/app-debug.apk || true
|
||||
git checkout -- firka/pubspec.yaml
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,37 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd firka
|
||||
|
||||
set -e
|
||||
SHORT_SHA=$(git rev-parse --short HEAD)
|
||||
COMMIT_COUNT=$(git rev-list --count HEAD)
|
||||
BASE_BUILD_NUMBER=$((1000 + COMMIT_COUNT))
|
||||
ORIGINAL_VERSION=$(grep "^version:" pubspec.yaml | sed 's/version: *//' | sed 's/+.*//')
|
||||
|
||||
update_version_for_abi() {
|
||||
local build_offset=$1
|
||||
local new_build_number=$((BASE_BUILD_NUMBER + build_offset))
|
||||
local new_version="${ORIGINAL_VERSION}-${SHORT_SHA}+${new_build_number}"
|
||||
sed -i "s/^version: .*/version: ${new_version}/" pubspec.yaml
|
||||
echo "Updated version to: ${new_version}"
|
||||
}
|
||||
|
||||
flutter gen-l10n --template-arb-file app_hu.arb
|
||||
|
||||
if [ "$1" = "main" ]; then
|
||||
if [ -f "$HOME/.flutter_path" ]; then
|
||||
sdk_path="$(cat $HOME/.flutter_path)"
|
||||
echo "Using flutter sdk from: $sdk_path"
|
||||
|
||||
mkdir -p build/app/tmp
|
||||
|
||||
update_version_for_abi 1000
|
||||
flutter build apk --release --tree-shake-icons \
|
||||
--local-engine-src-path "$sdk_path/engine/src" \
|
||||
--local-engine=android_release --local-engine-host=host_release \
|
||||
--split-per-abi \
|
||||
--target-platform android-arm
|
||||
mv build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk build/app/tmp/
|
||||
|
||||
update_version_for_abi 2000
|
||||
flutter build apk --release --tree-shake-icons \
|
||||
--local-engine-src-path "$sdk_path/engine/src" \
|
||||
--local-engine=android_release_arm64 --local-engine-host=host_release \
|
||||
--split-per-abi \
|
||||
--target-platform android-arm64
|
||||
mv build/app/outputs/flutter-apk/app-arm64-v8a-release.apk build/app/tmp/
|
||||
|
||||
update_version_for_abi 3000
|
||||
flutter build apk --release --tree-shake-icons \
|
||||
--local-engine-src-path "$sdk_path/engine/src" \
|
||||
--local-engine=android_release_x64 --local-engine-host=host_release \
|
||||
--split-per-abi \
|
||||
--target-platform android-x64
|
||||
mv build/app/tmp/*.apk build/app/outputs/flutter-apk
|
||||
|
||||
mv build/app/tmp/*.apk build/app/outputs/flutter-apk/
|
||||
mv build/app/outputs/flutter-apk/app-x86_64-release.apk build/app/outputs/flutter-apk/ 2>/dev/null || true
|
||||
|
||||
|
||||
else
|
||||
echo "$HOME/.flutter_path not found!"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
update_version_for_abi 0
|
||||
TRANSFORM_APK=true flutter build apk --debug --target-platform android-arm,android-arm64,android-x64
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user