安装部署docker jenkins 环境
创建一个文件夹 用于存放jenkins相关配置
mkdir /Users/mengfanxiao/docker/jenkins
下载docker jenkins镜像
docker pull jenkins/jenkins当前版本:Jenkins 2.243
启动镜像
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins
访问jenkins
http://localhost:8080/
![ee23522b4e6fa775a152c01252970399.png](https://img-blog.csdnimg.cn/img_convert/ee23522b4e6fa775a152c01252970399.png)
PS : 如果一直在Please wait while Jenkins is getting ready to work...页面,资源访问过慢加载不出来
解决方法
找到/Users/mengfanxiao/docker/jenkins目录下的hudson.model.UpdateCenter.xml文件,将https://updates.jenkins.io/update-center.json替换为http://mirror.xmission.com/jenkins/updates/update-center.json然后重启启动docker jenkins
登陆账号
![1b3fb41dd12a7189c36d11c9021f4756.png](https://img-blog.csdnimg.cn/img_convert/1b3fb41dd12a7189c36d11c9021f4756.png)
启动命令中有一个文件映射 将docker中的配置文件映射到本地电脑即 -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins既然 docker jenkins已经启动 那么配置文件也从docker映射到本地一份了
![54fc561812712b4a4a069fd95ef4b078.png](https://img-blog.csdnimg.cn/img_convert/54fc561812712b4a4a069fd95ef4b078.png)
由上面[输入密码]截图可以看要去/var/jenkins_home/secrets/initialAdminPassword文件中找初始密码(发现截图上的目录少了一个jenkins)那么只需要从 本地文件 /Users/mengfanxiao/docker/jenkins/secrets/initialAdminPassword 即可
![f5be0d846fadef9e7e2a8701b554c193.png](https://img-blog.csdnimg.cn/img_convert/f5be0d846fadef9e7e2a8701b554c193.png)
安装插件
![c68349dadf8968c641eaebb7b0e6247b.png](https://img-blog.csdnimg.cn/img_convert/c68349dadf8968c641eaebb7b0e6247b.png)
这里选择安装推荐的插件
![a38646f3284066355b39a363828a42dd.png](https://img-blog.csdnimg.cn/img_convert/a38646f3284066355b39a363828a42dd.png)
PS : 这里等待时间太久 如何解决?
解决办法 :
修改更新配置源
找到/Users/mengfanxiao/docker/jenkins/updates/default.json
把 "www.google.com” 改成 "http://www.baidu.com/"
把 "updates.jenkins-ci.org/download" 替换成 "mirrors.tuna.tsinghua.edu.cn/jenkins"
快速更新的办法
使用vim的命令
- 替换所有插件下载的url
:1,$s/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g
- 替换连接测试url
:1,$s/http:\/\/www.google.com/https:\/\/www.baidu.com/g
注意:进入vim先输入:然后再粘贴上边的:后边的命令,注意不要写两个冒号!修改完成保存退出:wq
心理PS:速度卡卡的快啊(留下了幸福的眼泪)
创建用户
创建好用户之后 就可以进入到首页了
![f7b8f01d42da07be5541d69c18c20f30.png](https://img-blog.csdnimg.cn/img_convert/f7b8f01d42da07be5541d69c18c20f30.png)
![77d19d3f5a7afe1d369e4d2e674af7bf.png](https://img-blog.csdnimg.cn/img_convert/77d19d3f5a7afe1d369e4d2e674af7bf.png)
检查并修复插件
查看失败插件
- 打开系统管理页面 如果有安装失败的插件 则会显示(失败插件名称及原因)
![057a44bf902ad889a2075f320204df28.png](https://img-blog.csdnimg.cn/img_convert/057a44bf902ad889a2075f320204df28.png)
- 查看已安装的插件
http://localhost:8080/pluginManager/installed 报红的则是安装失败的插件
![835addbe58d778be942c7f9a62b10139.png](https://img-blog.csdnimg.cn/img_convert/835addbe58d778be942c7f9a62b10139.png)
- 功能不全
假如 如果在创建任务的时候没有[构建一个maven项目]选项 则需要安装maven插件
如何安装插件
以上面的功能不全-没有[构建maven项目]为例
- 点开可选插件 输入maven
http://localhost:8080/pluginManager/available
![9f76cb92c7ad88205d24597464b3317e.png](https://img-blog.csdnimg.cn/img_convert/9f76cb92c7ad88205d24597464b3317e.png)
- 安装后的效果
![fdc93b56bcaf9983ae33958063b56093.png](https://img-blog.csdnimg.cn/img_convert/fdc93b56bcaf9983ae33958063b56093.png)
![aeb6fe0b18c932933db080638f9f627a.png](https://img-blog.csdnimg.cn/img_convert/aeb6fe0b18c932933db080638f9f627a.png)
重启使得刚刚安装的插件生效
如果插件有了改变 则已安装插件页面的最下面有一个重启的提示,重启了之后 刚刚已安装的插件就会生效
![fc38f65e6e586913bd6de3a737c0a13d.png](https://img-blog.csdnimg.cn/img_convert/fc38f65e6e586913bd6de3a737c0a13d.png)
通过jenkins部署项目
创建一个任务
![2362c11cdef911fec77ed5a967916d19.png](https://img-blog.csdnimg.cn/img_convert/2362c11cdef911fec77ed5a967916d19.png)
General配置
![2371b19742a8d17af39f2e21fc510da8.png](https://img-blog.csdnimg.cn/img_convert/2371b19742a8d17af39f2e21fc510da8.png)
Git配置
![44106a593e48de72c6b8d883c53a532d.png](https://img-blog.csdnimg.cn/img_convert/44106a593e48de72c6b8d883c53a532d.png)
![8ac2da9252bdb7b214228e61fe1886a1.png](https://img-blog.csdnimg.cn/img_convert/8ac2da9252bdb7b214228e61fe1886a1.png)
指定分支的含义是 获取指定git地址下面的指定分支进行代码部署
build
![bfb7ad22c8566351a280ce950101c967.png](https://img-blog.csdnimg.cn/img_convert/bfb7ad22c8566351a280ce950101c967.png)
![14c40700bcb3124c3425c42f2f9285be.png](https://img-blog.csdnimg.cn/img_convert/14c40700bcb3124c3425c42f2f9285be.png)
![200faa0c73bd9a48b9494b8bc8a938ae.png](https://img-blog.csdnimg.cn/img_convert/200faa0c73bd9a48b9494b8bc8a938ae.png)
clean package -U -Dmaven.test.skip=true-U表示强制更新
Post Steps
在这一步之前的操作是 jenkins通过maven将指定的项目编译打jar或war包或其他形式的这一步是 访问指定的服务器 在指定的路径下面 执行指定的脚本 启动jar或war或其他 所以需要先配置下服务器:系统管理-系统配置-SSH Server并测试下是否可以连接
![f506fb1ca696e6ece8e9d63060f5370d.png](https://img-blog.csdnimg.cn/img_convert/f506fb1ca696e6ece8e9d63060f5370d.png)
![d32b6bbfd143de72d923b1b88d1d5a1c.png](https://img-blog.csdnimg.cn/img_convert/d32b6bbfd143de72d923b1b88d1d5a1c.png)
![3c26bda4c102474d9ee6777bf96cf6a4.png](https://img-blog.csdnimg.cn/img_convert/3c26bda4c102474d9ee6777bf96cf6a4.png)
![9f1294ee5c2f15cedf62aa116729c9aa.png](https://img-blog.csdnimg.cn/img_convert/9f1294ee5c2f15cedf62aa116729c9aa.png)
源文件 表示当前项目编译打包之后是jar包还是war包
可执行文件
root@iZuf6heduaqlfxz2wj9zc3Z:~# cat /home/jenkins/vote-api/vote-api-test.sh#!/bin/bash # 配置jdk环境export JAVA_HOME=/usr/local/software/jdk1.8.0_141export JAR_HOME=$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH# 配置项目名称APP_NAME=vote-api.jar#判断进程是否存在 若存在 则killis_exist(){pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `#如果不存在返回1,存在返回0 if [ -z "${pid}" ]; thenreturn 1elsereturn 0fi}is_existif [ $? -eq "0" ]; thenkill -9 $pidelseecho "${APP_NAME} is not running" fi# 删除上一次编译打包后的文件rm -rf /home/test-vote-api/*.jar# 将jenkins打包编译之后的文件复制到指定位置cp -rf /home/jenkins/vote-api/target/*.jar /home/test-vote-api/${APP_NAME}# 启动项目nohup java -jar -Dspring.profiles.active=dev /home/test-vote-api/${APP_NAME} -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m --server.port=8082 >/home/test-vote-api/logs/vote-api.log 2>&1 &echo "程序已启动..."# 进程是否存在is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is running. pid is ${pid} "elseecho "${APP_NAME} is not running."fiexit
注意点
- 上述脚本中的文件夹先创建好
mkdir /home/test-vote-api/logs
- PS:文件访问权限问题
如果jenkins在配置server的时候访问用户不是root用户比如是jenkins用户
![1d0f5b965ed8f92e224929a9a2c5debc.png](https://img-blog.csdnimg.cn/img_convert/1d0f5b965ed8f92e224929a9a2c5debc.png)
查看文件的访问权限 上面是当前用户可以读写可执行、当前用户所属于用户组可读可写可执行、其他用户可读可写可执行只有这样 jenkins用户才可以访问如果不是这样 则需要 chmod 777 /home/jenkins -R 设置下文件夹访问权限
邮件通知项目部署情况
![7c98146b0bc71665bd784f29aee8c7b5.png](https://img-blog.csdnimg.cn/img_convert/7c98146b0bc71665bd784f29aee8c7b5.png)
构建
![816f9480abd40ab396087d74437861d4.png](https://img-blog.csdnimg.cn/img_convert/816f9480abd40ab396087d74437861d4.png)
后记
至此,已经说完了jenkins环境搭建过程和如何通过jenkins部署一个项目的过程,我就不演示了构建的过程了 因为我用的公司的服务器,担心内存不够,把公司运行的项目给搞停掉😂