Skip to content

Commit 4d49662

Browse files
committed
feat: update keystore setup in build workflows for enhanced security
1 parent 2847db1 commit 4d49662

2 files changed

Lines changed: 30 additions & 32 deletions

File tree

.github/workflows/build-pro-plus.yml

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,21 @@ jobs:
3232
sudo apt-get update
3333
sudo apt-get install -y imagemagick webp
3434
35-
- name: Generate debug keystore
35+
- name: Setup local.properties with release keystore
3636
run: |
37-
mkdir -p ~/.android
38-
keytool -genkey -v -keystore ~/.android/debug.keystore \
39-
-storepass android -alias androiddebugkey -keypass android \
40-
-keyalg RSA -keysize 2048 -validity 10000 \
41-
-dname "CN=Android Debug,O=Android,C=US" || true
42-
echo "✓ Debug keystore ready"
43-
44-
- name: Configure local.properties for signing
37+
echo "KEYSTORE_FILE=$RUNNER_TEMP/release.keystore" >> local.properties
38+
echo "KEYSTORE_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }}" >> local.properties
39+
echo "KEY_ALIAS=${{ secrets.KEY_ALIAS }}" >> local.properties
40+
echo "KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> local.properties
41+
42+
- name: Decode and write keystore
4543
run: |
46-
cat > local.properties << 'EOF'
47-
KEYSTORE_FILE=$HOME/.android/debug.keystore
48-
KEYSTORE_PASSWORD=android
49-
KEY_ALIAS=androiddebugkey
50-
KEY_PASSWORD=android
51-
EOF
44+
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > $RUNNER_TEMP/release.keystore
45+
if [ ! -f "$RUNNER_TEMP/release.keystore" ]; then
46+
echo "❌ Keystore file not created"
47+
exit 1
48+
fi
49+
echo "✓ Keystore file created"
5250
echo "✓ local.properties configured"
5351
5452
- name: Validate and sanitize app name
@@ -65,18 +63,14 @@ jobs:
6563
# Keep only alphanumeric, spaces, and hyphens
6664
SANITIZED=$(echo "$APP_NAME" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed 's/[^a-zA-Z0-9 -]//g')
6765
68-
# Build final name: "FadCam Pro - <UserName>"
69-
FINAL_NAME="FadCam Pro - $SANITIZED"
70-
7166
# Verify it's not empty after sanitization
7267
if [ -z "$SANITIZED" ]; then
7368
echo "❌ App name contains no valid characters"
7469
exit 1
7570
fi
7671
77-
echo "SANITIZED_APP_NAME=$SANITIZED" >> $GITHUB_ENV
78-
echo "FINAL_APP_NAME=$FINAL_NAME" >> $GITHUB_ENV
79-
echo "✓ App name sanitized: $FINAL_NAME"
72+
echo "FINAL_APP_NAME=$SANITIZED" >> $GITHUB_ENV
73+
echo "✓ App name sanitized: $SANITIZED"
8074
8175
- name: Decode and validate icon
8276
run: |
@@ -161,9 +155,9 @@ jobs:
161155
162156
- name: Verify APK was built
163157
run: |
164-
if [ -f "app/build/outputs/apk/default/proPlus/app-default-proPlus.apk" ]; then
158+
if [ -f "app/build/outputs/apk/default/proPlus/app-default-proPlus-unsigned.apk" ]; then
165159
echo "✓ Pro+ APK built successfully"
166-
ls -lh app/build/outputs/apk/default/proPlus/app-default-proPlus.apk
160+
ls -lh app/build/outputs/apk/default/proPlus/app-default-proPlus-unsigned.apk
167161
else
168162
echo "✗ APK not found"
169163
ls -lh app/build/outputs/apk/default/proPlus/ || echo "Directory doesn't exist"
@@ -174,7 +168,7 @@ jobs:
174168
uses: actions/upload-artifact@v4
175169
with:
176170
name: fadcam-pro-plus-apk
177-
path: app/build/outputs/apk/default/proPlus/app-default-proPlus.apk
171+
path: app/build/outputs/apk/default/proPlus/app-default-proPlus-unsigned.apk
178172
retention-days: 1
179173

180174
- name: Build summary

.github/workflows/build-pro.yml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,21 @@ jobs:
1818
distribution: 'temurin'
1919
cache: 'gradle'
2020

21-
- name: Generate debug keystore
21+
- name: Setup local.properties with release keystore
2222
run: |
23-
mkdir -p ~/.android
24-
keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
23+
echo "KEYSTORE_FILE=$RUNNER_TEMP/release.keystore" >> local.properties
24+
echo "KEYSTORE_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }}" >> local.properties
25+
echo "KEY_ALIAS=${{ secrets.KEY_ALIAS }}" >> local.properties
26+
echo "KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> local.properties
2527
26-
- name: Setup local.properties with debug keystore
28+
- name: Decode and write keystore
2729
run: |
28-
echo "KEYSTORE_FILE=$HOME/.android/debug.keystore" >> local.properties
29-
echo "KEYSTORE_PASSWORD=android" >> local.properties
30-
echo "KEY_ALIAS=androiddebugkey" >> local.properties
31-
echo "KEY_PASSWORD=android" >> local.properties
30+
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > $RUNNER_TEMP/release.keystore
31+
if [ ! -f "$RUNNER_TEMP/release.keystore" ]; then
32+
echo "❌ Keystore file not created"
33+
exit 1
34+
fi
35+
echo "✓ Keystore file created"
3236
3337
- name: Build Notes Pro variant
3438
run: |

0 commit comments

Comments
 (0)