Jenkins环境搭建和部署项目的过程
安装部署docker jenkins 环境
创建一个文件夹 用于存放jenkins相关配置
mkdir/Users/mengfanxiao/docker/jenkins
下载docker jenkins镜像
dockerpull jenkins/jenkins
当前版本:Jenkins2.243
启动镜像
dockerrun -d -p8080:8080-p50000:50000--name jenkins --privileged=true-v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins
访问jenkins
http://localhost:8080/
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
登陆账号
输入密码
启动命令中有一个文件映射 将docker中的配置文件映射到本地电脑
即 -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins
既然 docker jenkins已经启动 那么配置文件也从docker映射到本地一份了
由上面[输入密码]截图可以看要去/var/jenkins_home/secrets/initialAdminPassword文件中找初始密码
(发现截图上的目录少了一个jenkins)
那么只需要从 本地文件 /Users/mengfanxiao/docker/jenkins/secrets/initialAdminPassword即可
安装插件
这里选择安装推荐的插件
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:速度卡卡的快啊(留下了幸福的眼泪)
创建用户
创建好用户之后 就可以进入到首页了
检查并修复插件
查看失败插件
- 打开系统管理页面 如果有安装失败的插件 则会显示(失败插件名称及原因)
- 查看已安装的插件
http://localhost:8080/pluginManager/installed报红的则是安装失败的插件
- 功能不全
假如 如果在创建任务的时候没有[构建一个maven项目]选项 则需要安装maven插件
如何安装插件
以上面的功能不全-没有[构建maven项目]为例
- 点开可选插件 输入maven
http://localhost:8080/pluginManager/available
- 安装后的效果
重启使得刚刚安装的插件生效
如果插件有了改变 则已安装插件页面的最下面有一个重启的提示,
重启了之后 刚刚已安装的插件就会生效
通过jenkins部署项目
创建一个任务
General配置
Git配置
git信息配置
访问git的账号配置
指定分支的含义是 获取指定git地址下面的指定分支进行代码部署
build
这里需要配置下maven
cleanpackage-U -Dmaven.test.skip=true-U表示强制更新
Post Steps
在这一步之前的操作是 jenkins通过maven将指定的项目编译打jar或war包或其他形式的
这一步是 访问指定的服务器 在指定的路径下面 执行指定的脚本 启动jar或war或其他
所以需要先配置下服务器: 系统管理-系统配置-SSH Server
并测试下是否可以连接
- 源文件 表示当前项目编译打包之后是jar包还是war包
- 可执行文件
root@iZuf6heduaqlfxz2wj9zc3Z:~cat /home/jenkins/vote-api/vote-api-test.sh!/bin/bash配置jdk环境exportJAVA_HOME=/usr/local/software/jdk1.8.0_141exportJAR_HOME=$JAVA_HOME/binexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportPATH=$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,存在返回0if[ -z"${pid}"];thenreturn1elsereturn0fi}
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用户
查看文件的访问权限 上面是当前用户可以读写可执行、当前用户所属于用户组可读可写可执行、其他用户可读可写可执行
只有这样 jenkins用户才可以访问
如果不是这样 则需要chmod777/home/jenkins -R 设置下文件夹访问权限
邮件通知项目部署情况
构建
后记
至此,已经说完了jenkins环境搭建过程和如何通过jenkins部署一个项目的过程,
我就不演示了构建的过程了 因为我用的公司的服务器,担心内存不够,把公司运行的项目给搞停掉
而传统构建的应用场景大多数运行在虚拟机或者独立的服务器上,在资源开销和管理维护较为复杂。相比于独立的服务器/虚拟机而言,容器不仅部署方便,且占用资源较少。
Docker作为目前作为业内最火的一个容器解决方案之一,通过将两者结合,从而实现服务的轻量化,并通过Docker管理Jenkins的资源。下面通过Docker部署Jenkins、Jenkins配置以及实例构建,讲述Jenkins的基本使用。
Docker下安装Jenkins
注:因为Jenkins容器里的用户是Jenkins,而主机用户不是Jenkins,就算是root也一样会报错:/var/jenkins_home/copy_reference_file.log: Permission denied,这个时候就需要在主机上面给主机地址赋予访问Jenkins容器的权限,Jenkins内部用的是uid 1000的user。
-privileged=true让容器具有root权限,便于进入容器
-p 9090:8080指定主机9090端口映射到Jenkins容器的8080端口(Jenkins的web访问端口)
-v /home/jenkins:/var/jenkins_home容器/var/jenkins_home路径挂载到宿主机/home/jenkins路径
启动Jenkins
浏览器输入http://ip:9090访问Jenkins首页:
密码地址
容器内:/var/jenkins_home/secrets/initialAdminPassword
宿主机:/home/jenkins/secrets/initialAdminPassword
进入插件下载页面,下载插件:
Jenkins插件下载
再进入插件下载管理页面http://ip:9090/pluginManager/advanced,使用https://cdn.jsdelivr.net/gh/jenkins-zh/update-center-mirror/tsinghua/current/update-center.json替换原来的json。
配置Jenkins
修改Jenkins时间
查看宿主机系统时间:
date -R
进入Jenkins容器查看时间:
docker exec -it -u root 容器id /bin/bash 进入容器
date -R 查看容器内时间
echo Asia/Shanghai >/etc/timezone 容器内创建Asia时区文件
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器id:/etc/localtime 退出容器并复制宿主机中localtime到容器内
配置Python3环境
Jenkins容器内并没有Python3环境,需要自己安装:
docker exec -it -u root 容器id /bin/bash 进入容器
cat /etc/issue 查看当前操作系统
注:Debian系统,这里使用apt-get代替yum。
apt-get update 更新apt-get
apt-get安装依赖包
案例分享:基于Docker环境下的Jenkins搭建及使用
Jenkins作为目前持续集成中使用较为广泛的工具,在实际生产过程中通过结合众多的插件,从而实现工程的持续构建、持续部署。

GitabvsJenkins2022:终极对比
长期以来,GitlabvsJenkins一直是开发者之间的热门话题。虽然大多数程序员喜欢Jenkins,但开发人员都支持Gitlab。这两种工具都有各自的优