-
准备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语法。