@@ -4,7 +4,7 @@ permissions:
4
4
5
5
on :
6
6
push :
7
- branches : [main]
7
+ branches : ['**'] # run on any branch
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
26
steps :
25
27
# ========================
26
28
# 🛠️ Repository Setup
@@ -68,29 +70,38 @@ jobs:
68
70
- name : " 🏷️ Set CI/CD Versions"
69
71
id : version-control
70
72
run : |
71
- # Use version from version.json (requires jq)
72
- if [ "${{ github.ref }}" == "refs/heads/main" ]; then
73
+ # Determine branch and environment
74
+ BRANCH_NAME=${GITHUB_REF#refs/heads/}
75
+ if [ "${BRANCH_NAME}" == "main" ]; then
73
76
APP_VERSION=$(jq -r '.version' version.json)
74
77
IS_PRODUCTION="true"
78
+ EAS_PROFILE=production
79
+ EAS_CHANNEL=production
75
80
else
76
- APP_VERSION="1.0.0-prerelease.${{ github.run_number } }"
81
+ APP_VERSION="1.0.0-prerelease.${GITHUB_RUN_NUMBER }"
77
82
IS_PRODUCTION="false"
83
+ EAS_PROFILE=development # dev build profile
84
+ EAS_CHANNEL="dev-${BRANCH_NAME}" # dev release channel
78
85
fi
79
86
80
87
# Generate build identifiers
81
88
BUILD_NUMBER="${{ github.run_id }}"
82
89
BUILD_DATE=$(date +'%Y%m%d-%H%M%S')
83
90
84
91
# Set outputs for downstream jobs
85
- echo "app_version=$APP_VERSION" >> $GITHUB_OUTPUT
86
- echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT
87
- echo "build_date=$BUILD_DATE" >> $GITHUB_OUTPUT
88
- echo "is_production=$IS_PRODUCTION" >> $GITHUB_OUTPUT
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
89
98
90
99
# Export environment variables
91
- echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV
92
- echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
93
- echo "BUILD_DATE=$BUILD_DATE" >> $GITHUB_ENV
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
94
105
95
106
# ========================
96
107
# 🔐 EAS Setup & Auth
@@ -107,9 +118,9 @@ jobs:
107
118
- name : " 🚀 Trigger EAS Build"
108
119
id : build
109
120
run : |
110
- echo "🔄 Initializing build process..."
121
+ echo "🔄 Initializing build process with profile=${EAS_PROFILE} on channel=${EAS_CHANNEL} ..."
111
122
sudo apt-get install -y jq
112
- BUILD_JSON=$(npx eas build -p android --profile production --non-interactive --json)
123
+ BUILD_JSON=$(npx eas build -p android --profile $EAS_PROFILE --channel $EAS_CHANNEL --non-interactive --json)
113
124
echo "Raw build output: $BUILD_JSON"
114
125
BUILD_ID=$(echo "$BUILD_JSON" | jq -r '.[0].id')
115
126
if [[ -z "$BUILD_ID" || "$BUILD_ID" == "null" ]]; then
@@ -170,7 +181,8 @@ jobs:
170
181
SLEEP_TIME=30
171
182
172
183
while [[ $RETRY_COUNT -lt $MAX_RETRIES ]]; do
173
- echo -e "\n=== Attempt $((RETRY_COUNT+1))/$MAX_RETRIES ==="
184
+ echo -e "
185
+ === Attempt $((RETRY_COUNT+1))/$MAX_RETRIES ==="
174
186
175
187
# Fetch build status in JSON format
176
188
BUILD_STATUS_JSON=$(npx eas build:view --json $BUILD_ID)
@@ -233,7 +245,6 @@ jobs:
233
245
id : download
234
246
run : |
235
247
echo "🔽 Retrieving APK URL..."
236
- # Use the build:view command to get a clean JSON response
237
248
APK_URL=$(npx eas build:view --json ${{ needs.build-android.outputs.build_id }} | jq -r '.artifacts.buildUrl')
238
249
if [[ -z "$APK_URL" || "$APK_URL" == "null" ]]; then
239
250
echo "❌ Error: No APK URL found!"
@@ -321,11 +332,13 @@ jobs:
321
332
RELEASE_TITLE="Nightly Build (${{ needs.build-android.outputs.build_date }})"
322
333
fi
323
334
echo "RELEASE_TAG=${RELEASE_TAG}" >> $GITHUB_OUTPUT
335
+ echo "RELEASE_TITLE=${RELEASE_TITLE}" >> $GITHUB_OUTPUT
336
+
324
337
- name : " 🎉 Publish GitHub Release"
325
338
uses : softprops/action-gh-release@v2
326
339
with :
327
340
tag_name : ${{ steps.release-type.outputs.RELEASE_TAG }}
328
341
name : ${{ steps.release-type.outputs.RELEASE_TITLE }}
329
342
body_path : changelog.txt
330
343
files : app-release.apk
331
- prerelease : ${{ needs.build-android.outputs.is_production != 'true' }}
344
+ prerelease : ${{ needs.build-android.outputs.is_production != 'true' }}
0 commit comments