mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 03:54:08 +00:00
Mobile-only GitHub workflow builds (#975)
* Mobile build only * Fix copy on debug * PR review comments
This commit is contained in:
114
.github/workflows/mobile-release.yml
vendored
Normal file
114
.github/workflows/mobile-release.yml
vendored
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
name: Mobile Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'mobile-v*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build Mobile Apps
|
||||||
|
uses: ./.github/workflows/flutter-build.yml
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: Create Mobile GitHub Release
|
||||||
|
needs: [build]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Extract version from tag
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
# Strip 'mobile-' prefix to get the version part (e.g., 'mobile-v1.0.0' -> 'v1.0.0')
|
||||||
|
VERSION="${GITHUB_REF_NAME#mobile-}"
|
||||||
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
echo "Extracted version: $VERSION"
|
||||||
|
|
||||||
|
- name: Download Android APK artifact
|
||||||
|
uses: actions/download-artifact@v4.3.0
|
||||||
|
with:
|
||||||
|
name: app-release-apk
|
||||||
|
path: ${{ runner.temp }}/mobile-artifacts
|
||||||
|
|
||||||
|
- name: Download iOS build artifact
|
||||||
|
uses: actions/download-artifact@v4.3.0
|
||||||
|
with:
|
||||||
|
name: ios-build-unsigned
|
||||||
|
path: ${{ runner.temp }}/ios-build
|
||||||
|
|
||||||
|
- name: Prepare release assets
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
mkdir -p ${{ runner.temp }}/release-assets
|
||||||
|
|
||||||
|
echo "=== Downloaded artifacts ==="
|
||||||
|
echo "Mobile artifacts:"
|
||||||
|
ls -laR "${{ runner.temp }}/mobile-artifacts" || echo "No mobile-artifacts directory"
|
||||||
|
echo "iOS build:"
|
||||||
|
ls -laR "${{ runner.temp }}/ios-build" || echo "No ios-build directory"
|
||||||
|
echo "==========================="
|
||||||
|
|
||||||
|
# Copy debug APK if it exists
|
||||||
|
if [ -f "${{ runner.temp }}/mobile-artifacts/app-debug.apk" ]; then
|
||||||
|
cp "${{ runner.temp }}/mobile-artifacts/app-debug.apk" \
|
||||||
|
"${{ runner.temp }}/release-assets/sure-${{ steps.version.outputs.version }}-debug.apk"
|
||||||
|
echo "✓ Debug APK prepared"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy release APK if it exists
|
||||||
|
if [ -f "${{ runner.temp }}/mobile-artifacts/app-release.apk" ]; then
|
||||||
|
cp "${{ runner.temp }}/mobile-artifacts/app-release.apk" \
|
||||||
|
"${{ runner.temp }}/release-assets/sure-${{ steps.version.outputs.version }}.apk"
|
||||||
|
echo "✓ Release APK prepared"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create iOS app archive (zip the .app bundle)
|
||||||
|
if [ -d "${{ runner.temp }}/ios-build/ios/iphoneos/Runner.app" ]; then
|
||||||
|
cd "${{ runner.temp }}/ios-build/ios/iphoneos"
|
||||||
|
zip -r "${{ runner.temp }}/release-assets/sure-${{ steps.version.outputs.version }}-ios-unsigned.zip" Runner.app
|
||||||
|
echo "✓ iOS build archive prepared"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy iOS build info
|
||||||
|
if [ -f "${{ runner.temp }}/ios-build/ios-build-info.txt" ]; then
|
||||||
|
cp "${{ runner.temp }}/ios-build/ios-build-info.txt" "${{ runner.temp }}/release-assets/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Release assets:"
|
||||||
|
ls -la "${{ runner.temp }}/release-assets/"
|
||||||
|
|
||||||
|
# Fail early if no assets were produced
|
||||||
|
if [ -z "$(ls -A "${{ runner.temp }}/release-assets/")" ]; then
|
||||||
|
echo "::error::No release assets were produced"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Create GitHub Release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref_name }}
|
||||||
|
name: "${{ steps.version.outputs.version }} (Mobile)"
|
||||||
|
draft: false
|
||||||
|
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}
|
||||||
|
generate_release_notes: false
|
||||||
|
files: |
|
||||||
|
${{ runner.temp }}/release-assets/*
|
||||||
|
body: |
|
||||||
|
## Mobile-Only Release: ${{ steps.version.outputs.version }}
|
||||||
|
|
||||||
|
This is a mobile-only release. It does not include server-side changes.
|
||||||
|
|
||||||
|
### Downloads
|
||||||
|
|
||||||
|
- **Android APK**: Debug build for testing on Android devices
|
||||||
|
- **iOS Build**: Unsigned iOS build (requires code signing for installation)
|
||||||
|
|
||||||
|
> **Note**: These are builds intended for testing purposes. For production use, please build from source with proper signing credentials.
|
||||||
Reference in New Issue
Block a user