1. 使用技术
- Hexo
- Coding CI
- Github
2. 背景
好久没更新内容了,最近打算重新写点东西,然后研究了一下文章发布流程,原来写博客需要本地有hexo环境,编写文章之后编译、发布到Github pages。
看了一下现在比较流行的方案,大都依托于各大厂商提供的CI工具,我博客原来的源码就放在Coding上(起初Github还没有私有仓库)于是研究了一下使用Coding 的CI工具
3. 基础镜像
因为流水线构建会启动一个环境镜像在内部拉取代码并进行构建,所以我先尝试了使用Coding自带的Node镜像环境添加构建命令安装Hexo并执行构建
反复修改构建命令后最终可以构建完成了,但最后在执行hexo d
发布时失败了
Hexo config配置中配置的发布github仓库地址使用ssh方式,我将对应的id_rsa放到代码仓库里再构建命令中将他copy到~/.ssh
目录下,修改文件权限后发布依然失败。
考虑到每次构建过程中安装hexo也浪费时间,干脆直接自己打了个镜像在里面弄好权限及hexo环境当做基础镜像使用
基础镜像基于nodejs:14 运行后进入容器,执行如下命令
1 |
|
生成rsa秘钥或使用现有的id_rsa写入对应的~/.ssh
目录下(如果是新生成的记得在github上添加ssh公钥)
找一个github上私有仓库地址,复制ssh clone链接,执行git clone **
触发git认证,输入yes
会自动记住host 后续再执行拉取和推送会直接走ssh认证
准备好后退出容器,使用docker ps -a
找到刚才的容器对应的 CONTAIN ID ,使用如下命令保存为镜像
1 |
|
注意:这个镜像中因为有ssh认证可以拉取和推送你的github仓库,千万不要发布到外网上。
先将容器保存为镜像,然后到Coding上博客代码项目下制品管理-制品仓库-创建制品仓库(注意选择项目内使用),再根据制品库使用帮助,使用docker login
认证Coding的制品库
再根据提示使用docker tag node-14-hexo ***.pkg.coding.net/**/**/node-14-hexo
**部分根据自己的制品地址替换即可。
然后将镜像推送到自己项目的制品仓库docker push ***.pkg.coding.net/**/**/node-14-hexo
4. 创建持续集成(CI)
基础镜像弄好后就可以创建流水线了,到Coding 对应的代码仓库下,左侧菜单持续集成-构建计划-创建构建计划
- 选择自定义构建过程
- 输入流水线名称
- 选择博客对应的代码库,点击确定
- 流程配置中选中开始节点,选择自定义构建环境
- 镜像来源选择项目内制品库
- 选择对应的制品仓库和镜像名称
- 自定义构建过程中-点“+”号添加执行shell脚本,输入脚本内容
1
2
3
4
5node -v
npm install --force
hexo v
hexo g
hexo d - 保存
至此流水线就创建好了,默认的触发规则就是有代码更新时触发流水线,当然可以先手动触发测试一下流水线执行是否正常,如果有报错可以查看构建日志排查
本文链接: http://blog.jisuye.com/2023/11/13/test_ci/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!