mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
131 lines
3.6 KiB
YAML
131 lines
3.6 KiB
YAML
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 }}"
|