@@ -4,7 +4,7 @@ permissions:
44
55on :
66 push :
7- branches : ["**"] # run on any branch
7+ branches : ["**"] # Run on all branches
88 workflow_dispatch :
99
1010env :
2121 build_number : ${{ steps.version-control.outputs.build_number }}
2222 build_date : ${{ steps.version-control.outputs.build_date }}
2323 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 }}
2625 steps :
2726 # ========================
2827 # 🛠️ Repository Setup
3231 with :
3332 fetch-depth : 0
3433
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+
3542 # ========================
3643 # ⚙️ Environment Configuration
3744 # ========================
@@ -70,38 +77,34 @@ jobs:
7077 - name : " 🏷️ Set CI/CD Versions"
7178 id : version-control
7279 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
7682 APP_VERSION=$(jq -r '.version' version.json)
7783 IS_PRODUCTION="true"
78- EAS_PROFILE=production
79- EAS_CHANNEL=production
8084 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 }}"
8291 IS_PRODUCTION="false"
83- EAS_PROFILE=development # dev build profile
84- EAS_CHANNEL="dev-${BRANCH_NAME}" # dev release channel
8592 fi
8693
8794 # Generate build identifiers
8895 BUILD_NUMBER="${{ github.run_id }}"
8996 BUILD_DATE=$(date +'%Y%m%d-%H%M%S')
9097
9198 # 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
98103
99104 # 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
105108
106109 # ========================
107110 # 🔐 EAS Setup & Auth
@@ -118,9 +121,19 @@ jobs:
118121 - name : " 🚀 Trigger EAS Build"
119122 id : build
120123 run : |
121- echo "🔄 Initializing build process with profile=${EAS_PROFILE} on channel=${EAS_CHANNEL} ..."
124+ echo "🔄 Initializing build process..."
122125 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)
124137 echo "Raw build output: $BUILD_JSON"
125138 BUILD_ID=$(echo "$BUILD_JSON" | jq -r '.[0].id')
126139 if [[ -z "$BUILD_ID" || "$BUILD_ID" == "null" ]]; then
@@ -181,7 +194,7 @@ jobs:
181194 SLEEP_TIME=30
182195
183196 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 ==="
185198
186199 # Fetch build status in JSON format
187200 BUILD_STATUS_JSON=$(npx eas build:view --json $BUILD_ID)
@@ -244,6 +257,7 @@ jobs:
244257 id : download
245258 run : |
246259 echo "🔽 Retrieving APK URL..."
260+ # Use the build:view command to get a clean JSON response
247261 APK_URL=$(npx eas build:view --json ${{ needs.build-android.outputs.build_id }} | jq -r '.artifacts.buildUrl')
248262 if [[ -z "$APK_URL" || "$APK_URL" == "null" ]]; then
249263 echo "❌ Error: No APK URL found!"
@@ -284,7 +298,6 @@ jobs:
284298 CHANGELOG=$(git log --pretty=format:"- %s (%h) by %an" -n 15)
285299 echo "$CHANGELOG" > changelog.txt
286300
287- # FIXED OUTPUT HANDLING (ONLY CHANGE)
288301 delimiter=$(openssl rand -hex 6)
289302 echo "CHANGELOG<<${delimiter}" >> $GITHUB_OUTPUT
290303 cat changelog.txt >> $GITHUB_OUTPUT
@@ -326,9 +339,10 @@ jobs:
326339 RELEASE_TAG="v${{ needs.build-android.outputs.app_version }}"
327340 RELEASE_TITLE="Production Release v${{ needs.build-android.outputs.app_version }}"
328341 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 }}"
332346 fi
333347 echo "RELEASE_TAG=${RELEASE_TAG}" >> $GITHUB_OUTPUT
334348 echo "RELEASE_TITLE=${RELEASE_TITLE}" >> $GITHUB_OUTPUT
0 commit comments