Linux Docker 中安装 Jenkins 并实现 Maven 工程自动化部署
![Linux Docker 中安装 Jenkins 并实现 Maven 工程自动化部署](https://static001.geekbang.org/infoq/ea/eaacade922e91a226383e5f36cac5fed.jpeg)
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的 JavaLib」第一时间阅读最新文章喔!
1:在 Linux 命令行执行以下命令启动 Jenkins,该命令如果发现本地没有 Jenkins 镜像会先去拉取镜像。注意,此教程基于 Linux 已经安装完 Docker。docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
![](https://static001.geekbang.org/infoq/dd/dd29543a7d5371e0b045f6479ad75293.png)
2:关闭防火墙 systemctl stop firewalld.service(如果这此行执行后报错 Failed to stop firewalld.service: Unit firewalld.service not loaded.,先执行 systemctl mask firewalld 再执行 systemctl stop firewalld.service)
3: 访问 http://jenkins 所在主机 ip:8080
![](https://static001.geekbang.org/infoq/13/134bfbd62f8a23b5b45e79de1930fc82.png)
3:解锁 Jenkins,使用以下命令进入 Jenkins 容器,然后再执行第二行命令获取秘钥 docker exec -it 容器 ID /bin/bashcat /var/jenkins_home/secrets/initialAdminPassword
4:输入秘钥后,出现如下界面(推荐选择第一种),选择后等待插件安装后,创建用户就好了。
![](https://static001.geekbang.org/infoq/9f/9fc7147c946d75d60af2fc737df0232f.png)
![](https://static001.geekbang.org/infoq/c8/c811e0e3baf7efbc8d891eaf9fe22142.png)
![](https://static001.geekbang.org/infoq/40/405b7319d415ba567045fe31c46c497e.png)
5:配置 Jenkins JDK 和 MavenJenkins 容器已经下载好了 jdk,通过 java -version 可以查看。通过 echo $JAVA_HOME 可以查看 jdk 安装目录。Maven 我使用的是 3.6.3 版本的。
![](https://static001.geekbang.org/infoq/e6/e63533e63854f52fa717fbf90de953ac.png)
![](https://static001.geekbang.org/infoq/5d/5dd0b33cc66d55cbd35b0eb1f7f836ae.png)
![](https://static001.geekbang.org/infoq/62/6203c50416defe6914b76c318a6af460.png)
6:安装 Maven 插件,在 Manage Jenkins - Manage Plugins - 可选插件中安装 Maven Integration,安装后再新建任务就出现了 Maven 项目可选项。
![](https://static001.geekbang.org/infoq/ab/abba064762e0f8103ba75f24547f9425.png)
![](https://static001.geekbang.org/infoq/71/7180389a739e183718384fb0c6118985.png)
7:将代码 push 到码云(可根据自己选择不同的代码库例如 Git、GitHub 等)7.1 首先在码云上新建仓库
![](https://static001.geekbang.org/infoq/64/64b31af3c162227747785877c6bf93a4.png)
7.2:将本地代码 push 到码云,右键工程 Team - share project,出现下面界面按顺序点击。然后再进行 commit 和 push 操作,URL 填从码云复制的 URL。
![](https://static001.geekbang.org/infoq/87/87d792db4e49d49cfa30685d87c1e8ff.png)
![](https://static001.geekbang.org/infoq/de/de4b2181e7a513b8bda90c6043073406.png)
![](https://static001.geekbang.org/infoq/d7/d7d7bc9a4ed73a8969048996d017b7c5.png)
第一次提交会出现以下报错,因为是没有选择提交分支。
![](https://static001.geekbang.org/infoq/e9/e9a244d20a2cc2aefe09fcc1f70d7b17.png)
解决方案:右键工程 Team - Remote - Push,再按如下操作即可将代码 push 到码云。
![](https://static001.geekbang.org/infoq/44/44b0b55e1cefe4df1796b7278f52b5eb.png)
8:Jenkins 配置码云 8.1:新建 maven 工程
![](https://static001.geekbang.org/infoq/6d/6de0b0472e0a0ea1b58eb8c6dcad5547.png)
8.2:添加码云工程代码连接,注意,credentials 里面的用户名和密码是码云的账号密码。Build 中的命令根据工程来,此处本测试工程 pom 文件是 maven 最初始化的,故一个 clean package 命令够了。
![](https://static001.geekbang.org/infoq/68/68cfa14392cdf95289d4a03dd9e721ea.png)
![](https://static001.geekbang.org/infoq/67/673812443bc8efc9beb8331d058703d1.png)
8.3:Post Steps 选择执行 shell。此步骤是在打包完后进行的操作,即启动工程。
![](https://static001.geekbang.org/infoq/78/78d0037dfe6736d8cf9105a57e481b6b.png)
!/bin/bash
#服务名称 SERVER_NAME=jenkins-maven-server#工程所在路径(根据自己情况进行调整)APP_HOME=pwd
#maven 打包后的 jar 包名 JAR_NAME=jenkins-maven-server-0.0.1-SNAPSHOT.jar#jar 包的目录 JAR_PATH=${APP_HOME}/target
#杀死之前的进程 PID_FILE="{SERVER_NAME}".pidif [ -f "${PID_FILE}" ];thenPID=cat "$PID_FILE"
&& kill -9 PID && echo "kill process "{PID}" finished!"fi
cd $JAR_PATH
#修改文件权限 chmod 755 $JAR_NAME
#启动服务 BUILD_ID=dontKillMe nohup java -jar $JAR_NAME &
#将新进程 ID 写到文件中 JAVA_PID={JAVA_PID}" > "${PID_FILE}"
8.4:保存好工程配置后,点击立即构建,即可进行代码拉取、构建打包、启动服务。
![](https://static001.geekbang.org/infoq/3b/3b2f5b4b1a59ee693ba0f9da5ac65a6a.png)
8.5:最后在浏览器访问你的工程接口就可以了。
![](https://static001.geekbang.org/infoq/27/27a212341b3dcef61b2ab4982802700a.png)
注意:在启动容器的时候需要将你工程的端口加上,这样外界才能访问你的工程。例如这里的是 10858。docker run -p 8080:8080 -p 10858:10858 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
![](https://static001.geekbang.org/infoq/fa/fa2a255b3584f8ed85a540a4f75210e1.png)
版权声明: 本文为 InfoQ 作者【陈皮的JavaLib】的原创文章。
原文链接:【http://xie.infoq.cn/article/0d4115b25badacddfae73531d】。未经作者许可,禁止转载。
评论