赞
踩
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("/hello")
public String sayHelloJenkins(){
return "Hello Jenkins!";
}
}
因为Jenkins容器没有Maven环境,如在容器内部安装Maven,由于构建的项目要下载相关的依赖这样造成一部分资源浪费。所以我这里采用的将Maven和容器通过挂载达到共享本地Maven仓库
启动jenkins:docker run -d -uroot -p 9095:8080 -p 50000:50000 --name jenkins -v /home/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime jenkins/jenkins
(可在控制台用ifconfig查询ip)
这里可以根据自己的需求做配置
通过 docker exec -it 容器id /bin/bash 进入容器(以下参数全是容器中的参数)
配置JAVA_HOME时把自动安装取消就可以了
Maven同上 git直接用容器默认的
# 查看密码
[root@lj jenkins]# cat data/secrets/initialAdminPassword
a86*********************26
项目在第一次打包构建时有点慢,因为要下载相关Maven依赖,别急,去喝口水走走!!
搞定了,Jenkins已经帮我们从远程仓库自动拉取代码然后打包好了,回到工程去看一下
然后点击工作区,这个目录熟不熟悉??哈哈哈。进去target目录查看打包好的jar包吧
上面我们完成了Jenkins的基本构建。但是,我们在实际业务中不是去手动点击立即构建让Jenkins去构建。这tm的算什么自动构建啊!我们程序员写完代码后本地测试没问题了就会通过git的git push推送到远程代码仓库,我们要做到远程代码仓库接收到了新的推送然后去触发Jenkins的构建功能达到自动构建的效果!!!别急慢慢来会很快的!
和刚才安装 Publish Over SSH插件插件一样
安装完成了记得重启
系统管理 -> 系统配置 -> Gitee 配置
先去Gitee生成API 令牌 https://gitee.com/profile/personal_access_tokens
点击高级根据你的需求选择 再点击测试连接
插件配置完成!!
进入我们jenkins_test任务,左边导航栏有个配置点击进入
选择我们刚才配置的链接
在源码管理点击高级
保存!!!!!!!
管理 -> WebHooks -> 添加webHook
去我们之前的示例项目里随便做点修改然后git push到远程仓库试试
测试成功!!!
安装 Gitlab 和 Gitlab Hook 过程同上。基本配置都相同,GitLab官方的配置是英文的。emmm面向有道翻译学习了。
任务配置
进入我们jenkins_test任务,左边导航栏有个配置点击进入
要换成你GitLab的地址和密码哦(用公钥私钥免密登录也行,记得要将容器内jenkins私钥配置给凭证,还有jenkins的公钥配置给GitLab)
和Gitee类似。选择你的触发事件( Push Events )。点击高级还会生成 Secret token 。
记得把WebHook和生成的Secret token配置给GitLab的WebHooks
测试一样啊,你把你的项目推送,然后看看有没有触发构建咯。
在前面我们已经完成了有远程代码仓库推送代码触发项目构建的功能。但是,每次构建完了是不是还是要我们去下载然后部署到我们的目标服务器。这样未必过于麻烦,而且有些时候还会出现不及时等情况,或者部署后又上线新需求又要从新部署!!!我们能不能让Jenkins自动帮我们连接我们要部署的目标服务器帮我们自动化部署呢??? 嘿嘿嘿!懒使人进步。come on!
还记得我们前面安装了 Publish Over SSH插件吗?我们来思考一下,我们到底想让Jenkins帮我们做什么?emmm! 首先,帮我们把构建打包好的jar包发送到目标服务器上,然后连接我们的目标服务器去执行启动项目的命令(java -jar xxx,jar > /dev/null &)!
准备:
进入 系统管理 -> 系统配置 -> Publish over SSH
SSH Servers 点击新增 你也可以点击高级用目标服务器的账号密码登录它的ssh
点击保存
任务配置
进入我们jenkins_test任务,左边导航栏有个配置点击进入
构建后操作
保存
测试
去我们之前的示例项目里随便做点修改然后git push到远程仓库
......参照上面的测试
查看控制台
查看目标服务器
你可以在任务配置里面刚才脚本的位置添加相关的脚本,比如判断某个该服务是否启动启动就关闭启动新的服务,完成自动化部署 示例:
#!/bin/bash
cd jenkins_test
# 这是一个坑点 ssh远程执行命令的时候,被远程机器的有些环境变量是无法获取的,比如java环境信息,所以java命令执行不出来 !!!
source /etc/profile
# 获取jenkins_test-0.0.1-SNAPSHOT.jar服务的pid 第一次就啥都没有
PID=`ps -aux|grep jenkins_test-0.0.1-SNAPSHOT.jar|grep -v grep |awk '{printf $2}'`
for id in $PID
do
kill -15 $id
echo "killed $id"
done
nohup java -jar jenkins_test-0.0.1-SNAPSHOT.jar > ./console.log 2>&1 &
FROM java:8
MAINTAINER Lj<1126184155@qq.com>
COPY target/jenkins_test-0.0.1-SNAPSHOT.jar /usr/local/jenkins_test-0.0.1-SNAPSHOT.jar
ENV MYPATH /usr/local
WORKDIR $MYPATH
EXPOSE 8080
CMD ["java","-jar","jenkins_test-0.0.1-SNAPSHOT.jar"]
version: "3.8"
services:
web:
build: .
ports:
- "8081:8080"
修改构建后配置
测试
修改实例代码,然后推送到远程仓库,查看Jenkins控制台的构建,第一次因为要下载相关的镜像所以会比较慢。耐心等待。然后访问8081端口的/test/hello接口
可以多次修改代码推送然后查看效果!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。