最近想尝试一下自动化的东西,于是就想起了 Jenkins,但是又没啥特别合适的工作流,就准备试试把我的博客设置为自动部署。

设置的流程我就不细讲了,很简单,而且网上教程很多,下面就列举一些遇到的坑:

  1. Ubuntu 安装 jenkins 报错 gpg: no valid OpenPGP data found.

image-20201107193206777.png

1
2
3
解决方式:
使用以下命令代替
curl -L https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
  1. jenkins 无法读取 npm

    1. 安装以下插件

    image-20201107193732043.png

    1. 全局工具配置 -> NodeJS里面配置安装版本以及需要的全局包

    image-20201107194114810.png

    1. 最后在工作流配置的构建环境选择如下配置

    image-20201107194237992.png

  2. 基于 gitee 的项目提交触发 Webhook 从而自动部署

    1. 安装 gitee 插件
    2. 在工作流的构建触发器 完成以下配置(记得点击右下角的生成

    32180DEC-D759-4AA4-B291-5A034429A4F7.png

    1. gitee 对应的项目设置中生成 WebHook
      1. 填写 URL (来自于第 2 步中jenkins 提供的 URL
      2. 填写密码 (来自第 2 步中生成的密码)
    2. 添加完成,可以在目录页点击测试

    CFC6105B-3625-4D13-823A-F4839BF78E39.png

  3. Hexo 中使用 ssh 自动上传,显示认证失败

    1. 在服务器创建 ssh key
    2. 由于此 key 生成于系统账号下,Jenkins 使用的是自己的账号权限,所以我们需要把系统的 ssh key 复制过去
    1
    2
    3
    4
    cp ~/.ssh/id_rsa.pub /var/lib/jenkins/.ssh/
    cp ~/.ssh/id_rsa /var/lib/jenkins/.ssh/
    # 第一次链接需要手动把 ip 加入信任,所以可以直接把 known_hosts 文件一起复制过去
    cp ~/.ssh/known_hosts /var/lib/jenkins/.ssh/
    1. 需要把权限所有者改为 Jenkins
    1
    sudo chown jenkins /var/lib/jenkins/.ssh/*