name: build_apk # action事件触发 on: push: # push tag时触发 tags: - 'v*.*.*' # 可以有多个jobs jobs: build_apk: # 运行环境 ubuntu-latest window-latest mac-latest runs-on: ubuntu-latest # 每个jobs中可以有多个steps steps: - name: 代码迁出 uses: actions/checkout@v3 - name: 构建Java环境 uses: actions/setup-java@v3 with: distribution: "zulu" java-version: "17" token: ${{secrets.GIT_TOKEN}} - name: 检查缓存 uses: actions/cache@v2 id: cache-flutter with: path: /root/flutter-sdk # Flutter SDK 的路径 key: ${{ runner.os }}-flutter-${{ hashFiles('**/pubspec.lock') }} - name: 安装Flutter if: steps.cache-flutter.outputs.cache-hit != 'true' uses: subosito/flutter-action@v2 with: flutter-version: 3.16.4 channel: any - name: 下载项目依赖 run: flutter pub get - name: 解码生成 jks run: echo $KEYSTORE_BASE64 | base64 -di > android/app/vvex.jks env: KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }} - name: flutter build apk # 对应 android/app/build.gradle signingConfigs中的配置项 run: flutter build apk --release --split-per-abi env: KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} KEY_ALIAS: ${{ secrets.KEY_ALIAS }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD}} - name: 获取版本号 id: version run: echo "version=${GITHUB_REF#refs/tags/v}" >>$GITHUB_OUTPUT # - name: 获取当前日期 # id: date # run: echo "date=$(date +'%m%d')" >>$GITHUB_OUTPUT - name: 重命名应用 Pili-arm64-v8a-*.*.*.0101.apk run: | # DATE=${{ steps.date.outputs.date }} for file in build/app/outputs/flutter-apk/app-*-release.apk; do if [[ $file =~ app-(.*)-release.apk ]]; then new_file_name="build/app/outputs/flutter-apk/Pili-${BASH_REMATCH[1]}-${{ steps.version.outputs.version }}.apk" mv "$file" "$new_file_name" fi done - name: 构建和发布release uses: ncipollo/release-action@v1 with: # release title name: v${{ steps.version.outputs.version }} artifacts: "build/app/outputs/flutter-apk/Pili-*.apk" bodyFile: "change_log/${{steps.version.outputs.version}}.md" token: ${{ secrets.GIT_TOKEN }} allowUpdates: true