零、前言
前阵子发现部署这部分有点生疏了,所以还是自己又操作了一遍,
主要是为了给公司中对此生疏的同事写个操作手册,另外自己也
能做个笔记,好记性不如烂笔头。
一、为什么要使用jenkins
**略**二.整体思路
Jenkins作用是:我帮你把这一套活儿干了,你就不用管了。
我理解大致的流程是这样的:
在一个能拉公司git代码的 具有linux系统的机器上(我用的本地虚拟机),
使用docker创建一个jenkins容器。然后配置一下需要拉取项目的git源码地
址以及需要build的分支,jenkins拉取代码,根据另外一些maven命令打
包,我们的项目打的是war包,然后将war通过ssh(注:ssh就是22端口,
linux系统提供的,比如我们用的xshell就是22端口可以远程的操作linux系
统),接着说,通过ssh把war包发送到指定的目标服务器上,当然这里目
标服务器就是我们新的阿里云了,和xshell一样,肯定是需要账号密码的
发送成功后,再用shell命令去做上述中:停服、删目录、清理日志、启
动务这些活。整理的思路就是这样。下边详细说。
三、安装jenkins
docker run --name=jenkins --privileged=true \
-u root \
-d \
-p 8090:8080 \
-p 50000:50000 \
--restart=always \
-v /usr/local/docker/jenkins_home:/var/jenkins_home \
-v /run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins:lts
有时候会说找不到文件夹,那就手敲一遍就行了。
注:这个lts是朋友说能够使用java8的版本,dockerhub上11的版本,
我没有使用。好了,以上jenkins就创建完了。
四、查看管理员密码
docker logs 一下jenkins容器,可以看到这样的东东:红框内就是密码,如下图,其实你可以在jenkins_home下找到一个文件,类似的名字叫init_secret之类的文件,里面有密码。文件名我忘了叫啥。
五、登录jenkins
在浏览器中输入http://宿主机ip:8090
六、安装推荐的插件
ps:如何失败了,就重试。
七、添加管理员用户
八、更改账户信息
九、点击设置
十、更改用户定义时区
十一、安装插件
安装maven构建工具
安装node
安装Publish Over SSH
十二、添加凭证
进入系统管理-管理凭证(manager Credentials)
点击全局凭证
添加gitblit凭据
因为我们公司用的gitblit
十三、配置全局工具
添加maven
添加maven配置,不添加也行,但是要注意修改一下maven中setting.xml中的镜像源
添加jdk
这里的jdk就是用于maven编译时使用的,所以一定要校对本地使用的jdk版本,我使用的是jdk1.8.0_181
添加nodeJS
nodeJs是build前端用的
十四、设置系统配置
配置publish over ssh
点开高级按钮,然后输入登录阿里云的密码,上述remote directory是目前docker部署的文件的通用路径
十五、部署git项目
1.选择新建任务
输入任务名称,我直接输入的是中文:一个练,然后点击构建一个maven项目,点确认
2.General
3.源码管理
选择git
然后输入对应项目的后端地址
凭证就选gitblit的
分支选择部署的分支
4.构建触发器
这里选的轮询SCM,因为gitblit不像git一样能简单的设
置hook,所以这里用的轮换git上指定分支的提交记录来确定是否自动构建项目
5.pre steps
Root pom 选择项目的root模块的pom
Goals and options这里说一下
Clean package就是先清理 build的结果,然后打包
-pl 是指定要打哪个模块的包,使用groupId:该模块的artifactId
-am 是指需要打包的模块所依赖的模块也一起打包
扩展一下,如果是 -amd 就是将依赖于 打包的模块的模块也build
-e -X 是输入详细的build信息
-Dmaven.test.skip=true 是跳过测试
6.post steps
这里也要详细说一下:
这里的意思就是打包后要干啥,要干啥?把war包发送到阿里云上并执行shell命令
Name 选择之前配置的公司阿里云
Source file填写为 web/target/*.war ,这里是 也只能是相对路径,相对的是job文件,就是
容器中的/var/jenkins/workspace/构建任务名称/,注意构建任务名称下就是build出来的东西,包括common、core、web这些模块。因为我们挂载了jenkins的整个目录,所以这部分其实可以在/usr/local/docker/jenkins/workspace下找到,前提是构建后不删除工作目录(下边会提到)
Remove prefix 是传送到目标服务器上后去掉哪些文件前缀,所以去掉了/web/target,如果不去掉的话,传到服务器那边 后 会自动创建/web/target文件目录,这不是我们所期待的。
Remove director 指要把war包传到那里,我们已经在系统设置中设置了阿里云的部署目录是/usr/local/docker ,所以这里填写的是相当于前面的文件目录,这里是以电商后端举例,所以相对目录是 oneplusx/ds/ds_primary/ds_primary_tomcat/webapps
Exec command 指war包传完之后要做什么事,做什么事?当然是停服、清日志、删war解压目录、启动项目,所以如下所示:(注:我这里有个假设前提是 后端tomcat容器没有被销毁重建,因为如果销毁重建后 容器的id就变了,那下边的9df就需要换成最新的tocmat容器id了)
echo '电商-初级-停服'
docker stop 9df
echo '清理日志'
cat /dev/null >/root/dockerlog/9df3c73e545bc92d25c1b76d1ad3f46e47957014032ec16a4cbe44f40a51275b/9df3c73e545bc92d25c1b76d1ad3f46e47957014032ec16a4cbe44f40a51275b-json.log
echo '清理之前的解压文件'
cd /usr/local/docker/oneplusx/ds/ds_primary/ds_primary_tomcat/webapps
rm -rf carDs
#启动容器
docker start 9df
7.构建后操作
这里是上述说的删除了构建结果工程目录,因为我们打包后,
之前那些过程文件就不需要了,所以删了,如果想看一下
build的结果并做学习了解,就不选下列的删除。
十六、部署vue项目
1.创建一个自由风格的任务
新建任务,输入任务名,选择构建一个自由风格的软件项目,然后保存,
然后进入配置
一顿省略,因为与上相同
2.构建
这里的意思就是打包后要干啥,要干啥?把打包后的文件夹发送到
阿里云上并执行shell命令
Name 选择之前配置的公司阿里云
Source file填写为 car_dsfw_primary/** ,这里是 也只能是相对路径,
相对的是job文件,就是容器中的/var/jenkins/workspace/构建任务名称/,
注意构建任务名称下就是build出来的东西,包括public ,src,
car_dsfw_primary等等文件和文件夹。因为我们挂载了jenkins的整个目录,
所以这部分其实可以在/usr/local/docker/jenkins/workspace下找到,
前提是构建后不删除工作目录(下边会提到)。
/** 后边的两个星星表示把这个文件夹下边的所有东西都传过去
Remove prefix 是传送到目标服务器上后去掉哪些文件前缀,
所以去掉了/web/target,如果不去掉的话,传到服务器那边 后
会自动创建文件目录。前端在这里不需要填写。
Remove director 指要把文件夹传到那里,我们已经在
系统设置中设置了阿里云的部署目录是/usr/local/docker
,所以这里填写的是相当于前面的文件目录,这里是以电商前端举例,
所以相对目录是 oneplusx/nginx/html
Exec command 指打包文件传完之后要做什么事,做什么事?
啥也不用做,但是这里不填东西会报错,所以就echo一个fuck吧。