name: Build iOS on: workflow_dispatch: push: branches: - 'build-ios' paths-ignore: - '**.md' - '**.txt' - '.github/**' - '.idea/**' - '!.github/workflows/build-ios.yml' jobs: update_version: name: Read latest version runs-on: ubuntu-latest outputs: # 定义输出变量 version,以便在其他job中引用 new_version: ${{ steps.get-last-tag.outputs.tag}} last_commit: ${{ steps.get-last-commit.outputs.last_commit }} steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: 获取最后一次提交 id: get-last-commit run: | last_commit=$(git log -1 --pretty="%h %s" --first-parent) echo "last_commit=$last_commit" >> $GITHUB_OUTPUT - name: 获取最后一个tag id: get-last-tag run: | version=$(yq e .version pubspec.yaml | cut -d "+" -f 1) last_tag=$(git tag --sort=committerdate | tail -1) if (echo $last_tag | grep -v "+"); then echo "Illegal tag!" exit 1 elif (echo $last_tag | grep -v $version); then echo "No tags for current version in the repo, please add one manually." exit 1 fi echo "tag=$last_tag" >> $GITHUB_OUTPUT iOS: name: Build CI (iOS) needs: update_version runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: ${{ github.ref_name }} - name: 安装Flutter if: steps.cache-flutter.outputs.cache-hit != 'true' uses: subosito/flutter-action@v2.10.0 with: cache: true flutter-version: 3.24.0 - name: 更新版本号 id: version run: | # 更新pubspec.yaml文件中的版本号 sed -i "" "s/version: .*/version: ${{ needs.update_version.outputs.new_version }}/g" pubspec.yaml - name: flutter build ipa run: | flutter build ios --release --no-codesign ln -sf ./build/ios/iphoneos Payload zip -r9 app.ipa Payload/runner.app - name: 重命名应用 run: | for file in app.ipa; do new_file_name="build/Pili-${{ needs.update_version.outputs.new_version }}.ipa" mv "$file" "$new_file_name" done - name: 上传 uses: actions/upload-artifact@v3 with: if-no-files-found: error name: PiliPalaX-iOS path: | build/Pili-*.ipa upload: runs-on: ubuntu-latest needs: - update_version - iOS steps: - uses: actions/download-artifact@v3 with: name: PiliPalaX-iOS path: ./PiliPalaX-iOS # - name: Upload Pre-release # uses: ncipollo/release-action@v1 # with: # name: ${{ needs.update_version.outputs.new_version }} # token: ${{ secrets.GIT_TOKEN }} # commit: main # tag: ${{ needs.update_version.outputs.new_version }} # prerelease: true # allowUpdates: true # artifacts: Pilipala-CI/* - name: 发送到Telegram频道 uses: xireiki/channel-post@v1.0.7 with: bot_token: ${{ secrets.BOT_TOKEN }} chat_id: ${{ secrets.CHAT_ID }} large_file: false method: sendFile path: PiliPalaX-iOS/* parse_mode: Markdown context: "*v${{ needs.update_version.outputs.new_version }}*\n${{ needs.update_version.outputs.last_commit }}"