1
+ name : Add Netlify Links To Changed Pages
2
+ on :
3
+ workflow_call :
4
+ pull_request_target :
5
+ jobs :
6
+ get-pr-changes :
7
+ name : Get Changed Files & Update PR Description
8
+ runs-on : ubuntu-latest
9
+ permissions :
10
+ issues : write
11
+ contents : write
12
+ pull-requests : write
13
+ repository-projects : write
14
+ steps :
15
+ - uses : actions/checkout@v4
16
+ - name : Get Changed Files
17
+ id : changed-files
18
+ # pin to a specific commit to ensure stability
19
+ uses : tj-actions/changed-files@c65cd883420fd2eb864698a825fc4162dd94482c
20
+ with :
21
+ separator : " ,"
22
+ files : source/**
23
+ - name : Build Netlify Links for Changed Pages
24
+ id : build_page_links
25
+ env :
26
+ CHANGED_FILES : ${{ steps.changed-files.outputs.all_changed_files }}
27
+ run : |
28
+ new_links=""
29
+ base_link='https://deploy-preview-${{ github.event.number }}--docs-php-library.netlify.app'
30
+ files=$(echo "$CHANGED_FILES" | tr "," "\n")
31
+ for file in $files; do
32
+ echo "processing ${file}"
33
+ if (! grep -s "includes/" <<< "$file") &&
34
+ (! grep -s "images/" <<< "$file") &&
35
+ (! grep -s "examples/" <<< "$file"); then
36
+ file="${file#source}"
37
+ file="${file%.txt}"
38
+ filenoslash="${file:1}"
39
+ echo "${base_link}${file}"
40
+ new_links+="<li><a href=${base_link}${file}>${filenoslash}</a></li>"
41
+ else
42
+ echo "(file skipped)"
43
+ fi
44
+ done
45
+ if [ "$new_links" == "" ]; then
46
+ new_links="No pages to preview"
47
+ fi
48
+ echo "Final new_links string: "
49
+ echo "${new_links}"
50
+ echo "staging_links=${new_links}" >> "$GITHUB_OUTPUT"
51
+ - name : Update the PR Description
52
+ uses : MongoCaleb/pr-description-action@master
53
+ with :
54
+ regex : " <!-- start insert-links -->.*<!-- end insert-links -->"
55
+ appendContentOnMatchOnly : true
56
+ regexFlags : is
57
+ content : " <!-- start insert-links -->\n ${{ steps.build_page_links.outputs.staging_links }}\n <!-- end insert-links -->"
58
+ token : ${{ secrets.GITHUB_TOKEN }}
0 commit comments