Skip to content

Commit c36cbe9

Browse files
Updated workflow to run on any branch & to create pre-release builds on anything not main.
1 parent c8bda77 commit c36cbe9

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

.github/workflows/eas-android-build.yml

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ permissions:
44

55
on:
66
push:
7-
branches: [main]
7+
branches: ['**'] # run on any branch
88
workflow_dispatch:
99

1010
env:
@@ -21,6 +21,8 @@ jobs:
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
2426
steps:
2527
# ========================
2628
# 🛠️ Repository Setup
@@ -68,29 +70,38 @@ jobs:
6870
- name: "🏷️ Set CI/CD Versions"
6971
id: version-control
7072
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
7376
APP_VERSION=$(jq -r '.version' version.json)
7477
IS_PRODUCTION="true"
78+
EAS_PROFILE=production
79+
EAS_CHANNEL=production
7580
else
76-
APP_VERSION="1.0.0-prerelease.${{ github.run_number }}"
81+
APP_VERSION="1.0.0-prerelease.${GITHUB_RUN_NUMBER}"
7782
IS_PRODUCTION="false"
83+
EAS_PROFILE=development # dev build profile
84+
EAS_CHANNEL="dev-${BRANCH_NAME}" # dev release channel
7885
fi
7986
8087
# Generate build identifiers
8188
BUILD_NUMBER="${{ github.run_id }}"
8289
BUILD_DATE=$(date +'%Y%m%d-%H%M%S')
8390
8491
# 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
8998
9099
# 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
94105
95106
# ========================
96107
# 🔐 EAS Setup & Auth
@@ -107,9 +118,9 @@ jobs:
107118
- name: "🚀 Trigger EAS Build"
108119
id: build
109120
run: |
110-
echo "🔄 Initializing build process..."
121+
echo "🔄 Initializing build process with profile=${EAS_PROFILE} on channel=${EAS_CHANNEL}..."
111122
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)
113124
echo "Raw build output: $BUILD_JSON"
114125
BUILD_ID=$(echo "$BUILD_JSON" | jq -r '.[0].id')
115126
if [[ -z "$BUILD_ID" || "$BUILD_ID" == "null" ]]; then
@@ -170,7 +181,8 @@ jobs:
170181
SLEEP_TIME=30
171182
172183
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 ==="
174186

175187
# Fetch build status in JSON format
176188
BUILD_STATUS_JSON=$(npx eas build:view --json $BUILD_ID)
@@ -233,7 +245,6 @@ jobs:
233245
id: download
234246
run: |
235247
echo "🔽 Retrieving APK URL..."
236-
# Use the build:view command to get a clean JSON response
237248
APK_URL=$(npx eas build:view --json ${{ needs.build-android.outputs.build_id }} | jq -r '.artifacts.buildUrl')
238249
if [[ -z "$APK_URL" || "$APK_URL" == "null" ]]; then
239250
echo "❌ Error: No APK URL found!"
@@ -321,11 +332,13 @@ jobs:
321332
RELEASE_TITLE="Nightly Build (${{ needs.build-android.outputs.build_date }})"
322333
fi
323334
echo "RELEASE_TAG=${RELEASE_TAG}" >> $GITHUB_OUTPUT
335+
echo "RELEASE_TITLE=${RELEASE_TITLE}" >> $GITHUB_OUTPUT
336+
324337
- name: "🎉 Publish GitHub Release"
325338
uses: softprops/action-gh-release@v2
326339
with:
327340
tag_name: ${{ steps.release-type.outputs.RELEASE_TAG }}
328341
name: ${{ steps.release-type.outputs.RELEASE_TITLE }}
329342
body_path: changelog.txt
330343
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

Comments
 (0)