@@ -4,7 +4,7 @@ permissions:
4
4
5
5
on :
6
6
push :
7
- branches : ["**"] # run on any branch
7
+ branches : ["**"] # Run on all branches
8
8
workflow_dispatch :
9
9
10
10
env :
21
21
build_number : ${{ steps.version-control.outputs.build_number }}
22
22
build_date : ${{ steps.version-control.outputs.build_date }}
23
23
is_production : ${{ steps.version-control.outputs.is_production }}
24
- eas_profile : ${{ steps.version-control.outputs.eas_profile }} # added dynamic profile output
25
- eas_channel : ${{ steps.version-control.outputs.eas_channel }} # added dynamic channel output
24
+ branch_name : ${{ steps.extract-branch.outputs.branch_name }}
26
25
steps :
27
26
# ========================
28
27
# 🛠️ Repository Setup
32
31
with :
33
32
fetch-depth : 0
34
33
34
+ - name : " 🔍 Extract branch name"
35
+ id : extract-branch
36
+ shell : bash
37
+ run : |
38
+ BRANCH_NAME=${GITHUB_REF#refs/heads/}
39
+ echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
40
+ echo "Branch: $BRANCH_NAME"
41
+
35
42
# ========================
36
43
# ⚙️ Environment Configuration
37
44
# ========================
@@ -70,38 +77,34 @@ jobs:
70
77
- name : " 🏷️ Set CI/CD Versions"
71
78
id : version-control
72
79
run : |
73
- # Determine branch and environment
74
- BRANCH_NAME=${GITHUB_REF#refs/heads/}
75
- if [ "${BRANCH_NAME}" == "main" ]; then
80
+ # Use version from version.json (requires jq)
81
+ if [ "${{ github.ref }}" == "refs/heads/main" ]; then
76
82
APP_VERSION=$(jq -r '.version' version.json)
77
83
IS_PRODUCTION="true"
78
- EAS_PROFILE=production
79
- EAS_CHANNEL=production
80
84
else
81
- APP_VERSION="1.0.0-prerelease.${GITHUB_RUN_NUMBER}"
85
+ # For non-main branches, create a prerelease version with branch name
86
+ BRANCH_NAME=${{ steps.extract-branch.outputs.branch_name }}
87
+ SANITIZED_BRANCH=$(echo "$BRANCH_NAME" | sed 's/[^a-zA-Z0-9]/-/g')
88
+ # Get base version from version.json
89
+ BASE_VERSION=$(jq -r '.version' version.json)
90
+ APP_VERSION="${BASE_VERSION}-pre.${SANITIZED_BRANCH}.${{ github.run_number }}"
82
91
IS_PRODUCTION="false"
83
- EAS_PROFILE=development # dev build profile
84
- EAS_CHANNEL="dev-${BRANCH_NAME}" # dev release channel
85
92
fi
86
93
87
94
# Generate build identifiers
88
95
BUILD_NUMBER="${{ github.run_id }}"
89
96
BUILD_DATE=$(date +'%Y%m%d-%H%M%S')
90
97
91
98
# Set outputs for downstream jobs
92
- echo "app_version=${APP_VERSION}" >> $GITHUB_OUTPUT
93
- echo "build_number=${BUILD_NUMBER}" >> $GITHUB_OUTPUT
94
- echo "build_date=${BUILD_DATE}" >> $GITHUB_OUTPUT
95
- echo "is_production=${IS_PRODUCTION}" >> $GITHUB_OUTPUT
96
- echo "eas_profile=${EAS_PROFILE}" >> $GITHUB_OUTPUT
97
- echo "eas_channel=${EAS_CHANNEL}" >> $GITHUB_OUTPUT
99
+ echo "app_version=$APP_VERSION" >> $GITHUB_OUTPUT
100
+ echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
101
+ echo "build_date=$BUILD_DATE" >> $GITHUB_OUTPUT
102
+ echo "is_production=$IS_PRODUCTION" >> $GITHUB_OUTPUT
98
103
99
104
# Export environment variables
100
- echo "APP_VERSION=${APP_VERSION}" >> $GITHUB_ENV
101
- echo "BUILD_NUMBER=${BUILD_NUMBER}" >> $GITHUB_ENV
102
- echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV
103
- echo "EAS_PROFILE=${EAS_PROFILE}" >> $GITHUB_ENV
104
- echo "EAS_CHANNEL=${EAS_CHANNEL}" >> $GITHUB_ENV
105
+ echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV
106
+ echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
107
+ echo "BUILD_DATE=$BUILD_DATE" >> $GITHUB_ENV
105
108
106
109
# ========================
107
110
# 🔐 EAS Setup & Auth
@@ -118,9 +121,19 @@ jobs:
118
121
- name : " 🚀 Trigger EAS Build"
119
122
id : build
120
123
run : |
121
- echo "🔄 Initializing build process with profile=${EAS_PROFILE} on channel=${EAS_CHANNEL} ..."
124
+ echo "🔄 Initializing build process..."
122
125
sudo apt-get install -y jq
123
- BUILD_JSON=$(npx eas build -p android --profile $EAS_PROFILE --channel $EAS_CHANNEL --non-interactive --json)
126
+
127
+ # Choose profile based on branch
128
+ if [ "${{ github.ref }}" == "refs/heads/main" ]; then
129
+ BUILD_PROFILE="production"
130
+ else
131
+ BUILD_PROFILE="preview" # Use a different profile for pre-releases if needed
132
+ fi
133
+
134
+ echo "Using build profile: $BUILD_PROFILE"
135
+
136
+ BUILD_JSON=$(npx eas build -p android --profile $BUILD_PROFILE --non-interactive --json)
124
137
echo "Raw build output: $BUILD_JSON"
125
138
BUILD_ID=$(echo "$BUILD_JSON" | jq -r '.[0].id')
126
139
if [[ -z "$BUILD_ID" || "$BUILD_ID" == "null" ]]; then
@@ -181,7 +194,7 @@ jobs:
181
194
SLEEP_TIME=30
182
195
183
196
while [[ $RETRY_COUNT -lt $MAX_RETRIES ]]; do
184
- echo -e "=== Attempt $((RETRY_COUNT+1))/$MAX_RETRIES ==="
197
+ echo -e "\n === Attempt $((RETRY_COUNT+1))/$MAX_RETRIES ==="
185
198
186
199
# Fetch build status in JSON format
187
200
BUILD_STATUS_JSON=$(npx eas build:view --json $BUILD_ID)
@@ -244,6 +257,7 @@ jobs:
244
257
id : download
245
258
run : |
246
259
echo "🔽 Retrieving APK URL..."
260
+ # Use the build:view command to get a clean JSON response
247
261
APK_URL=$(npx eas build:view --json ${{ needs.build-android.outputs.build_id }} | jq -r '.artifacts.buildUrl')
248
262
if [[ -z "$APK_URL" || "$APK_URL" == "null" ]]; then
249
263
echo "❌ Error: No APK URL found!"
@@ -284,7 +298,6 @@ jobs:
284
298
CHANGELOG=$(git log --pretty=format:"- %s (%h) by %an" -n 15)
285
299
echo "$CHANGELOG" > changelog.txt
286
300
287
- # FIXED OUTPUT HANDLING (ONLY CHANGE)
288
301
delimiter=$(openssl rand -hex 6)
289
302
echo "CHANGELOG<<${delimiter}" >> $GITHUB_OUTPUT
290
303
cat changelog.txt >> $GITHUB_OUTPUT
@@ -326,9 +339,10 @@ jobs:
326
339
RELEASE_TAG="v${{ needs.build-android.outputs.app_version }}"
327
340
RELEASE_TITLE="Production Release v${{ needs.build-android.outputs.app_version }}"
328
341
else
329
- echo "🟡 Nightly build detected"
330
- RELEASE_TAG="nightly-${{ needs.build-android.outputs.build_date }}"
331
- RELEASE_TITLE="Nightly Build (${{ needs.build-android.outputs.build_date }})"
342
+ echo "🟡 Pre-release build detected"
343
+ BRANCH_NAME="${{ needs.build-android.outputs.branch_name }}"
344
+ RELEASE_TAG="prerelease-${BRANCH_NAME}-${{ needs.build-android.outputs.build_date }}"
345
+ RELEASE_TITLE="Pre-release (${BRANCH_NAME}) v${{ needs.build-android.outputs.app_version }}"
332
346
fi
333
347
echo "RELEASE_TAG=${RELEASE_TAG}" >> $GITHUB_OUTPUT
334
348
echo "RELEASE_TITLE=${RELEASE_TITLE}" >> $GITHUB_OUTPUT
0 commit comments