一, Jenkins官网介绍: Jenkins
持续集成、持续部署
下载地址:Jenkins download and deployment
提供两种类型: LTS(长期版)和Weekly(最近一周的版本)
注: 必须是Java8及以上版本(官网针对这一点有做说明)
二, 安装
下载war包,java -jar XXX --httpPort=8081 或
下载war包放在tomcat下的web-app目录下运行tomcat 或
docker安装部署: docker pull jenkins/jenkins
1, 创建本地目录: sudo mkdir -p /Users/devops/jenkins
2, 对目录开放docker进程操作的完全读写的权限: sudo chmod 777 /Users/devops/jenkins
3, docker启动部署: docker run -itd -p 9003:8080 --restart always -v /Users/devops/jenkins:/var/jenkins_home --name jenkins jenkins/jenkins:latest
执行完后,打开地址: http://localhost:9003访问页面
在指定路径上寻找管理员密码输入,然后进行登录
三,Jenkins的工作流程
四, 系统管理设置
1, 设置时区: 系统管理-》脚本命令行-》System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
2, 安装插件: 系统管理-》插件管理-》
【Maven Integration】、【Pipeline Maven Integration】、【Gitlab】、【Gitlab hook】、【SSH】、【Publish Over SSH】进行安装,安装完后重启
说明: 安装Publish Over SSH插件的原因:因为本方式是使用docker启动jenkin服务,所以在jenkins后续执行构建任务时候,需要在build成功后,将服务的jar包[以spring boot]服务为例,需要将jar包拷贝到Dockerfile所在服务器的指定目录,进行微服务的启动;所以,此处需要配置SSH服务器的连接,意思就是在jenkins的任务结束后,去执行指定的服务器上的shell命令,做spring boot或cloud服务的镜像的构建,容器的运行,等一系列的事情
3, 如果忘记了账号密码,在docker里面可通过这个目录查找:cd /var/jenkins_home/users,然后找到lizhihao_XXX的目录进入,里面有个config.xml文件进入:cat config.xml,然后有个标签passwordHash即为加密后的密码,初始密码为:123456,加密后为#jbcrypt:$2a10LxMm9HqAI/R4z7gL57qTouW/Mrz8uSaBpCGKvKc7K6dK.g/0yk/uq,可修改密码后,重启容器即可.
重启Jenkins容器:docker ps 找到容器id,docker restart 容器id
五, 创建任务和功能介绍
5.1 源码管理设置:
注: 下面还可以指定一个分支.
创建一个maven项目,这里使用git进行源码进行管理,需要注意的是,如果使用docker进行jenkins安装,需要进入jenkins中,然后生成ssh key,即 进入容器后,执行:ssh-keygen -t rsa,一路回车直到生成公私钥完毕.
将生成的公钥添加到github上后,jenkins就能够访问到代码了.
然后在jenkins设置中,添加git的凭证,这里我们使用账号密码(公钥或者私钥不行),
参照:jenkins配置git报错returned status code 128_以root用户运行jenkins容器 报 git config remote.origin.url -CSDN博客
5.2 构建环境
在post Steps中执行shell脚本:
#!/bin/bash #输入Maven打包后的项目名称 app=magic-api-demo-0.0.1-SNAPSHOT #项目移动的目的地址 path=/user/local echo this is app : app #若项目已启动,杀死旧进程 api_pid=\`ps -ef \| grep "app.jar" | grep -v grep | awk '{print $2}'` echo api_pid = api_pid if \[ "api_pid" != "" ]; then echo kill api kill -9 api_pid echo sleep 3s sleep 1 echo sleep 2s sleep 1 echo sleep 1s sleep 1 fi #将jar包从jenkins工作空间中移动到指定路径下 #mv /var/jenkins_home/workspace/magic-api-demo/target/app.jar $path #cd $path cd /Users/lizhihao/.jenkins/workspace/magic-api-demo/target #防止进程被杀死 BUILD_ID=dontKillMe #后台进程形式启动项目,日志文件为out.log nohup java -jar $app.jar >> out.log 2>&1 & echo $app start success exit 0
注: 在使用docker部署jenkins时,jenkins的工作空间目录要填写宿主机的目录,对应的实际jar包的位置也填宿主机的,最后out.log文件存放在target目录中与jar包平级.
5.3 配置Webhook,
将该url配置到项目settings中的webhook中:
需要注意的是,该ip应该为公网的ip,内网的ip或者localhost不会访问成功.