Jenkins: 搭建Jenkins服务,调通Webhook链路

实现 jenkins + docker 自动化发布

1 )jenkins 下载

  • 地址:https://www.jenkins.io/download/
  • 选择合适的版本,比如 mac 上 $ brew install jenkins-lts
  • 建议使用 docker 搭建,下面用 mac上整体流程演示

2 )jenkins 管理

  • 以Mac来说
  • 启动:$ brew services start jenkins-lts
  • 重启:$ brew services restart jenkins-lts
  • 更新:$ brew upgrade jenkins-lts

3 )jenkins 访问

  • 默认是: http://localhost:8080,这里可以修改端口
  • 一开始会进入到注册页面,在注册页面填写必要的信息
    • 解锁 Jenkins
      • 输入密码,在服务器(本机)的下面的文件
      • ~/.jenkins/secrets/initialAdminPassword
      • 注:这里演示的是 Mac 环境
    • 输入管理员密码,如上密码,之后,加载中
    • 自定义 Jenkins
      • 1 )安装推荐的插件 (可以按照这个推荐的选项来)
      • 2 )选择插件来安装
      • 选择后,就是加载中
    • 还有管理员用户的初始化工作

4 )可能遇到的问题

  • 如果安装过程中出现 brew 命令的升级问题,可采用如下方法解决

  • 删除 homebrew

    shell 复制代码
    echo "$(brew --repo)"
    rm -rf /usr/local/Homebrew/
    • echo 海贼高命令输出 brew 的位置
    • rm 删除brew的位置
  • 重新安装 homebrew

5 )Jenkins 的工作流配置

5.1 全局配置

  • 系统管理 => 插件管理,安装 publish-over-ssh 插件
  • 系统管理 => 系统配置,配置环境变量、Github Server、SSH Servers
    • 1 )环境变量配置
      • Dashboard/系统管理/System
      • 在全局属性下, 键值对列表新增
        • 键: PATH
        • 值: 这里填入自己的系统变量,如在终端中输入 `PATH` 得到的系统变量的设置,填入自己主机的环境变量
          • 或者 `echo PATH` 得到的值
        • 配置这个PATH之后,你的npm等环境就可以使用了
        • 注意,PATH中无关的项可以删除
    • 2 )Github Server
      • 向下,找到 GitHub Server,这里主要是找github请求用的
      • 新增 GitHub Server
      • 主要是 凭据 这里,点击 添加 下面下拉出jenkins,点击
      • 这个秘钥是在 github 网站自己账户的 settings / Developer settings / Personal access tokens / Tokens (classic)
      • 把这里的tokens 添加到 新增的 Secret text 中,点击连接测试
      • 测试成功的话,表示可以调用 API 了
      • 另外,如果有多个github服务的话,添加多个
    • 3 )Publish over SSH
      • 当安装了这一个插件之后,就会出现这个选项
      • 关键在 SSH Servers 下面
        • 在 Hostname, 填写域名或ip地址
        • Remote Directory 中填写 远程的目录地址
        • 如果需要密码等鉴权,点击高级,填入服务器的一些秘钥

5.2 工作流任务

  • 创建任务

    • 在 jenkins 系统的 Dashboard 中,点击新建任务
      • 在最顶层输入自己起的任务名称
      • 选择构建一个自由风格的软件项目
      • 点击确定
    • 之后,进入配置,在 左侧的 General 中
      • 勾选 Gihub 项目
      • 项目 URL 填入 自己所在 github的地址
    • 进入 源码管理
      • 选择 git
      • 输入用于代码仓库 clone 的 ssh 的 git源
      • Credentials 下选择之前填入token
      • Branches to build 下指定分支
        • 一般分支是 refs/head/master
      • 源码库浏览器选择 自动
    • 进入 构建触发器
      • 勾选 GitHub hook trigger for GITScm polling
    • 进入 Build Steps
      • 增加构建步骤,下拉选择 执行 shell (也可以选择 Send files or execute commands over SSH)
      • 填入 echo $PATH
    • 点击保存, 之后就是进入这个任务的主页
    • 可以点击立即构建, 构建后就会在 构建历史中增加一条记录, 点击进入
      • 可以看到控制台输出的所有信息
      • 它会把项目下载到本地,把最新的变更也展示出来, 比如新的hashId, 新的message等信息
    • 基于此配置,就创建完成一个任务了
  • 配置任务

    • github 项目
    • 源码管理 (Git)
    • 勾选 GitHub hook trigger for GITScm polling
    • 构建环境,配置 Use secret text(s) or file(s)
    • 配置 Build Steps
      • 配置 Shell
      • 配置 SSH
  • WEB Hooks 具体配置

    • 在代码push的时候,触发一个钩子来执行特定的任务
    • 在代码仓库中,找到 Settings
    • 在 General 下找到 Code and automation 中 Actions 的 General 下
      • 勾选 Disable actions
      • 这个必须要 disable 下
    • 找到 Webhooks
      • add webhook 输入密码
      • 找到 Payload URL, 输入 url
        • 这里不能用 localhost:8080,会报错,因为一是限制了只能在本机实现, 远程访问肯定找不到
        • 可以把本地的端口号映射到线上域名
        • 可以使用 smee.io 这个应用
      • 找到 Secret, 这里的 secret 可以在本地项目中 ls -la
        • 里面会有一个 .git_token 的隐藏文件
        • 这个文件里的就是上面的 Secret
  • 搜索 smee.io, Start a new channel

    • 本地安装 smee
    • $ npm i -g smee-client
    • 启动域名映射
    • 连接成功后,就可以用这个地址了
      • 把上述 生成的 https://smee.io/sssfss2s0s 这类地址配置到 github 的 webhook 的 Payload URL 中
      • 同时,Payload URL 下面的 Content-type 中选择 application/json
      • 接着下面的 Which events would you like to trigger this webhook?
        • 选择 Just the push event.
      • 保存
  • 成功后,每次触发push, 就会在 Recent Deliveries 中添加一条 ping 的记录

  • 接下来,通过 webhook 触发的时候,触发的是通过本机构建的

  • 当在本地项目中提交并推送代码到 github 远程的时候, 可以看到 smee 终端出现了一条记录

  • 而 github 的webhook Recent Deliveries 中也出现了一条记录

  • 同时,jenkins 项目任务中也有一条新的构建任务生成

    • 1 )在 GitHub Hook Log 中 有 git push 触发的时间
    • 以及触发url的过程, 再加上后续执行所有代码的过程
    • 2 )在 修改记录 选项中,也有一条修改记录
  • 这些就是我们想要的结果, 说明这条链路已经打通了

相关推荐
Stephen·You几秒前
(已解决:基于WSL2技术)Windows11家庭中文版(win11家庭版)如何配置和使用Docker Desktop
运维·docker·容器
塑遂26 分钟前
Nginx核心功能
运维·nginx
UFIT1 小时前
postgresql日常维护
运维·服务器
爱莉希雅&&&1 小时前
shell脚本之函数详细解释及运用
linux·运维
dal118网工任子仪1 小时前
pikachu靶场 暴力破解
运维·服务器
安审若无1 小时前
实时监控服务器CPU、内存和磁盘使用率
运维·服务器
Rverdoser1 小时前
弱网服务器群到底有什么用
运维·服务器
珊珊而川2 小时前
docker常用指令
运维·docker·容器
孤寂大仙v2 小时前
【Linux笔记】——线程池项目与线程安全单例模式
linux·运维·笔记
java之迷3 小时前
jenkins使用Send build artifacts over SSH发布jar包目录配置
ssh·jenkins·jar