Skip to content

Commit cecda50

Browse files
author
weilei
committed
chore: 更新部署工作流,优化文档和示例项目的依赖版本同步
1 parent fd456a9 commit cecda50

File tree

1 file changed

+81
-74
lines changed

1 file changed

+81
-74
lines changed

.github/workflows/deploy.yml

Lines changed: 81 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ on:
66
paths:
77
- 'docs/**'
88
- 'examples/**'
9-
- 'packages/element-ui-x/package.json'
9+
- 'packages/element-ui-x/**'
1010
pull_request:
1111
types: [opened, synchronize, reopened]
1212
branches: [master]
1313
paths:
1414
- 'docs/**'
1515
- 'examples/**'
16-
- 'packages/element-ui-x/package.json'
16+
- 'packages/element-ui-x/**'
1717
pull_request_target:
1818
types: [closed]
1919
branches: [master]
2020
paths:
2121
- 'docs/**'
2222
- 'examples/**'
23-
- 'packages/element-ui-x/package.json'
23+
- 'packages/element-ui-x/**'
2424
workflow_dispatch:
2525
inputs:
2626
deploy_target:
@@ -34,22 +34,16 @@ on:
3434
- examples
3535

3636
jobs:
37-
sync-version:
38-
name: 同步版本号
37+
deploy-docs:
38+
name: 部署文档站
39+
if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.deploy_target == 'all' || github.event.inputs.deploy_target == 'docs' }}
3940
runs-on: ubuntu-latest
40-
if: |
41-
(github.event_name == 'push' && contains(github.event.head_commit.modified, 'packages/element-ui-x/package.json')) ||
42-
github.event_name == 'workflow_dispatch'
43-
outputs:
44-
version-changed: ${{ steps.check-version.outputs.changed }}
45-
new-version: ${{ steps.check-version.outputs.version }}
41+
env:
42+
VUEPRESS_GA_ID: ${{ secrets.VUEPRESS_GA_ID }}
4643

4744
steps:
4845
- name: Checkout repository
4946
uses: actions/checkout@v3
50-
with:
51-
token: ${{ secrets.GITHUB_TOKEN }}
52-
fetch-depth: 0
5347

5448
- name: Configure Git
5549
run: |
@@ -61,78 +55,55 @@ jobs:
6155
with:
6256
node-version: '16'
6357

64-
- name: Check and sync version
65-
id: check-version
58+
- name: Get package version and replace dependencies
59+
id: version-setup
6660
run: |
61+
# 获取主包版本号
6762
MAIN_VERSION=$(node -p "require('./packages/element-ui-x/package.json').version")
6863
echo "Main package version: $MAIN_VERSION"
64+
echo "version=$MAIN_VERSION" >> $GITHUB_OUTPUT
6965
70-
DOCS_VERSION=$(node -p "require('./docs/package.json').dependencies['vue-element-ui-x']" | sed 's/[\^~]//g')
71-
echo "Docs package version: $DOCS_VERSION"
66+
# 备份原始的package.json文件
67+
cp docs/package.json docs/package.json.backup
7268
73-
if [ "$MAIN_VERSION" != "$DOCS_VERSION" ]; then
74-
echo "Version mismatch detected, syncing..."
69+
# 临时替换文档站点的依赖为NPM版本
70+
echo "Replacing docs package.json dependency..."
71+
node -e "
72+
const fs = require('fs');
73+
const docsPackage = JSON.parse(fs.readFileSync('docs/package.json', 'utf8'));
7574
76-
node -e "
77-
const fs = require('fs');
78-
const docsPackage = JSON.parse(fs.readFileSync('docs/package.json', 'utf8'));
75+
// 检查是否使用本地依赖
76+
if (docsPackage.dependencies['vue-element-ui-x'].startsWith('file:')) {
77+
console.log('Found local dependency, replacing with NPM version...');
7978
docsPackage.dependencies['vue-element-ui-x'] = '^$MAIN_VERSION';
8079
fs.writeFileSync('docs/package.json', JSON.stringify(docsPackage, null, 2) + '\n');
81-
console.log('Updated docs package.json to version ^$MAIN_VERSION');
82-
"
83-
84-
git add docs/package.json
85-
git commit -m "docs: sync vue-element-ui-x version to ^$MAIN_VERSION" || echo "No changes to commit"
86-
git push origin ${{ github.ref_name }} || echo "Nothing to push"
87-
88-
echo "changed=true" >> $GITHUB_OUTPUT
89-
echo "version=$MAIN_VERSION" >> $GITHUB_OUTPUT
90-
else
91-
echo "Versions are already in sync"
92-
echo "changed=false" >> $GITHUB_OUTPUT
93-
echo "version=$MAIN_VERSION" >> $GITHUB_OUTPUT
94-
fi
95-
96-
deploy-docs:
97-
name: 部署文档站
98-
needs: [sync-version]
99-
if: |
100-
always() &&
101-
(needs.sync-version.result == 'success' || needs.sync-version.result == 'skipped') &&
102-
(${{ github.event_name != 'workflow_dispatch' || github.event.inputs.deploy_target == 'all' || github.event.inputs.deploy_target == 'docs' }})
103-
runs-on: ubuntu-latest
104-
env:
105-
VUEPRESS_GA_ID: ${{ secrets.VUEPRESS_GA_ID }}
106-
107-
steps:
108-
- name: Checkout repository
109-
uses: actions/checkout@v3
110-
with:
111-
ref: ${{ github.ref }}
112-
113-
- name: Pull latest changes
114-
if: needs.sync-version.outputs.version-changed == 'true'
115-
run: git pull origin ${{ github.ref_name }}
116-
117-
- name: Configure Git
118-
run: |
119-
git config --global user.name "GitHub Actions"
120-
git config --global user.email "github-actions@github.com"
80+
console.log('Replaced with version: ^$MAIN_VERSION');
81+
} else {
82+
console.log('Already using NPM version');
83+
}
84+
"
12185
122-
- name: Setup Node.js
123-
uses: actions/setup-node@v3
124-
with:
125-
node-version: '16'
86+
# 显示修改后的依赖
87+
echo "Updated docs dependency:"
88+
node -p "require('./docs/package.json').dependencies['vue-element-ui-x']"
12689
127-
- name: Install dependencies
90+
- name: Install docs dependencies
12891
working-directory: docs
12992
run: |
93+
echo "Installing dependencies with NPM version..."
13094
npm install
13195
13296
- name: Build documentation
13397
working-directory: docs
13498
run: npm run build
13599

100+
- name: Restore original package.json
101+
run: |
102+
echo "Restoring original docs package.json..."
103+
mv docs/package.json.backup docs/package.json
104+
echo "Restored to:"
105+
node -p "require('./docs/package.json').dependencies['vue-element-ui-x']"
106+
136107
- name: Deploy to Vercel
137108
id: deploy-docs
138109
uses: amondnet/vercel-action@v25
@@ -148,15 +119,11 @@ jobs:
148119
uses: actions/github-script@v6
149120
with:
150121
script: |
151-
let body = '📖 文档预览: ${{ steps.deploy-docs.outputs.preview-url }}';
152-
if ('${{ needs.sync-version.outputs.version-changed }}' === 'true') {
153-
body += '\n🔄 已自动同步版本号到: ${{ needs.sync-version.outputs.new-version }}';
154-
}
155122
github.rest.issues.createComment({
156123
issue_number: context.issue.number,
157124
owner: context.repo.owner,
158125
repo: context.repo.repo,
159-
body: body
126+
body: '📖 文档预览: ${{ steps.deploy-docs.outputs.preview-url }}\n🔄 使用NPM版本: ${{ steps.version-setup.outputs.version }}'
160127
})
161128
162129
deploy-examples:
@@ -175,15 +142,55 @@ jobs:
175142
with:
176143
node-version: '16'
177144

145+
- name: Get package version and replace dependencies
146+
id: version-setup
147+
run: |
148+
# 获取主包版本号
149+
MAIN_VERSION=$(node -p "require('./packages/element-ui-x/package.json').version")
150+
echo "Main package version: $MAIN_VERSION"
151+
echo "version=$MAIN_VERSION" >> $GITHUB_OUTPUT
152+
153+
# 备份原始的package.json文件
154+
cp examples/package.json examples/package.json.backup
155+
156+
# 临时替换示例项目的依赖为NPM版本
157+
echo "Replacing examples package.json dependency..."
158+
node -e "
159+
const fs = require('fs');
160+
const examplesPackage = JSON.parse(fs.readFileSync('examples/package.json', 'utf8'));
161+
162+
// 检查是否使用本地依赖
163+
if (examplesPackage.dependencies['vue-element-ui-x'].startsWith('file:')) {
164+
console.log('Found local dependency, replacing with NPM version...');
165+
examplesPackage.dependencies['vue-element-ui-x'] = '^$MAIN_VERSION';
166+
fs.writeFileSync('examples/package.json', JSON.stringify(examplesPackage, null, 2) + '\n');
167+
console.log('Replaced with version: ^$MAIN_VERSION');
168+
} else {
169+
console.log('Already using NPM version');
170+
}
171+
"
172+
173+
# 显示修改后的依赖
174+
echo "Updated examples dependency:"
175+
node -p "require('./examples/package.json').dependencies['vue-element-ui-x']"
176+
178177
- name: Install dependencies
179178
working-directory: examples
180179
run: |
180+
echo "Installing dependencies with NPM version..."
181181
npm install
182182
183183
- name: Build
184184
working-directory: examples
185185
run: npm run build
186186

187+
- name: Restore original package.json
188+
run: |
189+
echo "Restoring original examples package.json..."
190+
mv examples/package.json.backup examples/package.json
191+
echo "Restored to:"
192+
node -p "require('./examples/package.json').dependencies['vue-element-ui-x']"
193+
187194
- name: Deploy to Vercel
188195
id: deploy-examples
189196
uses: amondnet/vercel-action@v25
@@ -203,5 +210,5 @@ jobs:
203210
issue_number: context.issue.number,
204211
owner: context.repo.owner,
205212
repo: context.repo.repo,
206-
body: '🚀 示例预览: ${{ steps.deploy-examples.outputs.preview-url }}'
213+
body: '🚀 示例预览: ${{ steps.deploy-examples.outputs.preview-url }}\n🔄 使用NPM版本: ${{ steps.version-setup.outputs.version }}'
207214
})

0 commit comments

Comments
 (0)