之前一直对github的sign commit以及action有所耳闻,打算借这次部署博客的机会把两者都安排一下。
Sign Commit
签名(Sign)代表着身份认证,那么我们需要PGP Key来作为我们的身份证明。
生成PGP Key
这部分参考了现成的科普博客1234,此处只记录一些常用指令: 记得生成签名用的子公密钥对,并收好主公密钥对,后者只用来签发子公密钥对。
gpg --full-gen-key --expert # 根据自己的需要生成gpg主密钥及加密/签名用的子密钥
gpg --edit-key # 你生成的主密钥姓名或key id,退出时记得save
gpg --gen-revoke -ao revoke.pgp # 以防你丢失密钥控制权,记得生成撤销证书
gpg --export-secret-keys # key id后加上“!”只导出主密钥
gpg --export-secret-subkeys # 备份子密钥(平时使用)
# ~/.gnupg/gpg.conf # 可以让你在`gpg -K`和`gpg -k`时少打几个字符
keyid-format long
with-fingerprint
签名
跟着Signing commits和Linux Foundation的GPG说明的指示很容易就完成了。值得注意的是说明中的gpg2
在现在大抵已等价于gpg
了(至少Archlinux如此),具体可ls -lah | grep gpg
自行检验。同样地,这里只记录一些关键指令:
git config --global user.signingkey <GPG-KEY-ID>! # 只使用子密钥
git config --global commit.gpgsign true
gpg -a --export <GPG-KEY-ID>! # 只导出子公钥
[ -f ~/.bashrc ] && echo -e '\nexport GPG_TTY=$(tty)' >> ~/.bashrc # 确保远程登录你带GUI的主机时不会因无法弹出输入密码而报错
值得一提的是,如果你和我一样使用子公密钥对进行签名,上述两处加备注的行最后记得添加!
,表示只使用子公密钥对信息(不影响你的指纹信息)。
Actions
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。5
这部分Github官方的说明给的很详细了,照着quick start走一遍就差不多知道该如何写自己的action配置了。
在我的自动化部署配置中,我使用了easingthemes/ssh-deploy(自建服务器)而不是actions-gh-pages(GitHub Pages)来部署我的博客,前者需要对linux(也可以是其他)服务器有一定的了解,【一种建议是】会使用nginx和acme.sh实现https网页的搭建;后者可以参考GitHub的官方说明。
关于这个博客的其他细节
本博客基于Hugo和PaperMod搭建。部署过程大量参考了xen0n的配置。 其中有少量文章使用到了静态图片,我自己部署了lsky-pro作为博客专用图床。
此外,由于使用了大厂的云服务器,暂时不考虑CDN。(又不是不能用
如果能帮到你构建自己的博客,那就再好不过了。