前期准备
提前安装jdk、maven、nodeJs(如果需要的话)
创建 jenkins 环境目录,用来当做挂载卷
/data/jenkins/
一:拉取 Jenkins 镜像
docker pull jenkins/jenkins:lts
二:设置 Jenkins挂载目录
mkdir -p ~/jenkins_home
sudo chown 1000:1000 ~/jenkins_home
三:启动 Jenkins 容器
docker run -p 80:8080 -p 81:50000 \
--restart always \
-e JAVA_OPTS="-Djava.io.tmpdir=/xxxx/tmp" \
-v /data/jenkins/tmp:/xxxx/tmp \
-v /data/jenkins/data:/var/jenkins_home\
-v /data/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8 \
-v /data/jenkins/repository:/opt/maven/repository \
-v /data/jenkins/jdk1.8.0_431:/opt/jdk/jdk1.8.0_431 \
-v /data/jenkins/node-v18.18.0-linux-x64:/opt/node/node-v18.18.0-linux-x64 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /etc/localtime:/etc/localtime \
--name jenkins \
-d jenkins/jenkins:lts
1. 端口映射
-p 80:8080 -p 81:50000
-p 80:8080
:将主机的 80 端口映射到容器的 8080 端口,这通常是 Jenkins 的 Web 界面端口。-p 81:50000
:将主机的 81 端口映射到容器的 50000 端口,这是 Jenkins 用于节点通信的端口。
2. 重启策略
--restart always
--restart always
:确保容器在崩溃或重启后自动重启。此设置适用于生产环境中的容器,确保容器始终运行。
3. 环境变量
-e JAVA_OPTS="-Djava.io.tmpdir=/xxxx/tmp"
-e JAVA_OPTS="-Djava.io.tmpdir=/xxxx/tmp"
:设置 Java 启动参数,指定临时文件目录为 /xxxx/tmp
。这对于自定义 Jenkins 临时文件存储位置很有用。
4. 挂载卷
-v /data/jenkins/tmp:/xxxx/tmp
-v /data/jenkins/data:/var/jenkins_home
-v /data/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8
-v /data/jenkins/repository:/opt/maven/repository
-v /data/jenkins/jdk1.8.0_431:/opt/jdk/jdk1.8.0_431
-v /data/jenkins/node-v18.18.0-linux-x64:/opt/node/node-v18.18.0-linux-x64
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
-v /etc/localtime:/etc/localtime
-v /data/jenkins/tmp:/xxxx/tmp
:将宿主机/data/jenkins/tmp
目录挂载到容器中的/xxxx/tmp
,用于存储临时文件。-v /data/jenkins/data:/var/jenkins_home
:将宿主机 Jenkins 数据存储目录/data/jenkins/data
挂载到容器中的 Jenkins 主目录/var/jenkins_home
,用于持久化 Jenkins 配置和数据。-v /data/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8
:将 Maven 版本 3.8.8 的目录挂载到容器中,使 Jenkins 使用宿主机上的 Maven。-v /data/jenkins/repository:/opt/maven/repository
:将宿主机上的 Maven 本地仓库挂载到容器中的相应路径。-v /data/jenkins/jdk1.8.0_431:/opt/jdk/jdk1.8.0_431
:将宿主机上的 JDK 1.8 挂载到容器中,确保 Jenkins 使用正确的 JDK。-v /data/jenkins/node-v18.18.0-linux-x64:/opt/node/node-v18.18.0-linux-x64
:将 Node.js 18.x 挂载到容器中,使 Jenkins 可以使用此版本的 Node.js。-v /var/run/docker.sock:/var/run/docker.sock
:使容器能够与宿主机上的 Docker 守护进程通信,允许 Jenkins 运行 Docker 容器。-v /usr/bin/docker:/usr/bin/docker
:将宿主机的 Docker 二进制文件挂载到容器中,以便 Jenkins 使用宿主机的 Docker 运行命令。-v /etc/localtime:/etc/localtime
:同步容器的时间与宿主机的时间。
四:Jenkins 相关配置
1. 解锁 Jenkins
首次登录 Jenkins 控制台时,你需要解锁 Jenkins,通常会显示一个页面提示你输入解锁密钥。
- 步骤:
- 查找解锁密钥文件,通常文件位于宿主机的
/var/jenkins_home/secrets/initialAdminPassword
。 - 可以通过以下命令查看密钥:
cat /data/jenkins/data/secrets/initialAdminPassword
- 查找解锁密钥文件,通常文件位于宿主机的
2. 安装推荐插件
解锁后,Jenkins 会引导你选择是否安装推荐的插件,建议选择安装 推荐插件,它包括许多常用的插件,如 Git、Maven 等。
- 步骤:
- 在解锁后页面中选择
Install suggested plugins
,Jenkins 会自动下载并安装所有推荐插件。
- 在解锁后页面中选择
3. 创建管理员用户
在安装完插件后,Jenkins 会让你创建一个管理员用户。
- 步骤:
- 填写管理员用户名、密码、全名和电子邮件地址。
- 如果不想创建用户,可以选择
Continue as Admin
(以管理员身份继续)。
4. 配置系统设置
接下来,你可以配置 Jenkins 的一些全局系统设置,包括 JDK、Maven 和 Node.js 等工具的路径。
配置 JDK
- 进入 Jenkins 控制台,点击
Manage Jenkins
(管理 Jenkins)。 - 选择
Global Tool Configuration
(全局工具配置)。 - 在 JDK 部分,配置你在 Docker 中挂载的 JDK 1.8 路径:
- JDK name:给 JDK 取个名字,比如
jdk1.8
。 - JAVA_HOME:填写 JDK 路径,例如
/opt/jdk/jdk1.8.0_431
。
- JDK name:给 JDK 取个名字,比如
- 点击保存。
配置 Maven
- 在 Global Tool Configuration 页面,找到 Maven 部分。
- 配置你挂载的 Maven 3.8.8 目录:
- Maven name:可以设为
maven3.8.8
。 - MAVEN_HOME:填写 Maven 的路径,例如
/opt/maven/apache-maven-3.8.8
。
- Maven name:可以设为
- 点击保存。
配置 Node.js
- 在 Global Tool Configuration 页面,找到 NodeJS 部分。
- 配置你挂载的 Node.js 版本:
- Name:可以设为
node-v18.18.0
。 - NodeJS installation directory:填写 Node.js 路径,例如
/opt/node/node-v18.18.0-linux-x64
。
- Name:可以设为
- 点击保存
5. 配置 Jenkins 插件
根据你的需求,你可能需要安装一些特定的插件,下面是常见的一些插件配置:
安装常用插件
你可以在 Manage Jenkins -> Manage Plugins 中安装以下插件:
- Git Plugin:用于 Git 仓库的集成。
- Docker Plugin:如果你打算在 Jenkins 中运行 Docker 容器。
- Maven Integration Plugin:用于支持 Maven 构建。
- NodeJS Plugin:支持 Node.js 构建。
配置 Docker 插件
- 在 Manage Jenkins -> Configure System 中找到 Docker 配置部分。
- 在 Docker Hosts 部分,添加 Docker 主机连接配置,通常配置如下:
- Docker Host URI:
unix:///var/run/docker.sock
(这是你在docker run
命令中挂载的路径)。 - 点击 Test Connection 测试连接是否成功
- Docker Host URI:
6:创建连接Git 凭据,用于拉取代码用
五:创建任务
1:点击 Dashboard 新视图
比如开发环境视图
2:点击 Dashboard 新建任务
新建后端maven任务
3:选择git凭据
4:选择代码url和分支
6:代码构建完成后,执行相关shell
根据每个项目不同,执行不同的命令
比如传统服务直接执行 java -jar 等命令直接启动服务
比如K8S、Docker这种云服务,可写打包镜像、推送镜像到 Docker 仓库、执行k8s相关命令拉取镜像进行容器启动等
然后点击完成
7:构建代码
右键找到刚才新建的任务,即可进行构建