1
1
# Candace Savonen 2021
2
- # Updated Jan 2023
2
+ # Updated May 2024
3
3
4
4
name : Pull Request
5
5
14
14
runs-on : ubuntu-latest
15
15
steps :
16
16
- name : Checkout
17
- uses : actions/checkout@v3
17
+ uses : actions/checkout@v4
18
18
with :
19
19
fetch-depth : 0
20
20
@@ -32,20 +32,24 @@ jobs:
32
32
- name : Make the branch fresh
33
33
run : |
34
34
git config --global --add safe.directory $GITHUB_WORKSPACE
35
- git config --global user.email "[email protected] "
36
- git config --global user.name "jhudsl-robot"
35
+ git config --global user.name 'github-actions[bot]'
36
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
37
37
38
38
branch_name='preview-${{ github.event.pull_request.number }}'
39
39
echo branch doesnt exist
40
40
git checkout -b $branch_name || echo branch exists
41
- git push --set-upstream origin $branch_name
41
+ git push --set-upstream origin $branch_name || echo branch exists remotely
42
42
shell : bash
43
43
44
+
44
45
outputs :
46
+ toggle_website : " ${{ env.RENDER_WEBSITE }}"
45
47
toggle_spell_check : " ${{ env.SPELL_CHECK }}"
46
48
toggle_style_code : " ${{ env.STYLE_CODE }}"
47
49
toggle_url_check : " ${{ env.URL_CHECKER }}"
48
50
toggle_quiz_check : " ${{ env.CHECK_QUIZZES }}"
51
+ toggle_md_linter : " ${{ env.MARKDOWN_LINTER }}"
52
+ toggle_readability : " ${{ env.READABILITY_REPORT }}"
49
53
toggle_render_preview : " ${{ env.RENDER_PREVIEW }}"
50
54
rendering_docker_image : " ${{ env.RENDERING_DOCKER_IMAGE }}"
51
55
58
62
with :
59
63
check_type : spelling
60
64
error_min : 3
61
- gh_pat : secrets.GH_PAT
65
+ branch_name : ${GITHUB_HEAD_REF}
66
+ secrets :
67
+ gh_pat : ${{ secrets.GH_PAT }}
62
68
63
69
url-check :
64
70
name : Check URLs
68
74
with :
69
75
check_type : urls
70
76
error_min : 0
71
- gh_pat : secrets.GH_PAT
77
+ branch_name : ${GITHUB_HEAD_REF}
78
+ secrets :
79
+ gh_pat : ${{ secrets.GH_PAT }}
72
80
73
81
quiz-check :
74
82
name : Check quiz formatting
78
86
with :
79
87
check_type : quiz_format
80
88
error_min : 0
81
- gh_pat : secrets.GH_PAT
89
+ branch_name : ${GITHUB_HEAD_REF}
90
+ secrets :
91
+ gh_pat : ${{ secrets.GH_PAT }}
82
92
83
93
# ############################ Style the code ###################################
84
94
style-code :
@@ -91,20 +101,40 @@ jobs:
91
101
92
102
steps :
93
103
- name : Checkout files
94
- uses : actions/checkout@v3
104
+ uses : actions/checkout@v4
95
105
with :
96
106
fetch-depth : 0
97
107
98
108
- name : Run styler
99
- run : Rscript -e "styler::style_file(list.files(pattern = 'Rmd $', recursive = TRUE , full.names = TRUE));warnings()"
109
+ run : Rscript -e "styler::style_file(list.files(pattern = '(R|q)md $', recursive = FALSE , full.names = TRUE));warnings()"
100
110
101
111
- name : Commit styled files
102
112
run : |
103
113
git config --system --add safe.directory "$GITHUB_WORKSPACE"
104
- git add \*.Rmd
105
- git commit -m 'Style Rmds ' || echo "No changes to commit"
114
+ git add \*md
115
+ git commit -m 'Style *mds ' || echo "No changes to commit"
106
116
git push origin || echo "No changes to commit"
107
117
118
+ # ############################ Readability Report ###################################
119
+
120
+ readability-report :
121
+ name : Readability report
122
+ needs : yaml-check
123
+ runs-on : ubuntu-latest
124
+ if : ${{needs.yaml-check.outputs.toggle_readability == 'yes'}}
125
+
126
+ steps :
127
+ - name : Checkout repo
128
+ uses : actions/checkout@v4
129
+ with :
130
+ fetch-depth : 0
131
+
132
+ - name : Readability report
133
+ uses : Rebilly/lexi@v2
134
+ with :
135
+ github-token : ${{ secrets.GH_PAT }}
136
+ glob : ' **/*.md'
137
+
108
138
# ############################ Render Preview ###################################
109
139
110
140
render-preview :
@@ -117,16 +147,16 @@ jobs:
117
147
118
148
steps :
119
149
- name : Checkout files
120
- uses : actions/checkout@v3
150
+ uses : actions/checkout@v4
121
151
with :
122
152
fetch-depth : 0
123
153
124
154
# Set up git checkout
125
155
- name : Set up git checkout
126
156
run : |
127
157
git config --global --add safe.directory $GITHUB_WORKSPACE
128
- git config --global user.email "[email protected] "
129
- git config --global user.name "jhudsl-robot"
158
+ git config --global user.name 'github-actions[bot]'
159
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
130
160
131
161
branch_name='preview-${{ github.event.pull_request.number }}'
132
162
git fetch --all
@@ -137,23 +167,35 @@ jobs:
137
167
# Run bookdown rendering
138
168
- name : Run bookdown render
139
169
id : bookdown
170
+ if : ${{needs.yaml-check.outputs.toggle_website == 'rmd' }}
140
171
run : Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all')"
141
172
142
- # Run TOC-less version
143
- # Rendered content for Leanpub and Coursera is very similar.
144
- # This job creates a shared scaffold for both.
145
- - name : Run TOC-less version of render
146
- id : tocless
147
- run : Rscript -e "ottrpal::render_without_toc()"
173
+ # Run quarto rendering
174
+ - name : Render quarto version
175
+ id : quarto
176
+ if : ${{needs.yaml-check.outputs.toggle_website == 'quarto' }}
177
+ run : Rscript -e "quarto::quarto_render('.')"
148
178
149
179
# This checks on the steps before it and makes sure that they completed.
150
180
# If the renders didn't complete we don't want to commit the file changes
151
- - name : Check on render steps
152
- if : steps.bookdown.outcome != 'success' || steps.tocless.outcome != 'success'
181
+ - name : Check on Rmd render steps
182
+ if : ${{needs.yaml-check.outputs.toggle_website == 'rmd' }}
153
183
run : |
154
184
echo Bookdown status ${{steps.bookdown.outcome}}
155
- echo Toc-less status ${{steps.tocless.outcome}}
156
- exit 1
185
+ if [${{steps.bookdown.outcome}} != 'success']; then
186
+ exit 1
187
+ fi
188
+
189
+ - name : Check on quarto render steps
190
+ if : ${{needs.yaml-check.outputs.toggle_website == 'quarto' }}
191
+ run : |
192
+ echo Quarto status ${{steps.quarto.outcome}}
193
+ if [${{steps.quarto.outcome}} != 'success']; then
194
+ exit 1
195
+ fi
196
+
197
+ - name : Website preview for download
198
+ run : zip website-preview.zip docs/* -r
157
199
158
200
# Commit the rendered bookdown files
159
201
- name : Commit rendered bookdown files to preview branch
@@ -164,7 +206,7 @@ jobs:
164
206
echo "changes=$changes" >> $GITHUB_OUTPUT
165
207
git add . --force
166
208
git commit -m 'Render preview' || echo "No changes to commit"
167
- git pull --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours
209
+ git pull --rebase -- set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours
168
210
git push --force || echo "No changes to commit"
169
211
shell : bash
170
212
@@ -181,10 +223,10 @@ jobs:
181
223
run : |
182
224
course_name=$(head -n 1 _bookdown.yml | cut -d'"' -f 2| tr " " "-")
183
225
bookdown_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/docs/index.html")
184
- tocless_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/docs/no_toc/index.html")
185
226
docx_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/docs/$course_name.docx")
227
+ zip_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/website-preview.zip")
228
+ echo "zip_link=$zip_link" >> $GITHUB_OUTPUT
186
229
echo "bookdown_link=$bookdown_link" >> $GITHUB_OUTPUT
187
- echo "tocless_link=$tocless_link" >> $GITHUB_OUTPUT
188
230
echo "docx_link=$docx_link" >> $GITHUB_OUTPUT
189
231
echo "time=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
190
232
echo "commit_id=$GITHUB_SHA" >> $GITHUB_OUTPUT
@@ -198,11 +240,13 @@ jobs:
198
240
issue-number : ${{ github.event.pull_request.number }}
199
241
body : |
200
242
Re-rendered previews from the latest commit:
201
- - See [preview of Bookdown here](${{ steps.build-components.outputs.bookdown_link }})
202
- - See [preview of Coursera/Leanpub version here](${{ steps.build-components.outputs.tocless_link }})
203
- - Download the [preview of .docx file](${{ steps.build-components.outputs.docx_link }})
243
+ - :eyes: Quick [preview of course website here](${{ steps.build-components.outputs.bookdown_link }}) \*
244
+ - :microscope: Comprehensive [download of the course website here](${{ steps.build-components.outputs.zip_link }})
245
+ - Download the [.docx file](${{ steps.build-components.outputs.docx_link }})
204
246
205
- _Updated at ${{ steps.build-components.outputs.time }} with changes from ${{ steps.build-components.outputs.commit_id }}_
247
+ \* note not all html features will be properly displayed in the "quick preview" but it will give you a rough idea.
248
+
249
+ _Updated at ${{ steps.build-components.outputs.time }} with changes from the latest commit ${{ steps.build-components.outputs.commit_id }}_
206
250
edit-mode : replace
207
251
208
252
- name : Comment if no changes
0 commit comments