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

2024-03-17 14:36

本文主要是介绍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
    echo "$(brew --repo)"
    rm -rf /usr/local/Homebrew/
    
    • echo 海贼高命令输出 brew 的位置
    • rm 删除brew的位置
  • 重新安装 homebrew
    • $ /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"

5 )Jenkins 的工作流配置


5.1 全局配置

  • 系统管理 => 插件管理,安装 publish-over-ssh 插件
    • 插件地址: https://plugins.jenkins.io/publish-over-ssh
    • 用于将本地文件上传到 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
    • 启动域名映射
      • smee --url https://smee.io/6FxJjA0nZoOQKXY --path /github-webhook/ --port 8080
        • webhook 在安装完github插件后会自动生成一个地址,这个地址是 /github-webhook
        • 这是一个固定的用法, 当回车完成后,
        • https://smee.io/sssfss2s0s 这类地址就会映射到本地的 http://127.0.0.1:8080/github-webhook/
    • 连接成功后,就可以用这个地址了
      • 把上述 生成的 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 )在 修改记录 选项中,也有一条修改记录
  • 这些就是我们想要的结果, 说明这条链路已经打通了

这篇关于Jenkins: 搭建Jenkins服务,调通Webhook链路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819238

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能