环境
阿里云 Centos7 双核8G,并且这是在Docker上进行的
安装
yum -y install docker # 安装docker
systemctl start docker # 启动docker
docker search jenkins # 搜索
docker pull jenkins/jenkins:lts # 安装镜像(建议到官网找最新的版本,否则可能出现其他问题)
运行
# 在当前用户下创建文件夹jenkins
mkdir jenkins
chmod -R 777 jenkins
# 运行(docker指令自行百度)
docker run -itd -p 8091:8080 -p 8092:50000 --name jenkins --privileged=true -v ~/jenkins/:/var/jenkins_home jenkins
# 查看运行状态
docker ps
# 运行结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54f487e8570b jenkins "/bin/tini -- /usr/l…" 7 minutes ago Up 59 seconds 0.0.0.0:8091->8080/tcp, 0.0.0.0:8092->50000/tcp jenkins
首次运行配置
- 配置密码
首次进入系统时会显示此界面,密码在jenkins/secrets/initialAdminPassword
文件里,当设置好密码后,此文件会被删除
cat ~/jenkins/secrets/initialAdminPassword # 获取密码
- 安装插件
此处选择安装推荐的插件即可
- 设置用户与密码
设置完成后就基本配置完成了。以后使用当前设置的账户即可登陆。
配置环境与服务器
- 配置JDK与Gradle
打开Manage Jenkins -> Global Tool Configuration,然后看到JDK和Gradle并点击Installtion并进行配置。在此处我选择了安装Sum的JDK8和Gradle 6.0,因为我的项目是使用Gradle进行打包的。我们也可以根据路径指定当前系统中JDK、Maven等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0MxJBues-1587981795174)(https://raw.githubusercontent.com/KitwahSin/KitwahSin.github.io/pictures/images/image-20200425002243025.png)]
- 添加SSH服务器
进入Manage Jenkins -> System Configuration并找到Publish over SSH -> SSH Servers选项,点击Add并进行配置。这个服务器在这里是作为打包测试通过之后发布的服务器。
填写完成后点击Test Configuration进行测试,看是否能够连接成功。
创建第一个项目
- 点击主页面的New Item,填入名字并选择Freestyle project。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1nJcBVu1-1587981795179)(https://raw.githubusercontent.com/KitwahSin/KitwahSin.github.io/pictures/images/image-20200425003208597.png)]
- 配置代码获取的方式,此处输入代码仓库的地址和账号等信息。同时还可以指定跟踪的分支,例如develop分支或者是master分支。
-
配置触发自动部署的条件,当达到一定的条件之后就可以触发Jenkins获取最新的代码进行打包、测试、部署等。因为我的GitLab服务器是能够访问到Jenkins服务器的,所以我选择在上传代码之后,通过Webhook触发部署。同时在此处点击Generate生成Secret token, 待会配置到GitLab服务器中。
Jenkin支持的几种触发方式:
- 通过远程触发(Trigger builds remotely)
- 在其他项目构建完成后出发(build after other projects are built)
- 周期性地进行检查(build periodically)
- 通过webhook进行触发(build when a change is pushed to GitLab)
- 定时检查源码变更情况,如有变更则触发(poll SCM)
- 配置打包的过程,可以通过执行Shell命令、调用Gradle脚本等进行打包。我这里使用的是Gradle脚本进行打包的。
- 最后可以配置打包成后所执行的步骤,此处配置的是打包测试成功后通过SSH发布。所以选择Send build artifacts over SSH。在SSH Server中选择刚刚配置的SSH Server即可。同时在transfer配置源文件等。这样在Jenkins中就已经配置完成了。
Transfer Set
Source files: 指打包后需要发布的War包或者是Jar包
Remove prefix: 在Source files中,倘若填写的是/test/xx.jar,如果传到SSH服务器上指定的目录下,会自动创建test文件夹,并且xx.jar文件在test文件夹下。移除前缀就可以不用创建test文件夹
Remote directory: 登陆SSH后进入的目录
Exec command: 传输完文件后需要执行的命令
- 配置GitLab中的WebHook,进入项目的Setting -> Intergrations 界面,填入配置Build Trigger中显示的URL与Secret Token,同时在下面选择触发条件。这个触发条件就是在什么条件下触发WebHook。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RV5RCUpp-1587981795189)(https://raw.githubusercontent.com/KitwahSin/KitwahSin.github.io/pictures/images/image-20200425004730148.png)]
填写完成后点击Add webhook即可出现下面显示的一个条目。
点击Test下拉按钮能够显示多个事件,这个可以模拟上传代码、合并代码事件。这样就能够测试我们是否在上传的时候触发Jenkins的打包功能。
如果成功了,点击Edit按钮滑动到底部,会看到一些回调信息已经发送成功的记录。当然,还是直接查看Jenkins是否已经触发了打包过程。我在测试的过程中就尝试过了,这里已经出现200的状态码,但是并没有触发打包。就是因为我在Jenkins配置的时候设置了一些过滤规则,过滤掉了。
参考:
转载:https://blog.csdn.net/xjh19970715/article/details/105796382