Skip to content

Commit ba818cb

Browse files
committed
优化构建脚本
1 parent 091b5b1 commit ba818cb

File tree

1 file changed

+167
-22
lines changed

1 file changed

+167
-22
lines changed

.github/workflows/ci.yml

Lines changed: 167 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
node-version: 'lts/*'
1717

1818
# https://github.com/actions/checkout
19-
- name: Checkout
19+
- name: Checkout 🛎️
2020
uses: actions/checkout@v4
2121
with:
2222
persist-credentials: false
@@ -25,14 +25,136 @@ jobs:
2525
- name: Set up JDK ☕️
2626
uses: actions/setup-java@v4
2727
with:
28-
distribution: 'corretto'
2928
java-version: '21'
29+
distribution: 'corretto'
3030
cache: 'maven'
3131

32-
- name: Install Graphviz 🐰
32+
# https://github.com/marketplace/actions/docker-setup-docker
33+
- name: Setup Docker 🐳
34+
uses: docker/setup-docker-action@v4
35+
36+
- name: Add Watermark to Images 🎖
3337
run: |
34-
sudo apt update -y -m
35-
sudo apt install -y graphviz
38+
docker pull dpokidov/imagemagick
39+
40+
cd docs/assets
41+
wget https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Semibold.otf
42+
BASEDIR=$( pwd )/
43+
44+
# 异步加水印
45+
# JPG
46+
echo " "
47+
echo -e "\n\n$(date +%T) start to add watermark to JPG"
48+
find . -type f -name "*.jpg" | grep -v "wx-jikerizhi-qrcode.jpg\|wx-jikerizhi.jpg\|wxpay.jpg" | sed "s/.jpg$//g" | xargs -I {} docker run --rm -v ${BASEDIR}:/imgs dpokidov/imagemagick -compress JPEG2000 -strip -thumbnail "1200x>" -quality 75 -font /imgs/SourceCodePro-Semibold.otf -pointsize 30 -gravity southeast -fill "#DE282A" -draw 'text 15,18 "https://www.diguage.com"' /imgs/{}.jpg /imgs/{}-mark.jpg 1>/dev/null 2>&1 &
49+
50+
wait
51+
echo -e "$(date +%T) finish adding watermark to JPG...\n\n"
52+
echo " "
53+
find . -type f -name "*.jpg" | xargs ls -l -h
54+
echo " "
55+
echo -e "\n\n$(date +%T) --start to replace JPG----------------------"
56+
for f in `find . -type f -name "*-mark.jpg"`;
57+
do
58+
name=`echo $f | sed "s/-mark.jpg//g"`
59+
echo "replace ${f} to ${name}.jpeg"
60+
rm -rf "${name}.jpg"
61+
mv "${f}" "${name}.jpg"
62+
done
63+
echo -e "$(date +%T) --finish replacing JPG----------------------\n\n"
64+
echo " "
65+
find . -type f -name "*.jpg" | xargs ls -l -h
66+
67+
# JPEG
68+
echo " "
69+
echo -e "\n\n$(date +%T) start to add watermark to JPEG"
70+
find . -type f -name "*.jpeg" | sed "s/.jpeg$//g" | xargs -I {} docker run --rm -v ${BASEDIR}:/imgs dpokidov/imagemagick -compress JPEG2000 -strip -thumbnail "1200x>" -quality 75 -font /imgs/SourceCodePro-Semibold.otf -pointsize 30 -gravity southeast -fill "#DE282A" -draw 'text 15,18 "https://www.diguage.com"' /imgs/{}.jpeg /imgs/{}-mark.jpeg 1>/dev/null 2>&1 &
71+
72+
wait
73+
echo -e "$(date +%T) finish adding watermark to JPEG...\n\n"
74+
echo " "
75+
find . -type f -name "*.jpeg" | xargs ls -l -h
76+
echo " "
77+
echo -e "\n\n$(date +%T) --start to replace JPEG----------------------"
78+
for f in `find . -type f -name "*-mark.jpeg"`;
79+
do
80+
name=`echo $f | sed "s/-mark.jpeg//g"`
81+
echo "replace ${f} to ${name}.jpeg"
82+
rm -rf "${name}.jpeg"
83+
mv "${f}" "${name}.jpeg"
84+
done
85+
echo -e "$(date +%T) --finish replacing JPEG----------------------\n\n"
86+
echo " "
87+
find . -type f -name "*.jpeg" | xargs ls -l -h
88+
89+
# # PNG
90+
# echo " "
91+
# echo -e "\n\n$(date +%T) start to add watermark to PNG"
92+
# find . -type f -name "*.png" | grep -v "alipay.png\|wxpay.png" | sed "s/.png$//g" | xargs -I {} docker run --rm -v ${BASEDIR}:/imgs dpokidov/imagemagick -strip -resize 1200x -define png:compression-level=9 -define png:exclude-chunk=all -define png:filter-type=1 -font /imgs/SourceCodePro-Semibold.otf -pointsize 30 -gravity southeast -fill "#DE282A" -draw 'text 15,18 "https://www.diguage.com"' /imgs/{}.png /imgs/{}-mark.png 1>/dev/null 2>&1 &
93+
#
94+
# wait
95+
# echo -e "$(date +%T) finish adding watermark to PNG...\n\n"
96+
# echo " "
97+
# find . -type f -name "*.png" | xargs ls -l -h
98+
# echo " "
99+
# echo -e "\n\n$(date +%T) --start to replace PNG----------------------"
100+
# for f in `find . -type f -name "*-mark.png"`;
101+
# do
102+
# name=`echo $f | sed "s/-mark.png//g"`
103+
# echo "replace ${f} to ${name}.png"
104+
# rm -rf "${name}.png"
105+
# mv "${f}" "${name}.png"
106+
# done
107+
# echo -e "$(date +%T) --finish replacing PNG----------------------\n\n"
108+
# echo " "
109+
# find . -type f -name "*.png" | xargs ls -l -h
110+
111+
- name: Install font 🎃
112+
run: |
113+
mkdir $HOME/.fonts
114+
cd $HOME/.fonts
115+
declare -a fonts=('https://github.com/diguage/open-fonts/releases/download/latest/NotoEmoji-Regular.ttf' \
116+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Regular.otf' \
117+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Semibold.otf' \
118+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-It.otf' \
119+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Bold.otf' \
120+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-BoldIt.otf' \
121+
'https://github.com/diguage/open-fonts/releases/download/latest/JetBrainsMono-Regular.ttf' \
122+
'https://github.com/diguage/open-fonts/releases/download/latest/JetBrainsMono-SemiBold.ttf' \
123+
'https://github.com/diguage/open-fonts/releases/download/latest/JetBrainsMono-Bold.ttf' \
124+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-Regular.otf' \
125+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-Bold.otf' \
126+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-Medium.otf' \
127+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-SemiBold.otf' \
128+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Regular.otf' \
129+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Bold.otf' \
130+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Medium.otf' \
131+
'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Heavy.otf' \
132+
'https://github.com/diguage/open-fonts/releases/download/latest/Symbola.ttf')
133+
echo -e "$(date +%T) start to download fonts...\n"
134+
for font in "${fonts[@]}"
135+
do
136+
name=`echo $font | awk -F'/' '{print $NF}'`
137+
if [ -f "$name" ]; then
138+
echo "$name exists."
139+
else
140+
wget -c --tries=5 --retry-connrefused --waitretry=5 --timeout=10 $font 1>/dev/null 2>&1 &
141+
fi
142+
done
143+
144+
wait
145+
echo -e "$(date +%T) finish downloading fonts...\n"
146+
ls -lh
147+
148+
# # 使用 Kroki 处理,就不需要配置字体了
149+
# - name: Check font 🔍
150+
# run: |
151+
# echo -e "[seqdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" > $HOME/.blockdiagrc
152+
# echo -e "\n[blockdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" >> $HOME/.blockdiagrc
153+
# echo -e "\n[actdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" >> $HOME/.blockdiagrc
154+
# echo -e "\n[nwdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" >> $HOME/.blockdiagrc
155+
# ls -lh $HOME/.fonts
156+
# fc-list
157+
# cat $HOME/.blockdiagrc
36158

37159
- name: Improve Document 📝
38160
run: |
@@ -43,23 +165,42 @@ jobs:
43165
# https://stackoverflow.com/a/46719361
44166
# https://stackoverflow.com/a/1103159
45167

46-
- name: Build 🔧
47-
run: |
48-
mvn clean package
168+
- name: Build 🏗
169+
run: mvn clean package
49170

50171
- name: Add Reward Qrcode 💰
51172
run: |
52173
cd target/docs/multipage/
53174
find . -name "*.html" | grep -v 'preface.html' | xargs -I {} sed -i 's@\(<div id="content">\)@\1<div class="sect2"><h3 id="_友情支持">友情支持</h3><div class="paragraph"><p>如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜</p></div><table class="tableblock frame-none grid-all stretch"><colgroup><col style="width: 50%;"><col style="width: 50%;"></colgroup><tbody><tr><td class="tableblock halign-center valign-top"><p class="tableblock"><span class="image"><img src="./images/alipay.png" alt="支付宝" width="85%" title="支付宝"></span></p></td><td class="tableblock halign-center valign-top"><p class="tableblock"><span class="image"><img src="./images/wxpay.jpg" alt="微信" width="85%" title="微信"></span></p></td></tr></tbody></table><div class="paragraph"><p>有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。</p></div><div class="paragraph"><p><span class="image"><img src="./images/wx-jikerizhi.png" alt="wx jikerizhi" width="98%"></span></p></div><div class="admonitionblock tip"><table><tbody><tr><td class="icon"><i class="fa icon-tip" title="Tip"></i></td><td class="content"><strong>公众号的微信号是: <code>jikerizhi</code></strong>。<em>因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。</em></td></tr></tbody></table></div></div>@' {}
54175
55-
# - name: Add Tab Resource 🌗
56-
# run: |
57-
# cp -R docs/assets target/docs/multipage/
58-
# cd target/docs/multipage/
59-
# sed -i 's@>题解@ target="_blank">题解@g' logbook-*.html
60-
# mv images/* assets/images/
61-
# sed -i 's@src="asciidoctor-tabs.js"@src="assets/scripts/asciidoctor-tabs.js"@g' *.html
62-
# sed -i 's@img src="./images@img src="assets/images@g' *.html
176+
- name: Add Giscus 🗣️
177+
run: |
178+
cd target/docs/multipage/
179+
# 📢 注意,有几个地方需要修改:
180+
# 1. 仓库地址
181+
# 2. 仓库 ID
182+
# 3. 数据分类名称
183+
# 4. 数据分类 ID
184+
dataRepo='diguage/jdk-source-analysis'
185+
dataRepoId='MDEwOlJlcG9zaXRvcnk3MjM5MzE5Mw=='
186+
dataCategory='General'
187+
dataCategoryId='MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDM2MDQx'
188+
# 📢 注意,现在是提取文件名作为 Giscus 参数!请根据需要自定义 Giscus 参数。
189+
for file in `find . -name "*.html"`;
190+
do
191+
#fileBaseName=$(basename -- "$file")
192+
#fileName="${fileBaseName%.*}"
193+
fileName=$(echo $file | sed 's|^\./||; s/\.html$//')
194+
echo "$file → $fileName"
195+
sed -i "s@\(<title>\)@<meta property=\"og:title\" content=\"${fileName}\">\n\1@" $file
196+
sed -i -z "s@\(</div>\n<div id=\"footer\">\)@<script src=\"https://giscus.app/client.js\" data-repo=\"${dataRepo}\" data-repo-id=\"${dataRepoId}\" data-category=\"${dataCategory}\" data-category-id=\"${dataCategoryId}\" data-mapping=\"og:title\" data-strict=\"0\" data-reactions-enabled=\"1\" data-emit-metadata=\"1\" data-input-position=\"top\" data-theme=\"preferred_color_scheme\" data-lang=\"zh-CN\" data-loading=\"lazy\" crossorigin=\"anonymous\" async></script>\n\1@" $file
197+
done
198+
199+
- name: Add Tab Resource 🌗
200+
run: |
201+
cp -R docs/assets target/docs/multipage/
202+
cd target/docs/
203+
find . -name "*.html" | xargs -I {} sed -i 's@src="asciidoctor-tabs.js"@src="assets/scripts/asciidoctor-tabs.js"@g' {}
63204
64205
- name: Add Scroll TOC JS 🐌
65206
run: |
@@ -85,8 +226,8 @@ jobs:
85226
if [ "${subtitle}" != "" ]; then
86227
# 将变量中的 & 替换为 \&
87228
escaped_title=$(sed 's/&/\\&/g' <<< "${subtitle}")
88-
sed -i "s@ 解题笔记</h1>@: ${escaped_title}</h1>@g" $file
89-
sed -i "s@ 解题笔记</title>@: ${escaped_title}</title>@g" $file
229+
sed -i "s@</h1>@: ${escaped_title}</h1>@g" $file
230+
sed -i "s@</title>@: ${escaped_title}</title>@g" $file
90231
fi
91232
fi
92233
done
@@ -95,15 +236,19 @@ jobs:
95236
- name: Compress CSS 🍭
96237
run: |
97238
# https://github.com/parcel-bundler/lightningcss
98-
npm install -g clean-css-cli
239+
npm install -g lightningcss-cli
99240
# Multiple HTML page
100241
cd target/docs/
101242
for f in `find . -name "*.css"`;
102243
do
244+
if [[ $f == *asciidoctor.css ]]; then
245+
# TODO 这里需要添加的 code 选择器可能更多
246+
echo -e '\na{text-decoration:none;}p>code,strong>code{color: #d14 !important;background-color: #f5f5f5 !important;border: 1px solid #e1e1e8;}' >> $f
247+
fi
103248
fn="${f%.*}.min.css";
104249
echo "compress $f"
105-
cleancss -o $fn $f
106-
rm -rf $f;
250+
lightningcss --minify --error-recovery --output-file $fn $f
251+
rm -rf $f
107252
mv $fn $f
108253
done
109254
@@ -118,7 +263,7 @@ jobs:
118263
do
119264
fn="${f%.*}.min.css";
120265
echo "compress $f"
121-
uglifyjs $f --compress --rename -o $fn
266+
uglifyjs $f --compress --rename -o $fn
122267
rm -rf $f;
123268
mv $fn $f
124269
done

0 commit comments

Comments
 (0)