超详细本地搭建 docker + jenkins 自动部署项目

目的

本地搭建 docker + jenkins 部署系统, 经过 githubwebhook 实现代码自动化部署.node

准备工做

安装docker

mac: docs.docker.com/docker-for-…
windows: docs.docker.com/docker-for-…
liunx:git

// 推荐脚本安装方式
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
复制代码

控制台输入 docker -v, 显示版本则安装成功github

Docker version 20.10.5, build xxxxx
复制代码

安装 jenkins

控制台输入docker search jenkins,选择安装jenkinsci/blueocean镜像,比较稳定.web

image.png 控制台输入docker pull jenkinsci/blueocean,下载完成以后输入docker images看到以下信息即安装成功
image.pngdocker

启动 jenkins

控制台输入docker run -d --name docker-jenkins -p 8008:8080 -p 50000:50000 jenkinsci/blueocean 启动容器,启动成功会返回该容器 idshell

image.png 浏览器打开本地 8008 端口,正常状况下会出现解锁jenkins页面npm

image.png

获取初始化密码

下一步须要进入容器内拿到密码,以我刚刚启动的容器为例,控制台输入docker exec -it docker-jenkins bash进入容易内,而后输入cat /var/jenkins_home/secrets/initialAdminPasswordjson

image.png

输入控制台返回的密码进入配置页面,这里选择安装推荐的插件,可能会有安装失败的插件,重试便可windows

image.png

建立用户

插件安装完成后,输入信息建立用户浏览器

image.png 实例配置不变继续点击下一步,此时须要重启动,重启完成登陆刚刚建立的用户便可,接下来进行配置环节

image.png

配置

下面对 github 以及 jenkins 进行配置

在容器内生成 ssh 公钥

进入docker-jenkins容器内,输入ssh-keygen -t rsa -C test@test.com,连续回车生成公钥

2021-05-27 16.01.11.gif

添加公钥 ☞ github

右上角头像 -> settings -> 左侧SSH and GPG keys -> New SSH key
image.png title 随意, key 栏输入复制的公钥

添加私钥 ☞ jenkins

这一步须要注意,须要用刚刚生成的私钥建立一个 jenkins 凭证

注意: 私钥上下的开始以及的标记内容也要一块儿拷贝

首页 -> 左侧系统管理 -> Manage Credentials -> 添加凭据

2021-05-27 16.25.02.gif

注意: 类型选择 SSH Username with private key, 描述以及 Username 随意

建立任务

首页 -> 新建任务 -> 输入任务名称 -> 构建一个自由风格的软件项目 -> 肯定
正常状况能够看到这个页面

image.png 源码管理选择 Git -> 输入远程仓库地址 -> 选择以前添加的凭证 -> 分支指定 master -> 保存

2021-05-27 16.37.30.gif

注意: 这一步输入远程仓库以后会测试链接,未选择凭证会报错误信息,选择凭证后,若是配置正确,短暂的时间以后错误信息会消失,表明远程仓库链接成功.若错误信息不消失,可能会构建项目失败,需检查配置是否正确.分支信息我这里指定的 master

尝试项目构建

首页 -> 构建项目 -> 查看日志
若是配置正确,能够看到构建完成最终的状态为: Finished: SUCCESS

2021-05-27 16.49.37.gif
进行到这一步实现了手动构建,接下来实现自动构建

自动化配置

完成自动化部署,主要是经过 github-webhook.简单来讲就是github-webhook通知 jenkins 要进行构建了.
引用维基百科介绍

在web开发过程当中的webhook,是一种经过一般的callback,去增长或者改变web page或者web app行为的方法。这些callback能够由第三方用户和开发者维持当前,修改,管理,而这些使用者与网站或者应用的原始开发没有关联。webhook这个词是由Jeff Lindsay在2007年在计算机科学hook项目第一次提出的。

个人理解是相似于"发布订阅模式",github-webhook 发布更新, jenkins 监听,收到通知进行更新.不管发布或者监听,须要经过某种方式来肯定彼此的身份,进行关联,所以须要对两端进行配置.
右上角头像 -> settings -> 左侧 Developer settings -> Personal access tokens -> Generate new token
note 随意填,勾选如下两项,点击 generate token

image.png
注意拷贝生成的 token,离开就消失了

image.png

配置 github

配置仓库的 web-hook:
仓库首页 -> settings -> 左侧 webhooks -> add webhook

image.png

注意: 这里的 Payload URL只能使用公网域名,因为本次搭建的是本地 jenkins 环境,所以须要使用内网穿透工具,我用的是蜻蜓映射.

Payload URL: 输入当前jenkins容器运行端口映射出去的公网域名 + /github-webhook/
Content type: 选择 application/json
Secret: 填入刚刚生成的 token 其他默认

配置jenkins

首先建立一个凭证: 首页 -> 系统管理 -> Manage Credentials -> 添加凭据 -> 选择 Secret text

2021-05-27 20.33.55.gif
而后对改凭证进行配置:
首页 -> 系统配置 -> GitHub -> 高级 -> 覆盖 Hook URL -> 输入 web-hook 地址 -> 选中建立的凭证

2021-05-27 20.39.12.gif
完成配置后,代码仓库更新以后 jenkins 会自动进行构建

打包项目

项目代码须要打包以后才能被正确使用,接下来在 jenkins 端进行代码构建操做
首页 -> 系统管理 -> 插件管理 -> 可选插件 -> 选中 NodeJS 以及 Publish Over SSH -> 安装 -> 等待安装完成

  • NodeJS: 代码运行环境
  • Publish Over SSH: 打包完成后发送到服务器

2021-05-27 19.11.06.gif

拉取代码进行打包

首先配置全局 NodeJS 插件:
首页 -> 系统管理 -> 全局工具配置 -> NodeJS -> 新增
2021-05-27 19.18.15.gif
构建项目中新增 NodeJS 构建环境:
项目配置 -> 构建环境 -> 选择刚刚配置的 node 环境 -> 构建 -> 执行 shell -> 安装依赖 -> 打包 -> 压缩

echo "hello world"
npm install
npm run build
cd dist
tar zcvf dist.tar.gz ./*
复制代码

2021-05-28 10.29.59.gif

配置完以后手动点击构建,查看日志查看构建状态,操做成功能够进到 docker-jenkins容器内部检查 dist.tar.gz 文件是否存在

image.png

发送到服务器

全局配置 publish over ssh 插件

首页 -> 系统管理 -> 系统配置 -> Publish over SSH -> SSH Servers
2021-05-28 15.19.21.gif 这里我是用的是用户密码登陆,也可以使用 ssh 的方式链接服务器.输入完毕能够进行链接测试

项目中配置

项目配置 -> 构建后操做 -> SSH Server -> Transfers

Source files: 发送的文件(相对路径为当前项目路径)
Remove prefix: 要去掉的前缀
Remote directory: 远端服务器目录(不存在会报错)
Exec command: 发送成功以后要在服务器进行的脚本操做,如:解压,删掉多余的文件
复制代码

2021-05-28 15.33.04.gif 贴上脚本代码

cd 文件发送的目录
tar zxvf dist.tar.gz
rm -rf dist.tar.gz
复制代码

最后尝试推送代码,验证自动化构建部署~

image.png 正常状况下服务器上会收到发送的文件,到这一步本地全自动构建成功啦

相关文章
相关标签/搜索