diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..df9804fe --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,84 @@ +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.10.6 + 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 }}($DATE).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