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 )在 修改记录 选项中,也有一条修改记录
  • 这些就是我们想要的结果, 说明这条链路已经打通了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码分支管理

代码分支管理规范 一、分支管理要求 分支管理 • 将代码提交到适当的分支,遵循分支管理策略。 • 随时可以切换到线上稳定版本代码,确保可以快速回滚到稳定版本。 • 同时进行多个版本的开发工作,确保分支清晰,避免混淆。提交记录的可读性 • 提交描述准确,具有可检索性,…

Explain 关键字

优质博文:IT-BLOG-CN explain关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理 SQL 语句的。分析查询语句或表结构的性能瓶颈。执行语句:explain SQL语句。表头信息如下: 一、ID 参数 select 查询的序列号&…

MySQL实现事务隔离的秘诀之锁

在MySQL中,有多种锁类型,我们先了解三种概念的锁,以便对接下来的内容有更好理解。 表级锁(Table Lock):对整个表加锁,其他事务无法修改或读取该表的数据,但可以对其他表进行操作。页…

【数据结构和算法初阶(C语言)】二叉树铺垫--栈帧的创建与销毁--细节全解

前言: 学习这么久以来,可能有很多疑问:局部变量怎么创建的?为什么局部变量的值是随机的?函数是怎么传参的?传参的顺序是怎么样的?形参和实参是什么样的关系?函数调用是怎么做的&…

由浅到深认识C语言(11):结构体

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

【全开源】JAVA情侣扭蛋机情侣游戏系统源码支持微信小程序+微信公众号+H5

一、功能介绍 会员功能、情侣扭蛋 收到的券、送出的券 合伙代理、意见反馈 我们技术使用JAVA后台服务 前后端分离 springbootmybatisplusmysql 用户端 uniapp(vue语法)管理后台 vueelementUi 适配小程序H5公众号,一套源码,无…

Jenkins 面试题及答案整理,最新面试题

Jenkins中如何实现持续集成与持续部署? Jenkins通过自动化构建、测试和部署应用程序来实现持续集成与持续部署(CI/CD)。这个过程包括以下步骤: 1、源代码管理: Jenkins支持与多种版本控制系统集成,如Git、…

设计模式在芯片验证中的应用——装饰器

一、装饰器模式 装饰器模式(Decorator)是一种结构化软件设计模式,它提供了一种通过向类对象添加行为来修改类对象的方法,而不会影响同一类的其它对象行为。该模式允许在不修改抽象类的情况下添加类功能。它从本质上允许基类代码对不可预见的修改具有前瞻…

SQLiteC/C++接口详细介绍之sqlite3类(十二)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十一) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(十三) ​37.sqlite3_load_extension 用于在SQLit…

硅电容的工作原理,结构特点,工艺流程,选型参数及设计注意事项总结

🏡《总目录》 目录 1,概述2,工作原理3,结构特点3.1,集成度高3.2,制造工艺成熟3.3,稳定性好3.4,高可靠性4,工艺流程4.1,材料准备4.2,硅片处理4.3,电容结构制作4.4,电极制作4.5,封装与测试<

Iframe 嵌入: 页面嵌入并保持自适应页面的宽高并铺满整个屏幕

文章目录 问题分析1. 嵌入 Iframe2. 样式3. 源码 问题 当我们使用 Iframe 嵌入页面后&#xff0c;会看到它只在小小的一部分进行展示&#xff0c;如何让它铺满整个屏幕 分析 1. 嵌入 Iframe <template><div><iframe :src"embeddedPageUrl" width…

R语言中的常用基础绘图函数 直方图,箱线图,条形图,散点图

目录 R语言中的绘图参数 绘图函数 1.plot函数绘制散点图 2.hist函数绘制直方图 如何修饰直方图? 如何在直方图上标注各组频数&#xff1f; 使用text函数把某些信息标注在直方图上 如何在直方图上添加概率密度曲线&#xff1f; 3.boxplot函数绘制箱线图 4.barplot函数…

【强化学习笔记一】初识强化学习(定义、应用、分类、性能指标、小车上山案例及代码)

文章目录 第1章 初识强化学习1.1 强化学习及其关键元素1.2 强化学习的应用1.3 强化学习的分类1.3.1 按任务分类1.3.2 按算法分类 1.4 强化学习算法的性能指标1.5 案例&#xff1a;基于Gym库的智能体/环境接口1.5.1 安装Gym库1.5.2 使用Gym库1.5.3 小车上山1.5.3.1 有限动作空间…

灯塔:CSS笔记(4)

伪类选择器&#xff1a; 1.作用与优势&#xff1a; 1.作用&#xff1a;根据元素在HTML中的结构关系查找元素 2.优势&#xff1a;减少对于HTML中类的依赖&#xff0c;有利于保持代码的整洁 3.场景&#xff1a;常用于查找某父级选择器中的子元素 2.选择器 选择器说明E:first-c…

蓝桥杯2023年省A(一波三折的)【买瓜】折半搜索+剪枝+排序

题目&#xff1a;洛谷 P9234 [蓝桥杯 2023 省 A] 买瓜 折半搜索 一开始觉得像dp&#xff0c;试着写了&#xff0c;显然过不了&#xff0c;但我实在觉得搜索也过不了啊&#xff0c;去看题解&#xff0c;发现使用了折半搜索&#xff08;每天都觉得啥都不会捏 折半搜索就是先搜一…

wayland(xdg_wm_base) + egl + opengles 渲染使用纹理贴图的旋转 3D 立方体实例(十三)

文章目录 前言一、使用 stb_image 库加载纹理图片1. 获取 stb_image.h 头文件2. 使用 stb_image.h 中的相关接口加载纹理图片3. 纹理图片——cordeBouee4.jpg二、渲染使用纹理贴图的旋转 3D 立方体1. egl_wayland_texture_cube.c2. Matrix.h 和 Matrix.c3. xdg-shell-client-pr…

日期与时间(Java)

文章目录 日期与时间&#xff08;Java&#xff09;一、JDK8之前的1.1 Date1.2 SimpleDateFormat1.3 Calendar 二、 JDK8之后的2.1 LocalDate、LocalTime和LocalDateTime2.2 ZoneId和ZonedDateTime2.3 Instant2.4 DateTimeFormatter2.4 Period和 Duration &#x1f389;写在最后…

Java项目利用Redisson实现真正生产可用高并发秒杀功能 支持分布式高并发秒杀

Java中的高并发秒杀场景下我们可以使用redisson来实现高并发秒杀功能, 以下就是一个可用于生产环境的高并发秒杀示例代码: pom依赖 <!-- https://mavenlibs.com/maven/dependency/org.redisson/redisson --><dependency><groupId>org.redisson</groupId&…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)下篇

onRequestSelected onRequestSelected(callback: () > void) 当Web组件获得焦点时触发该回调。 示例&#xff1a; // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webv…

Github Copilot 工具,无需账号,一键激活

① 无需账号&#xff0c;100%认证成功&#xff01;0风险&#xff0c;可联网可更新&#xff0c;&#xff0c;支持copilot版本升级&#xff0c;支持chat ② 支持windows、mac、linux系统等设备 ③一号通用&#xff0c;支持所有IDE(AppCode,CLion,DataGrip,GoLand,IntelliJ IDEA …