使用Docker运行Jenkins容器,并构建Maven项目,自动部署

  • 准备Docker环境:

Linux安装Docker(Centos)_Broad sky的博客-CSDN博客

  • 安装JDK、Maven、Git

1.安装JDK:

官网下载地址: Java Downloads | Oracle 中国

# 解压缩
sudo tar -zxvf jdk-8u361-linux-x64.tar.gz

# 配置环境变量
vi /etc/profile

# 在文件最后插入下面这段
JAVA_HOME=/usr/local/java/jdk1.8.0_361
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

# 保存退出后重新加载配置
source /etc/profile

# 测试
java -version

1.安装maven:

重点:maven去官网下载后扔到服务器解压,用这种方式安装。不要用yum的方式安装,挂载到jenkins容器会不识别!!!重要的事情说三遍:

Maven不要用yum的方式安装,挂载到jenkins容器会不识别!!!

Maven不要用yum的方式安装,挂载到jenkins容器会不识别!!!

Maven不要用yum的方式安装,挂载到jenkins容器会不识别!!!

Maven官网:Maven – Download Apache Maven

# 解压缩,一般放在/usr/local/maven下
sudo tar -zxvf apache-maven-3.9.0-bin.tar.gz 

# 配置环境变量
vi /etc/profile

# 在文件最后插入下面这段
MAVEN_HOME=/usr/local/maven/apache-maven-3.9.0
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME PATH

# 保存退出后重新加载配置
source /etc/profile

# 测试
mvn -v

 maven配置文件这里不多赘述,推荐把依赖库设置在apache-maven-3.9.0目录下,即挂载到容器的目录下,这样可以避免容器移除后,新启动的jenkins容器还需要重新下载依赖的情况。

2.安装Git:        

sudo yum install -y git

git无所谓了,想怎么按怎么按,有就行,按完甚至不用在jenkins里配置。

3.安装JDK:        jenkins镜像中会自带openjdk,但是一般是11的,强制需要jdk8的请降低镜像版本。

  • 启动Jenkins容器

docker run \
  -u root \
  --restart=always \
  -d \
  -p 5343:8080 \
  -p 50000:50000 \
  -v /usr/local/jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/local/maven/apache-maven-3.9.0:/usr/local/maven \
  --name jenkins \
jenkins/jenkins:lts

参数解释

-u root        获取容器root权限;

--restart=always         (可选)docker启动时,容器自动重启;

-d                后台运行;

-p 5343:8080               映射(例如“发布”)jenkinsci/blueocean 容器的端口8080到主机上的端口8080。 第一个数字代表主机上的端口,而最后一个代表容器的端口。因此,如果您为此选项指定 -p 49000:8080 ,您将通过端口49000访问主机上的Jenkins。

-p 50000:50000            (可选)将 jenkinsci/blueocean 容器的端口50000 映射到主机上的端口50000。 如果您在其他机器上设置了一个或多个基于JNLP的Jenkins代理程序,而这些代理程序又与 jenkinsci/blueocean 容器交互(充当“主”Jenkins服务器,或者简称为“Jenkins主”), 则这是必需的。默认情况下,基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主站进行通信。 您可以通过“ 配置全局安全性” 页面更改Jenkins主服务器上的端口号。如果您要将您的Jenkins主机的JNLP代理端口的TCP端口 值更改为51000(例如),那么您需要重新运行Jenkins(通过此 docker run …​命令)并指定此“发布”选项 -p 52000:51000,其中最后一个值与Jenkins master上的这个更改值相匹配,第一个值是Jenkins主机的主机上的端口号, 通过它,基于JNLP的Jenkins代理与Jenkins主机进行通信 - 例如52000。

-v /usr/local/jenkins-data:/var/jenkins_home(可选,但强烈建议)映射在容器中的`/var/jenkins_home` 目录到具有名字 jenkins-data 的volume。 如果这个卷不存在,那么这个 docker run 命令会自动为你创建卷。 如果您希望每次重新启动Jenkins(通过此 docker run ... 命令)时保持Jenkins状态,则此选项是必需的 。 如果你没有指定这个选项,那么在每次重新启动后,Jenkins将有效地重置为新的实例。
注意: 所述的 jenkins-data 卷也可以 docker volume create命令创建: docker volume create jenkins-data 代替映射 /var/jenkins_home 目录转换为Docker卷,还 可以将此目录映射到计算机本地文件系统上的目录。 例如,指定该选项 -v $HOME/jenkins:/var/jenkins_home 会将容器的 /var/jenkins_home 目录映射 到 本地计算机上目录中的 jenkins 子目录, 该$HOME目录通常是 /Users/<your-username>/jenkins 或`/home/<your-username>/jenkins` 。

-v /var/run/docker.sock:/var/run/docker.sock(可选 /var/run/docker.sock 表示Docker守护程序通过其监听的基于Unix的套接字。 该映射允许 jenkinsci/blueocean 容器与Docker守护进程通信, 如果 jenkinsci/blueocean 容器需要实例化其他Docker容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含agent部分用 docker
例如, agent { docker { ... } } 此选项是必需的。 在Pipeline Syntax 页面上阅读更多关于这个的信息 。

-v /usr/local/maven/apache-maven-3.9.0:/usr/local/maven  将宿主机的maven目录映射到容器内。

--name jenkins 容器名称:jenkins

jenkins/jenkins:lts  以长期支持维护版的jenkins镜像启动。笔者下载该镜像时,镜像的java环境已经升到了jdk11,也就是启动后容器内会自带openjdk11。国内项目基本使用的是jdk8,用jdk11构建项目可能会有问题。如果出现构建问题,则需要降低版本到使用jdk8的jenkins镜像。但大部分项目应该是兼容的。

  • 初始密码查看

        启动容器后,输入ip端口进入jenkins页面,这里可能需要等待一小会,jenkins项目完全启动需要一些时间。之后进入页面会需要初始密码。这里回到shell页面,执行docker logs jenkins,查看docker容器日志,获得初始密码。实在弄不明白查看官方文档:安装Jenkins

        之后会进行一些Jenkins初始配置,安装插件时推荐选择新手插件安装,其他的不多赘述,随意即可。

  • 安装插件

Dashboard->系统管理->插件管理->可选插件

搜索并安装这三个插件:Maven、Publish Over SSH、Gitee

安装细节不多赘述,不太清楚的请自行百度。

  • 配置插件

 Dashboard->系统管理->系统配置

首先是Gitee插件配置

Publish over SSH 插件配置

  •  Jenkins构建项目所需环境配置

Dashboard->系统管理->全局工具配置

JDK配置

Maven配置

  •  创建一个maven项目的任务

 Dashboard->新建任务

 

 配置代码源

 配置构建前步骤

 

 

 构建配置

配置构建后步骤

 

 保存,到这里所有配置工作已经完成。

  • 构建项目

 回到首页,选择进入配置好的项目,点击立即构建

 PS:刚开始配置肯定会出各种问题,尤其是构建前和构建后那块是重灾区。解决方法是:可以选择一点一点配置,配置一点就测试一点。比如构建前那块,配置一点就构建项目执行一下,看看是不是预期想要的效果。不要配置一堆一起构建,出现问题很难找原因。

  • 扩展

本篇介绍的是最基础的自动构建配置,熟悉之后可以选择配置docker镜像。即每次构建项目,先删除原有docker镜像,再发送文件,根据jar包和dockerfile生成新镜像,并根据新镜像启动容器。思路和本篇介绍的大同小异。

之后会介绍根据pipeline形式构建任务,这也是大部分企业的选择。该形式更加自由简洁,搭配蓝海UI后使构建过程更加直观。但使用前需要了解pipeline语法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值