Skip to content

feat: add auto release and preview ci #8

feat: add auto release and preview ci

feat: add auto release and preview ci #8

Workflow file for this run

name: EAS Build and Release
on:
workflow_dispatch:
push:
branches:
- master
paths:
- '*.js'
- 'package.json'
- 'eas.json'
- 'app.json'
- '.github/workflows/release.yml'
pull_request:
branches:
- master
paths:
- '*.js'
- 'package.json'
- 'eas.json'
- 'app.json'
- '.github/workflows/release.yml'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest]
build: [development, production]
include:
- os: macos-latest
platform: ios
- os: ubuntu-latest
platform: android
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup JDK 21
if: matrix.platform == 'android'
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18.x
cache: npm
- name: Setup Expo and EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: Install dependencies
run: npm ci
- name: Build Locally
run: eas build --profile ${{ matrix.build }} --platform ${{ matrix.platform }} --no-wait --non-interactive --local
- name: Archive iOS build artifacts
if: matrix.platform == 'ios'
run: |
tar -xzvf build-*.tar.gz
mkdir -p Payload
mv $(find . -name "*.app" | head -n 1) Payload/casdoorapp.app
zip -r casdoorapp.ipa Payload/
- name: Upload iOS build artifacts
uses: actions/upload-artifact@v4
if: matrix.platform == 'ios'
with:
name: casdoor-app-ios-${{ matrix.build }}.ipa
path: casdoorapp.ipa
- name: Upload Android build artifacts
if: matrix.platform == 'android'
uses: actions/upload-artifact@v4
with:
name: casdoor-app-android-${{ matrix.build }}.apk
path: build-*.apk
semantic-release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Create Release Directory
run: mkdir -p release
- name: Download iOS build artifacts (development)
uses: actions/download-artifact@v4
with:
name: casdoor-app-ios-development.ipa
path: release/ios/development
- name: Download iOS build artifacts (production)
uses: actions/download-artifact@v4
with:
name: casdoor-app-ios-production.ipa
path: release/ios/production
- name: Download Android build artifacts (development)
uses: actions/download-artifact@v4
with:
name: casdoor-app-android-development.apk
path: release/android/development
- name: Download Android build artifacts (production)
uses: actions/download-artifact@v4
with:
name: casdoor-app-android-production.apk
path: release/android/production
- name: Run semantic-release
run: npm run release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}