引言
我的多个网站其实都加入了我个人简历的超链接,用的是我主页中的简历,但其实这个主页的简历我更新起来也比较麻烦,因为需要频繁的修改和复制,因此也很久没有更新过了。经过这近一年多的 CI/CD 工作流,基本对 GitHub Actions 也有一些掌握了,也就有了这一套简历编译分发的工作流,正好也记录一下自己踩过的坑。
工作流
其实整个工作流也非常简单
- 将仓库里的
tex
文件编译成pdf
- 将编译好的
pdf
文件放到我个人主页的pdf
目录下并推送修改
(说起来很简单,但是踩过了坑不少,甚至花了近 6h)
前面的编译倒是没浪费多久时间,最开始是想用 latexmk-actions
,但是看了一下不太满足我的需求,而且还在更新就放弃了。最后改用了 xu-cheng/latex-action@v2
,不得不说,作者的 Actions 的配置写的非常好,基本我的所有需求都实现了,多目录多文件也是没有问题的。
踩过的坑主要就一个 鉴权
。
因为自己之前也做过跨仓库的,基本只是用了一个 actions,比如hugo-deploy
或者gh-pages-deploy
,配置一下secrets
就可以了,理所当然的,我这次也认为可以通过一个简单的 actions 搞定 push 操作,看了很多和 push
相关的 Actions,写的比较好的就是 ad-m/github-push-action@master
这个了,但是我一直报错 Error: Invalid exit code: 128
,看了作者的几个同样报错的 issue,也是没解决,Google 无果,只能再找其他方案。看了几个其他的方案,也是一样没解决我的问题。
回归伊始,其实我们只需要鉴权 + Push 操作即可,我就想能不能在 Pull 的时候鉴权,或者在 Push 的时候鉴权,想在 Push 的时候使用 https://[username]:${{ secrets.PUBLISH_KEY }}@github.com/[username]/[repo]
的形式,但是也未能如愿,在 Pull 的时候同样不行(其实后面我想了一下,这个方案好像是可行的,只需要 clone 了以后,删掉 .git
的信息,当成一个新仓库,然后 add remote url
,并且加入这个链接在进行 Push 并且添加 --force
的参数,应该是可行,不知道有没有同学试过 hhh
其实,最终的方案也是最简单的方法,就是利用 actions/checkout
,而不是 clone。官方的 checkout 提供了 ssh-key
的参数项(注意不是 token
,除非是在下方用的是 Personal Access Token
而不是 Deploy Key
)。
最终的 workflow
如下,文件版本可以看 这里
|
|
实践
这个简历目录主要有两个版本,一个中文一个英文,用到的字体文件资源都已经上传了,可以直接 clone 然后本地使用。模板主要修改自 这个项目,做了一些中文上的优化。
另外如果你有个人主页,没有 LaTeX 环境想进行云端编译,或者进行分发,可以直接 fork,再修改一下 cv_en.tex
和 cv_cn.tex
,并配置下 workflows
,下面主要介绍有此需求的运行。
以下内容包括以下声明:
主仓库
: 即需要上传 pdf 的仓库,如 beiyuouo/beiyuouo.github.io
本仓库
: 即简历tex
文件所在的仓库,如 beiyuouo/cv
- 创建简历
打开[https://github.com/beiyuouo/cv],点击右上角 fork,转到你的用户名下 fork 的仓库,clone 下来
- 修改 & 编译简历
根据你的需要修改tex
文件,以及子文件夹cv
中的tex
文件。
- 分发
生成 Deploy Key
,参考 GitHub Authentication
你可以遵循以下步骤: 1. ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
2. 将 id_rsa.pub
添加到主仓库中的 Settings -> Deploy Keys
中,名称可以随便取,但是要给予 write
的权限 3. 将 id_rsa
添加到本仓库中的 Settings -> Secrets
中,名称填写 PUBLISH_KEY
允许运行 GitHub Actions,根据需要修改 .github/workflows/latex.yml
中的内容如仓库名、分支名等,并将修改 Push 到 GitHub 仓库,等待编译运行即可。
结语
希望能够帮到你,如果这篇文章或者这个仓库侵犯到了你的任何权益,请联系bj.yan.pa@qq.com,我会尽快处理。