-
Notifications
You must be signed in to change notification settings - Fork 367
143 lines (125 loc) · 5.5 KB
/
Copy pathpreview-publish.yml
File metadata and controls
143 lines (125 loc) · 5.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: preview-publish
on:
workflow_run:
workflows:
- preview-build
types:
- completed
jobs:
preview-context:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
outputs:
pr_id: ${{ steps.pr.outputs.id }}
tdesign_react_domain: ${{ steps.tdesign-react-domain.outputs.tdesign_react_domain }}
tdesign_react_chat_domain: ${{ steps.tdesign-react-chat-domain.outputs.tdesign_react_chat_domain }}
steps:
- name: Download pr id
uses: dawidd6/action-download-artifact@v21
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
run_id: ${{ github.event.workflow_run.id }}
name: pr-id
- name: Set pr id
id: pr
run: echo "id=$(cat pr-id.txt)" >> $GITHUB_OUTPUT
- name: tdesign-react-domain
id: tdesign-react-domain
run: echo "tdesign_react_domain=https://preview-pr-${{ steps.pr.outputs.id }}-tdesign-react.surge.sh" >> $GITHUB_OUTPUT
- name: tdesign-react-chat-domain
id: tdesign-react-chat-domain
run: echo "tdesign_react_chat_domain=https://preview-pr-${{ steps.pr.outputs.id }}-tdesign-react-chat.surge.sh" >> $GITHUB_OUTPUT
tdesign-react:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: preview-context
steps:
- uses: dawidd6/action-download-artifact@v21
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
run_id: ${{ github.event.workflow_run.id }}
name: tdesign-react-site
- run: |
export DEPLOY_DOMAIN=${{ needs.preview-context.outputs.tdesign_react_domain }}
npx surge --project ./ --domain $DEPLOY_DOMAIN --token ${{ secrets.TDESIGN_SURGE_TOKEN }}
tdesign-react-chat:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: preview-context
steps:
- uses: dawidd6/action-download-artifact@v21
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
run_id: ${{ github.event.workflow_run.id }}
name: tdesign-react-chat-site
- run: |
export DEPLOY_DOMAIN=${{ needs.preview-context.outputs.tdesign_react_chat_domain }}
npx surge --project ./ --domain $DEPLOY_DOMAIN --token ${{ secrets.TDESIGN_SURGE_TOKEN }}
preview-comment:
if: always()
needs:
- preview-context
- tdesign-react
- tdesign-react-chat
runs-on: ubuntu-latest
steps:
- name: jobs report
id: report
uses: actions/github-script@v9
with:
script: |
const pr_id = ${{ needs.preview-context.outputs.pr_id }};
const tdesign_react_domain = "${{ needs.preview-context.outputs.tdesign_react_domain }}";
const tdesign_react_chat_domain = "${{ needs.preview-context.outputs.tdesign_react_chat_domain }}";
const { data: { jobs } } = await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.runId,
per_page: 100
})
const tdesign = {
"tdesign-react": { status: "", report_url: "" },
"tdesign-react-chat": { status: "", report_url: "" },
};
const preview_success = `<img width="300" alt="完成" src="https://user-images.githubusercontent.com/15634204/150816437-9f5bb788-cd67-4cbc-9897-b82d74e9aa65.png" />`;
const preview_failure = `<img width="300" alt="失败" src="https://user-images.githubusercontent.com/5378891/75333447-1e63a280-58c1-11ea-975d-235367fd1522.png" />`;
jobs
.filter((job) => job.name.startsWith("tdesign-"))
.map((job) => {
tdesign[job.name].status = preview_failure;
tdesign[job.name].report_url = job.html_url;
if (job.conclusion === "success") {
tdesign[job.name].status = preview_success;
if (job.name === "tdesign-react") {
tdesign[job.name].report_url = tdesign_react_domain;
}
if (job.name === "tdesign-react-chat") {
tdesign[job.name].report_url = tdesign_react_chat_domain;
}
}
});
const runUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
const comment = `
# TDesign Component Site Preview [Open](${runUrl})
| Component | Preview |
| --------- | :--: |
${Object.keys(tdesign)
.map((component) => {
const preview_text = `[${tdesign[component].status}](${tdesign[component].report_url})`;
let package_name = component;
if (component === "tdesign-react-chat") {
package_name = "@tdesign-react/chat";
}
return `| ${package_name} | ${preview_text} | `;
})
.join("\n")}
<!-- AUTO_PREVIEW_HOOK -->
`;
core.setOutput('comment', comment);
- name: comment
uses: TDesignOteam/workflows/actions/maintain-one-comment@main
with:
token: ${{ secrets.TDESIGN_BOT_TOKEN }}
number: ${{needs.preview-context.outputs.pr_id}}
body: ${{ steps.report.outputs.comment }}
body-include: '<!-- AUTO_PREVIEW_HOOK -->'