一、前提
环境
- OS:centos8
- 云服务器:阿里云
- JDK:1.8
- Docker:20.10.7
- Jenkins容器:jenkinsci/blueocean:latest
- Maven:3.8.2
- Maven项目:springboot
- Git: 2.32.0.windows.2
前提知识
1. shell
- 推荐文章: JavaGuide的Shell篇
- 强调:理解linux挂载
2. docker
-
推荐文章: 奇客谷 -
强调:理解Dockerfile中命令
3. Jenkins
- 推荐文章: 奇客谷
4. Git
- 推荐文章:廖雪峰
二、安装软件
1. centos8下载Docker
- 官方安装文档
2. 在Docker下载Jenkins
- 官方安装文档
三、在Docker中运行Jenkins
1. 在centos8输入命令
docker run \
-d \
--rm \
-u root \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
四、Maven项目
1. 用idea创建一个springboot项目,端口号设置为12001
2. 目录
3. 控制器
@RestController
@RequestMapping("/jenkins.docker")
public class JenkinDockerController {
@GetMapping("/auto")
public String getAuto(){
return "lin";
}
}
4. Dockerfile
FROM java:8-jre-alpine
VOLUME /data
RUN mkdir /app
ADD ./target/all_student-0.0.1-SNAPSHOT.jar /app/all_student.jar
ENV TZ Asia/Shanghai
EXPOSE 12001
ENTRYPOINT java -Xms128m -Xmx256m -jar /app/all_student.jar
5. 上传到Gitee
1. 创建一个all_student仓库(注意:仓库要是开源的,不能是私人的)
2. 然后把本地maven项目上传到Gitee中all_student仓库
Jenkins项目
安装插件
1. 找到插件管理
2. 安装Gitee Plugin,Maven Integration Plugin和Docker Plugin
- 搜索这个三个插件,然后打勾,最后点击Install without restart安装并重启
- 安装完成后点击重启Jenkins
配置Jenkins
1. 登录Jenkins可视化界面: http://IP地址:8080/ 具体过程看奇客谷教程
2. 配置JDK
-
点击系统管理 -
选择全局工具配置 3. 点击新增JDK -
别名随便写 -
JAVA_HOME
- 登录Jenkins容器:在centos8服务器输入docker exec -it 容器ID /bin/bash
- 在命令行中输入echo $JAVA_HOME,centos8回显的值赋值给上图的JAVA_HOME
3. 配置maven
-
在centos8安装maven 参考文章:linux(centos8)下安装maven - 简书 (jianshu.com) -
把下载的maven项目送到Jenkins容器中
-
在maven容器创建/usr/local/maven3目录 -
docker cp 要拷贝的文件路径 容器ID:要拷贝到容器里面对应的路径(例子:docker cp /usr/local/maven3 12dd1df5df09:/usr/local/maven3) -
验证是否成功 4. 在Jenkins可视化中全局工具配置(和查找JDK配置时一样)修改Maven配置
-
新增Maven -
注意:关于Maven的路径根据自己放在Jenkins容器中的路径 -
配置Maven为环境变量
-
查看Jenkins环境变量 Jenkins容器中输入命令:env -
vi /etc/profile,在PATH添加maven路径(如下图) -
source /etc/profile -
mvn -version验证是否成功 -
防止重新打开终端,maven环境变量无,在命令行输入以下指令 1. vi ~/.bashrc 2. 在该文件添加 source /etc/profile,然后退出 3. source ~/.bashrc -
记得保存该容器为镜像,不然重新运行运行该容器,则maven的配置由于没有保存则maven要重新设置。
4. 配置Docker
-
进入系统配置 -
下滑到最后,点击cloud下的链接 -
添加docker并点击Test Connection(会显示失败,接着往下操作) -
开放centos8的docker供Jenkins调用
- 在centos8命令行输入
vi /lib/systemd/system/docker.service - 找到ExecStart,修改该值
ExecStart=/usr/bin/docker daemon -H fd://
改为
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
-
然后 输入systemctl daemon-reload和sudo service docker restart -
再测试一次
编写Jenkins项目
1. 创建Jenkins项目
2. 添加源码管理
3. 编写shell脚本
cd /var/jenkins_home/workspace/all_student
mvn clean install -Dmaven.test.skip=true
echo 'build all_student success'
cd /var/jenkins_home/workspace/all_student
docker build -f ./jenkins/Dockerfile -t all_student:uat .
echo 'build docker success'
docker stop all_studentt && docker rm all_student
docker run -d --network=host all_student:uat
4. 点击保存
结果
1. 进入创建的Jenkins项目
2. 点击立即构建并在立即构建下面查看运行结果
3. 访问http://IP地址:12001/jenkins.docker/auto查看结果
遇到的问题
-
Jenkins账号密码忘记: 解决方案 -
查看端口号所在进程号
- netstat -nap | grep 端口号
-
Jenkins项目执行步骤:先拉取gitee代码,再执行shell -
注意要开放云服务器的端口,不然会被防火墙阻挡 -
挂载时,容器的目录要存在 -
出现mvn找不到的原因
- 由于shell版本没有加#!/bin/sh 故jenkins执行shell采用非登录方式
- 参考资料 jenkins无法执行命令
还需改进地方
- gitee可以用私人的
- maven项目的容器可以发送到docker hub
|