阿里云 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 # 获取密码
此处选择安装推荐的插件即可
设置完成后就基本配置完成了。以后使用当前设置的账户即可登陆。
打开Manage Jenkins -> Global Tool Configuration,然后看到JDK和Gradle并点击Installtion并进行配置。在此处我选择了安装Sum的JDK8和Gradle 6.0,因为我的项目是使用Gradle进行打包的。我们也可以根据路径指定当前系统中JDK、Maven等。
进入Manage Jenkins -> System Configuration并找到Publish over SSH -> SSH Servers选项,点击Add并进行配置。这个服务器在这里是作为打包测试通过之后发布的服务器。
填写完成后点击Test Configuration进行测试,看是否能够连接成功。
配置触发自动部署的条件,当达到一定的条件之后就可以触发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)
Transfer Set
Source files: 指打包后需要发布的War包或者是Jar包
Remove prefix: 在Source files中,倘若填写的是/test/xx.jar,如果传到SSH服务器上指定的目录下,会自动创建test文件夹,并且xx.jar文件在test文件夹下。移除前缀就可以不用创建test文件夹
Remote directory: 登陆SSH后进入的目录
Exec command: 传输完文件后需要执行的命令
填写完成后点击Add webhook即可出现下面显示的一个条目。
点击Test下拉按钮能够显示多个事件,这个可以模拟上传代码、合并代码事件。这样就能够测试我们是否在上传的时候触发Jenkins的打包功能。
如果成功了,点击Edit按钮滑动到底部,会看到一些回调信息已经发送成功的记录。当然,还是直接查看Jenkins是否已经触发了打包过程。我在测试的过程中就尝试过了,这里已经出现200的状态码,但是并没有触发打包。就是因为我在Jenkins配置的时候设置了一些过滤规则,过滤掉了。
参考:
jenkins各种触发方式介绍