Skip to content

Commit af1e3bc

Browse files
committed
[CI] Add Report Preview URLs Workflow
1 parent c4bdfa3 commit af1e3bc

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Report Preview URLs
2+
3+
on:
4+
pull_request:
5+
branches: ["develop"]
6+
paths:
7+
- 'docs/**.rst'
8+
- 'docs/**.md'
9+
10+
jobs:
11+
report-urls:
12+
name: Report Preview URLs
13+
runs-on: ubuntu-latest
14+
if: github.repository_owner == 'PaddlePaddle'
15+
16+
steps:
17+
- name: Checkout repository
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
22+
- name: Generate comment body
23+
id: generate-comment
24+
run: |
25+
chmod +x ci_scripts/report_preview_url.sh
26+
echo "comment_body=$(./ci_scripts/report_preview_url.sh ${{ github.event.pull_request.number }})" >> $GITHUB_OUTPUT
27+
28+
- name: Post or Update Comment
29+
uses: peter-evans/find-comment@v4
30+
id: fc
31+
with:
32+
issue-number: ${{ github.event.pull_request.number }}
33+
comment-author: 'github-actions[bot]'
34+
body-includes: '本次 PR 文档预览链接'
35+
36+
- name: Create or Update Comment
37+
uses: peter-evans/create-or-update-comment@v4
38+
with:
39+
comment-id: ${{ steps.fc.outputs.comment-id }}
40+
issue-number: ${{ github.event.pull_request.number }}
41+
body: ${{ steps.generate-comment.outputs.comment_body }}
42+
edit-mode: replace

ci_scripts/report_preview_url.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/bash
2+
3+
pr_id="$1"
4+
5+
if [ -z "$pr_id" ]; then
6+
echo "Error: Pull Request ID is not provided."
7+
exit 1
8+
fi
9+
10+
generate_preview_url() {
11+
local file_path="$1"
12+
local pr_id="$2"
13+
local path_no_ext="${file_path%.*}"
14+
local base_url="http://preview-pr-${pr_id}.paddle-docs-preview.paddlepaddle.org.cn/documentation/docs/zh/"
15+
local final_url="${base_url}${path_no_ext}.html"
16+
echo "$final_url"
17+
}
18+
19+
mapfile -t all_git_files < <(git diff --name-only --diff-filter=ACMR upstream/develop | sed 's#^docs/##')
20+
21+
output_lines=()
22+
23+
for file in "${all_git_files[@]}"; do
24+
if [[ "$file" == *.rst || "$file" == *.md ]]; then
25+
url=$(generate_preview_url "$file" "$pr_id")
26+
output_lines+=("- \`docs/${file}\`: [点击预览](${url})")
27+
fi
28+
done
29+
30+
if [ ${#output_lines[@]} -gt 0 ]; then
31+
cat <<-EOF
32+
<details>
33+
<summary>📚 本次 PR 文档预览链接 (点击展开)</summary>
34+
35+
以下是本次 PR 中变更文档的预览链接:
36+
37+
$(printf '%s\n' "${output_lines[@]}")
38+
39+
</details>
40+
EOF
41+
fi

0 commit comments

Comments
 (0)