惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
J
Java Code Geeks
S
SegmentFault 最新的问题
L
LangChain Blog
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
H
Help Net Security
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
N
Netflix TechBlog - Medium
A
About on SuperTechFans
博客园 - 叶小钗
美团技术团队
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 Go语言中“糟糕”的日期时间格式化设计 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 如何不关机重启WSL2恢复虚拟服务 在Windows上安装Podman容器平台做虚拟化 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅
TravisCI 远程部署站点服务
凡梦星尘 · 2022-03-22 · via 热爱生活与梦想

背景

之前一直都是将自己的博客站点托管在 Github Pages 服务上面,但无奈国内的访问速度确实是让人堪忧,时不时还会出现打不开现象,确实影响到访问查看的体验。另外近期腾讯云的 ICP 备案又开始各种检查“臊”操作,一旦发现域名解析 IP 地址不是其云服务的话就会终止 ICP 备案,那后果可想而知肯定是域名会被终止访问引起一连串的不可预知问题(毕竟重走 ICP 审批流程也是非常的烦恼)。于是便只好订阅了腾讯云的轻服务产品,把站点静态内容托管在其上面。

问题

于是乎便又重新搭建新环境的各种折腾,先是安装各类基础软件,如: HugoGitNginx等等,此处的细节就不在展开了,大家在网上都能找到相关环境的指导文章。 然后便考虑如何在这个环境下根据文章发布时的推送,自动生成新的静态站点内容。后来还是选择了 Travis CI 平台来实现自动化部署(可参考之前写的教程 Travis CI自动部署教程 )。

顺便说下,个人使用下来觉得 Travis CIGithub Action 要更加稳定些,至少在个人仓库的使用中。

基本流程是如下:

Use TravisCI Remote Deploy Site

其中在使用 SSH 命令远程执行操作时会涉及到私钥的加密保护,之前一直接使用 Windows 生成加密文件操作都没有问题,不知道为何此次使用 Travis CI 的新版本后,生成的加密文件在解密过程中一直出现如下的错误:

问题 1:

1
2
3
4
$ openssl aes-256-cbc -K $encrypted_39c1b18630f7_key -iv $encrypted_39c1b18630f7_iv -in .travis/id_rsa.enc -out id_rsa -d
iv undefined
The command "openssl aes-256-cbc -K $encrypted_39c1b18630f7_key -iv $encrypted_39c1b18630f7_iv -in .travis/id_rsa.enc -out id_rsa -d" failed and exited with 1 during .
Your build has been stopped.

另外在腾讯云的服务器上执行 git pull 命令时,也会出现如下的告警及错误信息:

问题 2:

1
2
3
$ tail -f ~/deploy.log
warning: 不建议在没有为偏离分支指定合并策略时执行 pull 操作。
/home/lighthouse/deploy.sh: hugo: 未找到命令

方案

对于问题 1 找了很多的官方文档也并没发现操作流程和步骤存在问题,于是便尝试了下在线发起工单支持,没想到官方的答复还是很快速的,经过一讨论和验证官方也觉得是 Windows 平台的加密有问题,建议切换到 Linux 平台下使用。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Hey there,

Thank you for your reply.

It seems you are using a Windows machine to generate an SSH key and encrypt the file. Since decryption happens in Linux VM which I believe could be the reason for the bad decrypt error for the build. Would it be feasible for you to use a Linux machine and follow the steps I mentioned earlier, i.e.

cd into repository
Run travis login --pro --github-token GITHUB_TOKEN
Run ssh-keygen -t rsa -b 4096 -C "TravisCIKey"
Run travis encrypt-file --pro ~/.ssh/test_key --add
Run git add . && git commit -m "encrypt-file" && git push

Please let us know if you run into any issues.

Best,
--
Qasim

Your Friends @Travis CI

Test and Deploy with Confidence.
www.travis-ci.com

然后又重新在 Linux 平台下搭建个 Travis CI 命令行的环境,参考上面的给出的步骤重新生成私钥并加密上传,结果还是真的就没有问题。

顺便提下,在 Linux 平台下搭建 Travis CI 命令行环境比 Windows 平台简单多,只需要一条 yarn 命令敲下回车键就好。

而对于问题2的警告原图,主要是 Git 的合并策略所引发的,原因是本地有做过修改需要进行拉取和合并,建议可以使用 git pull --no-rebase 命令避免冲突的调整。而另外一个错误的原因是 Hugo 安装时只是添加到 PATH 变量中,但对于远程执行命令调用来说,默认是调用 .bashrc 文件中的环境变量,于是只要在执行分布命令用户的 .bashrc 文件中添加 Hugo 的可执行命令路径即可。

总结

此次遇到的问题都是和服务器环境有关系,建议在涉像文章提到的密钥生成及管理,第三方命令(主要是不提供安装包形式),环境变量等操作,有可能的话还是在 Linux 或 macOS 系统下进行调试,能够避免不必要问题的发生,节省更多时间出来。