一刷892 #265
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Deploy | |
on: | |
push: | |
branches: | |
- master | |
jobs: | |
build-and-deploy: | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on | |
runs-on: ubuntu-latest | |
steps: | |
# https://github.com/actions/setup-node | |
- name: Setup Node.js 🕸 | |
uses: actions/setup-node@v4 | |
with: | |
# https://github.com/nvm-sh/nvm#long-term-support | |
node-version: 'lts/*' | |
# https://github.com/actions/checkout | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
# https://github.com/actions/setup-java | |
- name: Set up JDK ☕️ | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'corretto' | |
java-version: '21' | |
cache: 'maven' | |
- name: Install Graphviz 🐰 | |
run: | | |
sudo apt update -y -m | |
sudo apt install -y graphviz | |
- name: Improve Document 📝 | |
run: | | |
cd docs | |
sed -i 's/xref:\([^\.]*\).adoc\[[^:]*\]/<<\1>>/g' *.adoc | |
cd .. | |
# 处理 sed 不支持非贪婪模式 | |
# https://stackoverflow.com/a/46719361 | |
# https://stackoverflow.com/a/1103159 | |
- name: Build 🔧 | |
run: | | |
mvn clean package | |
- name: Add Reward Qrcode 💰 | |
run: | | |
cd target/docs/multipage/ | |
find . -name "*.html" | xargs -I {} sed -i "s|<div id=\"content\">|<div id=\"content\"><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>|" {} | |
- name: Add Tab Resource 🌗 | |
run: | | |
cp -R docs/assets target/docs/multipage/ | |
cd target/docs/multipage/ | |
sed -i 's/>题解/ target="_blank">题解/g' logbook-202406.html | |
mv images/* assets/images/ | |
sed -i 's/src="asciidoctor-tabs.js"/src="assets\/scripts\/asciidoctor-tabs.js"/g' *.html | |
sed -i 's/img src=".\/images/img src="assets\/images/g' *.html | |
- name: Rename Title 🤡 | |
run: | | |
cd target/docs/multipage/ | |
for file in ./*.html; | |
do | |
# https://ioflood.com/blog/bash-not-equal/ | |
if [ "${file}" != "./index.html" ]; then | |
subtitle=$(grep '<h2.*></a>' $file | awk -F'>' '{print $4}' | awk -F'<' '{print $1}') | |
echo "$file -- $subtitle" | |
if [ "${subtitle}" != "" ]; then | |
sed -i "s/ 解题笔记<\/h1>/: ${subtitle}<\/h1>/g" $file | |
sed -i "s/ 解题笔记<\/title>/: ${subtitle}<\/title>/g" $file | |
fi | |
fi | |
done | |
# https://goalsmashers.github.io/css-minification-benchmark/ | |
- name: Compress CSS 🍭 | |
run: | | |
# https://github.com/parcel-bundler/lightningcss | |
npm install -g clean-css-cli | |
# Multiple HTML page | |
cd target/docs/ | |
for f in `find . -name "*.css"`; | |
do | |
fn="${f%.*}.min.css"; | |
echo "compress $f" | |
cleancss -o $fn $f | |
rm -rf $f; | |
mv $fn $f | |
done | |
# https://github.com/privatenumber/minification-benchmarks | |
- name: Compress JS 🐢 | |
run: | | |
# https://github.com/mishoo/UglifyJS | |
npm install uglify-js -g | |
# Multiple HTML page | |
cd target/docs/ | |
for f in `find . -name "*.js"`; | |
do | |
fn="${f%.*}.min.css"; | |
echo "compress $f" | |
uglifyjs $f --compress --rename -o $fn | |
rm -rf $f; | |
mv $fn $f | |
done | |
- name: Add links for comments 🔗 | |
run: | | |
cd target/docs/ | |
for file in `find . -name "*.html"`; | |
do | |
sed -i 's/\(D瓜哥 · https:\/\/www.diguage.com\)/<a href="https:\/\/www.diguage.com" class="cmt-link" target="_blank">\1<\/a>/g' $file | |
done | |
# https://github.com/JamesIves/github-pages-deploy-action | |
- name: Deploy 🚀 | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
GITHUB_TOKEN: ${{ secrets.CI_TOKEN }} | |
branch: gh-pages # The branch the action should deploy to. | |
folder: target/docs/multipage # The folder the action should deploy. | |
single-commit: true |