-
Notifications
You must be signed in to change notification settings - Fork 0
138 lines (121 loc) · 5.68 KB
/
android-action.yml
File metadata and controls
138 lines (121 loc) · 5.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
name: Android CI/CD
on:
push:
branches: ["ci-cd"]
workflow_dispatch:
jobs:
build-web:
name: Build web bundle (www)
runs-on: ubuntu-latest
# Ensure manual runs only proceed on the ci-cd branch
# if: github.ref == 'refs/heads/ci-cd'
if: ${{ false }} # temporarily disabled
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Create empty .env
run: touch .env
- name: Make envfile (override with secrets)
run: |
set -euo pipefail
# Only append keys that are set as secrets; later lines override earlier ones
[ -n "${{ secrets.COLLAB_API_CLIENT_ID }}" ] && echo "COLLAB_API_CLIENT_ID=${{ secrets.COLLAB_API_CLIENT_ID }}" >> .env || true
[ -n "${{ secrets.COLLAB_API_CLIENT_SECRET }}" ] && echo "COLLAB_API_CLIENT_SECRET=${{ secrets.COLLAB_API_CLIENT_SECRET }}" >> .env || true
[ -n "${{ secrets.BASE_AUTH_URL }}" ] && echo "BASE_AUTH_URL=${{ secrets.BASE_AUTH_URL }}" >> .env || true
[ -n "${{ secrets.QLF_COLLAB_API_CLIENT_ID }}" ] && echo "QLF_COLLAB_API_CLIENT_ID=${{ secrets.QLF_COLLAB_API_CLIENT_ID }}" >> .env || true
[ -n "${{ secrets.QLF_COLLAB_API_CLIENT_SECRET }}" ] && echo "QLF_COLLAB_API_CLIENT_SECRET=${{ secrets.QLF_COLLAB_API_CLIENT_SECRET }}" >> .env || true
[ -n "${{ secrets.QLF_BASE_AUTH_URL }}" ] && echo "QLF_BASE_AUTH_URL=${{ secrets.QLF_BASE_AUTH_URL }}" >> .env || true
[ -n "${{ secrets.BASE_API_URL }}" ] && echo "BASE_API_URL=${{ secrets.BASE_API_URL }}" >> .env || true
[ -n "${{ secrets.SECRET }}" ] && echo "SECRET=${{ secrets.SECRET }}" >> .env || true
# App selection/name identifiers (optional overrides, defined in the config.js files)
[ -n "${{ secrets.APPLI }}" ] && echo "APPLI=${{ secrets.APPLI }}" >> .env || true
[ -n "${{ secrets.APPLI_ID }}" ] && echo "APPLI_ID=${{ secrets.APPLI_ID }}" >> .env || true
[ -n "${{ secrets.APPLI_NAME }}" ] && echo "APPLI_NAME=${{ secrets.APPLI_NAME }}" >> .env || true
- name: Install dependencies
run: npm ci
- name: Build web bundle
run: npm run build
- name: Generate Capacitor assets (Android)
run: npx @capacitor/assets generate --android
- name: Capacitor sync (Android)
run: npx cap sync android
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: 21
- name: Check Android build-tools
run: |
ls -la /usr/local/lib/android/sdk/build-tools/ || true
- name: Sanity check Android resources
run: |
echo "Listing android/app/src/main/res folders:" &&
ls -la android/app/src/main/res || true &&
echo "values:" && ls -la android/app/src/main/res/values || true &&
echo "xml:" && ls -la android/app/src/main/res/xml || true &&
echo "layout:" && ls -la android/app/src/main/res/layout || true
- name: Detect selected app and signing params
id: detect_app
shell: bash
run: |
set -euo pipefail
if [[ -f scripts/.selected-app ]]; then
app=$(tr -d '\r\n' < scripts/.selected-app)
else
# Default to EspaceCo
app="EspaceCo"
fi
echo "Selected app: $app"
# Choose alias + key password per selected app
if [[ "$app" == "NaviForest" ]]; then
echo "SIGNING_ALIAS=${{ secrets.ALIAS_NAVIFOREST }}" >> "$GITHUB_ENV"
echo "SIGNING_KEY_PASSWORD=${{ secrets.KEY_PASSWORD_NAVIFOREST }}" >> "$GITHUB_ENV"
else
# Default to EspaceCo
echo "SIGNING_ALIAS=${{ secrets.ALIAS_ESPACECO }}" >> "$GITHUB_ENV"
echo "SIGNING_KEY_PASSWORD=${{ secrets.KEY_PASSWORD_ESPACECO }}" >> "$GITHUB_ENV"
fi
# Derive package name from updated Gradle config
pkg=$(sed -n 's/.*applicationId\s*"\([^"]*\)".*/\1/p' android/app/build.gradle | head -n1)
if [[ -n "$pkg" ]]; then
echo "PACKAGE_NAME=$pkg" >> "$GITHUB_ENV"
fi
- name: Build Android release (APK + AAB)
run: |
cd android
./gradlew --no-daemon assembleRelease bundleRelease
- name: Sign Android App Bundle (AAB)
id: sign_aab
uses: r0adkll/sign-android-release@v1
with:
# Sign the generated AAB in the release output directory
releaseDirectory: android/app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ env.SIGNING_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
# keyPassword is optional; set if your keystore uses a distinct key password
keyPassword: ${{ env.SIGNING_KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: "34.0.0"
- name: Upload signed bundle artifact
uses: actions/upload-artifact@v4
with:
name: android-signed-aab
path: ${{ steps.sign_aab.outputs.signedReleaseFile }}
retention-days: 3
# NEED GOOGLE DEVELOPER ACCESS TO DO THE FOLLOWING
# - name: Deploy to Play Store (internal track)
# if: ${{ secrets.SERVICE_ACCOUNT_JSON != '' }}
# uses: r0adkll/upload-google-play@v1
# with:
# serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
# packageName: ${{ env.PACKAGE_NAME }}
# releaseFiles: ${{ steps.sign_aab.outputs.signedReleaseFile }}
# track: internal
# status: completed
# inAppUpdatePriority: 5