Docker+Jenkins+Gitee实现maven项目CI或CD

一、前提

环境
  1. OS:centos8
  2. 云服务器:阿里云
  3. JDK:1.8
  4. Docker:20.10.7
  5. Jenkins容器:jenkinsci/blueocean:latest
  6. Maven:3.8.2
  7. Maven项目:springboot
  8. Git: 2.32.0.windows.2
前提知识
1. shell
  1. 推荐文章: JavaGuide的Shell篇
  2. 强调:理解linux挂载
2. docker
  1. 推荐文章: 奇客谷

  2. 强调:理解Dockerfile中命令

3. Jenkins
  1. 推荐文章: 奇客谷
4. Git
  1. 推荐文章:廖雪峰

二、安装软件

1. centos8下载Docker
  1. 官方安装文档
2. 在Docker下载Jenkins
  1. 官方安装文档

三、在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
  1. 搜索这个三个插件,然后打勾,最后点击Install without restart安装并重启
  2. 安装完成后点击重启Jenkins
配置Jenkins
1. 登录Jenkins可视化界面: http://IP地址:8080/ 具体过程看奇客谷教程
2. 配置JDK
  1. 点击系统管理
    系统管理

  2. 选择全局工具配置全局工具配置
    3. 点击新增JDK
    jdk

  3. 别名随便写

  4. JAVA_HOME

    1. 登录Jenkins容器:在centos8服务器输入docker exec -it 容器ID /bin/bash
    2. 在命令行中输入echo $JAVA_HOME,centos8回显的值赋值给上图的JAVA_HOME
      JAVA_HOME
3. 配置maven
  1. 在centos8安装maven 参考文章:linux(centos8)下安装maven - 简书 (jianshu.com)

  2. 把下载的maven项目送到Jenkins容器中

    1. 在maven容器创建/usr/local/maven3目录

    2. docker cp 要拷贝的文件路径 容器ID:要拷贝到容器里面对应的路径(例子:docker cp /usr/local/maven3 12dd1df5df09:/usr/local/maven3)

    3. 验证是否成功
      cpMaven
      4. 在Jenkins可视化中全局工具配置(和查找JDK配置时一样)修改Maven配置maven配置

      1. 新增Mavenmaven安装

      2. 注意:关于Maven的路径根据自己放在Jenkins容器中的路径

      3. 配置Maven为环境变量

        1. 查看Jenkins环境变量 Jenkins容器中输入命令:env

        2. vi /etc/profile,在PATH添加maven路径(如下图)
          maven环境变量

        3. source /etc/profile

        4. mvn -version验证是否成功

        5. 防止重新打开终端,maven环境变量无,在命令行输入以下指令
          1. vi ~/.bashrc
          2. 在该文件添加 source /etc/profile,然后退出
          3. source ~/.bashrc

        6. 记得保存该容器为镜像,不然重新运行运行该容器,则maven的配置由于没有保存则maven要重新设置。

4. 配置Docker
  1. 进入系统配置系统配置

  2. 下滑到最后,点击cloud下的链接cloud

  3. 添加docker并点击Test Connection(会显示失败,接着往下操作)docker

  4. 开放centos8的docker供Jenkins调用

    1. 在centos8命令行输入
      vi /lib/systemd/system/docker.service
    2. 找到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

opendocker

  1. 然后 输入systemctl daemon-reload和sudo service docker restart

  2. 再测试一次

编写Jenkins项目
1. 创建Jenkins项目

创建Jenkins项目

2. 添加源码管理

git地址

3. 编写shell脚本
#!/bin/sh 
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

shell脚本

4. 点击保存

结果

1. 进入创建的Jenkins项目

item

2. 点击立即构建并在立即构建下面查看运行结果

立即构建

3. 访问http://IP地址:12001/jenkins.docker/auto查看结果

result

遇到的问题

  1. Jenkins账号密码忘记:

    解决方案

  2. 查看端口号所在进程号

    1. netstat -nap | grep 端口号
  3. Jenkins项目执行步骤:先拉取gitee代码,再执行shell

  4. 注意要开放云服务器的端口,不然会被防火墙阻挡

  5. 挂载时,容器的目录要存在

  6. 出现mvn找不到的原因

    1. 由于shell版本没有加#!/bin/sh 故jenkins执行shell采用非登录方式
    2. 参考资料 jenkins无法执行命令

还需改进地方

  1. gitee可以用私人的
  2. maven项目的容器可以发送到docker hub
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值