mirror of
https://github.com/kuaifan/dootask.git
synced 2026-04-23 10:18:41 +00:00
配合 dootask-app 仓库接入 Expo + EAS Build(见 docs/migration 的 Phase 6),
主仓库不再承担 iOS/Android 打包,保留前端资源构建即可。
- cmd:
- appbuild/buildapp:从 electron_operate app 改为直接 web_build prod,
构建完成后打印提示去 dootask-app 仓库跑 EAS Build / 同步 assets/web/
- 移除 eeui 命令(docker run kuaifan/eeui-cli)
- electron/build.js:
- 删除 data.id === 'app' 分支(Android local.properties / iOS Version.xcconfig
回写、eeui build 调用)
- 删除 argv 'app' 和 'android-upload' 两个命令
- .github/workflows/publish.yml:
- build-client 矩阵移除 android;同时删除所有 (Android) 条件 steps(Build Js/
Setup JDK/Build App/Upload File/Upload Release)
- 保留 Electron 桌面端(mac / windows)分支
- .github/workflows/ios-publish.yml:整体删除(iOS 移动端构建搬去 dootask-app)
子模块 resources/mobile 的 .gitmodules 条目和目录引用留到 Phase 7 一起清理。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
212 lines
6.3 KiB
YAML
212 lines
6.3 KiB
YAML
name: "Publish"
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- "pro"
|
||
|
||
jobs:
|
||
check-version:
|
||
permissions:
|
||
contents: read
|
||
runs-on: ubuntu-latest
|
||
outputs:
|
||
should_release: ${{ steps.check-tag.outputs.should_release }}
|
||
version: ${{ steps.get-version.outputs.version }}
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Get version from package.json
|
||
id: get-version
|
||
run: |
|
||
VERSION=$(node -p "require('./package.json').version")
|
||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||
|
||
- name: Check if tag exists
|
||
id: check-tag
|
||
run: |
|
||
VERSION=${{ steps.get-version.outputs.version }}
|
||
if git ls-remote --tags origin | grep -q "refs/tags/v${VERSION}$"; then
|
||
echo "This version v${VERSION} has been released"
|
||
echo "should_release=false" >> $GITHUB_OUTPUT
|
||
else
|
||
echo "Version v${VERSION} has not been released, continue building"
|
||
echo "should_release=true" >> $GITHUB_OUTPUT
|
||
fi
|
||
|
||
create-release:
|
||
needs: check-version
|
||
if: needs.check-version.outputs.should_release == 'true'
|
||
permissions:
|
||
contents: write
|
||
runs-on: ubuntu-latest
|
||
outputs:
|
||
release_id: ${{ steps.create-release.outputs.result }}
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Create Release
|
||
id: create-release
|
||
uses: actions/github-script@v7
|
||
with:
|
||
script: |
|
||
const fs = require('fs');
|
||
const version = '${{ needs.check-version.outputs.version }}';
|
||
|
||
// 从 CHANGELOG.md 提取当前版本段落
|
||
let changelog = '';
|
||
const changelogPath = 'CHANGELOG.md';
|
||
if (fs.existsSync(changelogPath)) {
|
||
const content = fs.readFileSync(changelogPath, 'utf-8');
|
||
const regex = new RegExp(`## \\[${version.replace(/\./g, '\\.')}\\][\\s\\S]*?(?=\\n## \\[|$)`);
|
||
const match = content.match(regex);
|
||
if (match) {
|
||
changelog = match[0].trim();
|
||
}
|
||
}
|
||
|
||
// 创建 release
|
||
const { data } = await github.rest.repos.createRelease({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
tag_name: `v${version}`,
|
||
name: version,
|
||
body: changelog || 'No significant changes in this release.',
|
||
draft: true,
|
||
prerelease: false
|
||
})
|
||
return data.id
|
||
|
||
pack-vendor:
|
||
needs: [ check-version, create-release ]
|
||
if: needs.check-version.outputs.should_release == 'true'
|
||
permissions:
|
||
contents: write
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Setup PHP
|
||
uses: shivammathur/setup-php@v2
|
||
with:
|
||
php-version: '8.0'
|
||
extensions: mbstring, intl, gd, xml, zip, swoole
|
||
tools: composer:v2
|
||
|
||
- name: Install Dependencies
|
||
run: composer install
|
||
|
||
- name: Create Vendor Archive
|
||
run: tar -czf vendor.tar.gz vendor/
|
||
|
||
- name: Upload Vendor Archive
|
||
uses: actions/github-script@v7
|
||
env:
|
||
RELEASE_ID: ${{ needs.create-release.outputs.release_id }}
|
||
with:
|
||
script: |
|
||
const fs = require('fs');
|
||
|
||
const data = await fs.promises.readFile('vendor.tar.gz');
|
||
|
||
await github.rest.repos.uploadReleaseAsset({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
release_id: process.env.RELEASE_ID,
|
||
name: 'vendor.tar.gz',
|
||
data: data
|
||
});
|
||
|
||
build-client:
|
||
needs: [ check-version, create-release, pack-vendor ]
|
||
if: needs.check-version.outputs.should_release == 'true'
|
||
permissions:
|
||
contents: write
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
include:
|
||
- platform: "macos-latest"
|
||
build_type: "mac"
|
||
- platform: "windows-latest"
|
||
build_type: "windows"
|
||
|
||
runs-on: ${{ matrix.platform }}
|
||
environment: build
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Use Node.js 20.x
|
||
uses: actions/setup-node@v4
|
||
with:
|
||
node-version: 20.x
|
||
|
||
# 移动端构建已迁移到 dootask-app 仓库(EAS Build),见
|
||
# dootask-app/.github/workflows/build.yml
|
||
|
||
# Mac 构建步骤
|
||
- name: (Mac) Build Client
|
||
if: matrix.build_type == 'mac'
|
||
env:
|
||
APPLEID: ${{ secrets.APPLEID }}
|
||
APPLEIDPASS: ${{ secrets.APPLEIDPASS }}
|
||
CSC_LINK: ${{ secrets.CSC_LINK }}
|
||
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
||
UPLOAD_TOKEN: ${{ secrets.UPLOAD_TOKEN }}
|
||
UPLOAD_URL: ${{ secrets.UPLOAD_URL }}
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||
run: |
|
||
./cmd electron mac
|
||
|
||
# Windows 构建步骤
|
||
- name: (Windows) Build Client
|
||
if: matrix.build_type == 'windows'
|
||
env:
|
||
UPLOAD_TOKEN: ${{ secrets.UPLOAD_TOKEN }}
|
||
UPLOAD_URL: ${{ secrets.UPLOAD_URL }}
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||
shell: bash
|
||
run: |
|
||
./cmd electron win
|
||
|
||
publish-release:
|
||
needs: [ check-version, create-release, pack-vendor, build-client ]
|
||
if: needs.check-version.outputs.should_release == 'true' && github.ref == 'refs/heads/pro'
|
||
permissions:
|
||
contents: write
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Publish Release
|
||
uses: actions/github-script@v7
|
||
env:
|
||
RELEASE_ID: ${{ needs.create-release.outputs.release_id }}
|
||
with:
|
||
script: |
|
||
github.rest.repos.updateRelease({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
release_id: process.env.RELEASE_ID,
|
||
draft: false,
|
||
prerelease: false
|
||
})
|
||
|
||
- name: Upload Changelog & Publish to Website
|
||
env:
|
||
UPLOAD_TOKEN: ${{ secrets.UPLOAD_TOKEN }}
|
||
UPLOAD_URL: ${{ secrets.UPLOAD_URL }}
|
||
run: |
|
||
pushd electron || exit
|
||
npm install
|
||
popd || exit
|
||
node ./electron/build.js upload-changelog
|
||
node ./electron/build.js release
|