实现 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 命令的升级问题,可采用如下方法解决删除 homebrewecho "$(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 下选择之前填入tokenBranches 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 )在 修改记录 选项中,也有一条修改记录 这些就是我们想要的结果, 说明这条链路已经打通了

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。