chore/ 删除过期文档和skills

This commit is contained in:
Kevin
2026-03-22 18:17:43 +08:00
parent 786ebf8ae6
commit d8378bb326
47 changed files with 73 additions and 11313 deletions

View File

@@ -1,10 +1,14 @@
# App Expo 统一部署 Pipeline
# App ExpoCI 内生成 Android 签名 APKexpo prebuild + Gradle assembleRelease
# 使用 app-expo/plugins/withAndroidReleaseSigning在 android/app 放置 keystore.properties + jks 后打 release 包。
#
# 环境映射(按触发源自动推断):
# main → dev (开发 + 内部测试)
# v*.*.* → prod (正式发布)
# v*.*.* → prod (正式发布 + GitHub Release 附带 APK)
#
# 手动触发workflow_dispatch 可选择 dev / stage / prod
#
# Repository secrets与 android-release.yml 共用同一套即可):
# ANDROID_KEYSTORE_BASE64 / ANDROID_STORE_PASSWORD / ANDROID_KEY_ALIAS / ANDROID_KEY_PASSWORD
name: App Expo Deploy
@@ -27,7 +31,7 @@ on:
- prod
default: dev
version:
description: '版本号 (prod 时使用,如 1.0.0)'
description: '版本号 (prod 手动发版时使用,如 1.0.0)'
required: false
type: string
@@ -40,10 +44,10 @@ env:
jobs:
deploy:
name: "Build & Deploy"
name: "Android APK"
runs-on: ubuntu-latest
permissions:
contents: read
contents: write
steps:
- name: Checkout code
@@ -90,13 +94,9 @@ jobs:
*) node scripts/use-env.js development ;;
esac
- name: Export web build
working-directory: app-expo
run: npx expo export -p web
- name: Determine version (prod)
if: steps.env.outputs.env == 'prod'
- name: Determine version
id: version
working-directory: app-expo
run: |
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
VERSION="${GITHUB_REF#refs/tags/v}"
@@ -105,17 +105,72 @@ jobs:
VERSION="${{ github.event.inputs.version }}"
TAG_NAME="v${VERSION}"
else
VERSION=$(node -p "require('./app-expo/package.json').version")
VERSION=$(node -p "require('./package.json').version")
TAG_NAME="v${VERSION}"
fi
VERSION_CODE="${GITHUB_RUN_NUMBER}"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "tag_name=${TAG_NAME}" >> $GITHUB_OUTPUT
echo "version_code=${VERSION_CODE}" >> $GITHUB_OUTPUT
echo "apk_name=${{ env.APP_NAME }}-v${VERSION}-release.apk" >> $GITHUB_OUTPUT
echo "版本名: ${VERSION}, versionCode: ${VERSION_CODE}, tag: ${TAG_NAME}"
- name: Create release zip (prod)
if: steps.env.outputs.env == 'prod'
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Expo prebuild (Android)
working-directory: app-expo
run: npx expo prebuild --platform android --clean
- name: Decode keystore
working-directory: app-expo/android/app
run: |
cd app-expo/dist
zip -r ../${{ env.APP_NAME }}-v${{ steps.version.outputs.version }}-web.zip .
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > release-keystore.jks
cat > keystore.properties <<EOF
storeFile=release-keystore.jks
storePassword=${{ secrets.ANDROID_STORE_PASSWORD }}
keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}
keyPassword=${{ secrets.ANDROID_KEY_PASSWORD }}
EOF
sed -i 's/^[[:space:]]*//' keystore.properties
- name: Build release APK
working-directory: app-expo/android
env:
GRADLE_OPTS: '-Xmx4g -Dorg.gradle.daemon=false'
run: |
chmod +x gradlew
./gradlew assembleRelease --no-daemon \
-PversionName="${{ steps.version.outputs.version }}" \
-PversionCode="${{ steps.version.outputs.version_code }}"
- name: Locate APK
id: apk
working-directory: app-expo/android
run: |
APK_PATH=$(find app/build/outputs/apk/release -name "*.apk" | head -1)
if [ -z "$APK_PATH" ]; then
echo "未找到 Release APK"
exit 1
fi
FINAL_NAME="${{ steps.version.outputs.apk_name }}"
FINAL_PATH="app/build/outputs/apk/release/${FINAL_NAME}"
mv "$APK_PATH" "$FINAL_PATH"
echo "apk_path=${FINAL_PATH}" >> $GITHUB_OUTPUT
du -h "$FINAL_PATH"
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: ${{ steps.version.outputs.apk_name }}
path: app-expo/android/${{ steps.apk.outputs.apk_path }}
retention-days: ${{ steps.env.outputs.env == 'prod' && '90' || (steps.env.outputs.env == 'dev' && '14' || '30') }}
- name: Generate Release Notes (prod)
if: steps.env.outputs.env == 'prod' && startsWith(github.ref, 'refs/tags/')
@@ -130,7 +185,7 @@ jobs:
fi
{
echo "notes<<EOF"
echo "## ${APP_NAME} ${TAG_NAME}"
echo "## ${{ env.APP_NAME }} ${TAG_NAME}"
echo ""
echo "### 更新内容"
echo ""
@@ -141,22 +196,6 @@ jobs:
echo "EOF"
} >> $GITHUB_OUTPUT
- name: Upload artifact (dev / stage)
if: steps.env.outputs.env != 'prod'
uses: actions/upload-artifact@v4
with:
name: app-expo-web-${{ steps.env.outputs.env }}
path: app-expo/dist
retention-days: ${{ steps.env.outputs.env == 'dev' && '14' || '30' }}
- name: Upload artifact (prod)
if: steps.env.outputs.env == 'prod'
uses: actions/upload-artifact@v4
with:
name: ${{ env.APP_NAME }}-v${{ steps.version.outputs.version }}-web
path: app-expo/${{ env.APP_NAME }}-v${{ steps.version.outputs.version }}-web.zip
retention-days: 90
- name: Create GitHub Release (prod)
if: steps.env.outputs.env == 'prod'
uses: softprops/action-gh-release@v2
@@ -166,8 +205,6 @@ jobs:
body: ${{ steps.release_notes.outputs.notes || 'Release' }}
draft: false
prerelease: false
files: app-expo/${{ env.APP_NAME }}-v${{ steps.version.outputs.version }}-web.zip
files: app-expo/android/${{ steps.apk.outputs.apk_path }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: write