4
4
docker :
5
5
- image : circleci/python:3.8
6
6
steps :
7
+ # checkout code to default ~/project
7
8
- checkout
8
9
- run :
9
10
name : install dependencies
@@ -14,53 +15,57 @@ jobs:
14
15
name : generate docs
15
16
command : mkdocs build --clean --strict --verbose
16
17
- persist_to_workspace :
17
- root : .
18
+ # the mkdocs build outputs are in ~/project/site
19
+ root : ~/project
18
20
paths : site
19
21
20
22
linkchecker :
21
23
docker :
22
24
- image : yarikoptic/linkchecker:9.4.0.anchorfix1-1
23
25
steps :
24
26
- attach_workspace :
25
- at : ~/build
27
+ # mkdocs build outputs will be in ~/project/site
28
+ at : ~/project
26
29
- run :
27
30
name : check links
28
31
command : |
29
32
if (! git log -1 --pretty=%b | grep REL:) ; then
30
- chmod a+rX -R ~
31
- linkchecker -t 1 ~/build /site/
32
- # check external separately by pointing to all *html so no
33
- # failures for local file:/// -- yoh found no better way,
34
- linkchecker -t 1 --check-extern \
35
- --ignore-url 'file:///.*' \
36
- --ignore-url https://fonts.gstatic.com \
37
- --ignore-url "https://github.com/bids-standard/bids-specification/(pull|tree)/.*" \
38
- --ignore-url "https://github.com/[^/]*" \
39
- ~/build /site/*html ~/build /site/*/*.html
33
+ chmod a+rX -R ~
34
+ linkchecker -t 1 ~/project /site/
35
+ # check external separately by pointing to all *html so no
36
+ # failures for local file:/// -- yoh found no better way,
37
+ linkchecker -t 1 --check-extern \
38
+ --ignore-url 'file:///.*' \
39
+ --ignore-url https://fonts.gstatic.com \
40
+ --ignore-url "https://github.com/bids-standard/bids-specification/(pull|tree)/.*" \
41
+ --ignore-url "https://github.com/[^/]*" \
42
+ ~/project /site/*html ~/project /site/*/*.html
40
43
else
41
- echo "Release PR - do nothing"
44
+ echo "Release PR - do nothing"
42
45
fi
43
46
44
47
build_docs_pdf :
45
48
working_directory : ~/bids-specification/pdf_build_src
46
49
docker :
47
50
- image : danteev/texlive:latest
48
51
steps :
49
- - checkout :
50
- path : ~/bids-specification
52
+ # checkout code to default ~/project
53
+ - checkout
51
54
- run :
52
55
name : install dependencies
53
56
command : |
54
57
python -m pip install --upgrade pip
55
- pip install -r .. /requirements.txt
58
+ pip install -r ~/project /requirements.txt
56
59
- run :
57
60
name : install font that works with unicode emojis
58
61
command : apt-get update && apt-get install -y fonts-symbola
59
62
- run :
60
63
name : generate pdf version docs
61
- command : bash build_pdf.sh
64
+ command : |
65
+ cd ~/project/pdf_build_src
66
+ bash build_pdf.sh
62
67
- store_artifacts :
63
- path : bids-spec.pdf
68
+ path : ~/project/pdf_build_src/ bids-spec.pdf
64
69
65
70
# Auto changelog collector
66
71
github-changelog-generator :
@@ -69,84 +74,94 @@ jobs:
69
74
steps :
70
75
- setup_remote_docker :
71
76
version : 18.06.0-ce
77
+ # checkout code to default ~/project
72
78
- checkout
73
79
- run :
74
80
name : Build changelog
75
- working_directory : ~/build
81
+ # $CHANGE_TOKEN is generated via the GitHub web UI, and then securely stored within CircleCI web UI
76
82
command : |
83
+ mkdir ~/changelog_build
84
+ git status
77
85
if (git log -1 --pretty=%s | grep Merge*) && (! git log -1 --pretty=%b | grep REL:) ; then
78
86
github_changelog_generator \
79
87
--user bids-standard \
80
88
--project bids-specification \
81
89
--token ${CHANGE_TOKEN} \
82
- --output ~/build /CHANGES.md \
83
- --base ~/build /src/pregh-changes.md \
90
+ --output ~/changelog_build /CHANGES.md \
91
+ --base ~/project /src/pregh-changes.md \
84
92
--header-label "# Changelog" \
85
93
--no-issues \
86
94
--no-issues-wo-labels \
87
95
--no-filter-by-milestone \
88
96
--no-compare-link \
89
97
--pr-label "" \
90
98
--release-branch master
91
- cat ~/build/CHANGES.md
92
- mv ~/build/CHANGES.md ~/build/src/CHANGES.md
99
+ cat ~/changelog_build/CHANGES.md
93
100
else
94
101
echo "Commit or Release, do nothing"
95
102
fi
96
103
- persist_to_workspace :
97
- root : .
98
- paths : src
104
+ # raw generated changelog in ~/changelog_build/CHANGES.md
105
+ root : ~/.
106
+ paths : changelog_build
99
107
100
108
# Run remark on the auto generated changes.md file
101
109
remark :
102
110
docker :
103
111
- image : node:latest
104
112
steps :
113
+ # checkout code to default ~/project
105
114
- checkout
106
115
- attach_workspace :
107
- at : ~/build
116
+ # the freshly built CHANGES.md will be in ~/changelog_build/CHANGES.md
117
+ at : ~/.
108
118
- run :
109
119
name : install remark and extensions
110
120
command : npm install `cat npm-requirements.txt`
111
121
- run :
112
122
name : remark on autogenerated CHANGES.md
123
+ # format changelog, then use sed to change * to -, then lint changelog
113
124
command : |
114
- mkdir ~/project/src/tmp
125
+ git status
115
126
if (git log -1 --pretty=%s | grep Merge*) && (! git log -1 --pretty=%b | grep REL:) ; then
116
- cat ~/build/src/CHANGES.md
117
- cp ~/build/src/CHANGES.md ~/project/src/tmp/CHANGES.md
118
- npx remark ~/project/src/tmp/CHANGES.md --frail --rc-path .remarkrc
127
+ head -n 100 ~/changelog_build/CHANGES.md
128
+ npx remark-cli ~/changelog_build/CHANGES.md --rc-path ~/project/.remarkrc --output ~/changelog_build/CHANGES.md
129
+ head -n 100 ~/changelog_build/CHANGES.md
130
+ sed -i 's/* /- /' ~/changelog_build/CHANGES.md
131
+ head -n 100 ~/changelog_build/CHANGES.md
132
+ npx remark-cli ~/changelog_build/CHANGES.md --frail --rc-path ~/project/.remarkrc
119
133
else
120
134
echo "Commit or Release, do nothing"
121
- touch ~/project/src/tmp/empty.txt
122
135
fi
123
136
- persist_to_workspace :
124
- root : ~/project/src
125
- paths : tmp
137
+ # fixed+linted changelog in ~/changelog_build/CHANGES.md
138
+ root : ~/.
139
+ paths : changelog_build
126
140
127
141
# Push built changelog to repo
128
142
Changelog-bot :
129
- working_directory : ~/build
130
143
docker :
131
144
- image : circleci/openjdk:8-jdk
132
145
steps :
133
146
- setup_remote_docker :
134
147
version : 17.11.0-ce
148
+ # checkout code to default ~/project
135
149
- checkout
136
150
- attach_workspace :
137
- at : ~/build
151
+ # fixed+linted changelog in ~/changelog_build/CHANGES.md
152
+ at : ~/.
138
153
- deploy :
139
154
name : Changelog deployment
140
- working_directory : ~/build
155
+ # $CHANGE_TOKEN is generated via the GitHub web UI, and then securely stored within CircleCI web UI
141
156
command : |
142
157
if (git log -1 --pretty=%s | grep Merge*) && (! git log -1 --pretty=%b | grep REL:) ; then
143
- mv ~/build/tmp/ CHANGES.md ~/build /src/CHANGES.md
158
+ mv ~/changelog_build/ CHANGES.md ~/project /src/CHANGES.md
144
159
merge_message=$(git log -1 | grep Merge | grep "pull")
145
160
PR_number=$(echo $merge_message | cut -d ' ' -f 4)
146
161
git config credential.helper 'cache --timeout=120'
147
162
git config user.email "[email protected] "
148
163
git config user.name "bids-maintenance"
149
- git add ~/build /src/CHANGES.md
164
+ git add ~/project /src/CHANGES.md
150
165
git commit -m "[DOC] Auto-generate changelog entry for PR ${PR_number}"
151
166
git push https://${CHANGE_TOKEN}@github.com/bids-standard/bids-specification.git master
152
167
else
0 commit comments