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