Jenkins
简介
Jenkins是一款开源的持续集成(Continuous Integration)和持续部署(Continuous Deployment)软件,用于自动化各种任务,包括构建、测试和部署软件。
Docker 安装 jenkins 镜像
docker pull jenkins/jenkins:2.507-jdk17
docker-compose-jenkins.yml
文件内容:
services:
# 自定义的服务名
jenkins:
image: jenkins/jenkins:2.507-jdk17
# 容器名称
container_name: jenkins
# 特权模式,允许容器访问主机上所有设备
privileged: true
# 默认情况下,Jenkins镜像会以非特权用户如`jenkins`运行。使用root是为了确保容器拥有足够的特权来执行Docker命令。
user: root
ports:
# 将 Jenkins 的 Web 界面(默认运行在容器的 8080 端口)映射到宿主机的 9090 端口。
- "9090:8080"
# Jenkins 的 JNLP(Java Network Launch Protocol)代理通信端口(默认运行在容器的 50000 端口)映射到宿主机的 50001 端口
- "50001:50000"
volumes:
# 挂载volumes jenkins_home 数据卷,存储所有jenkins的配置、插件和作业数据
- jenkins_home:/var/jenkins_home
# 在Jenkins中使用Docker命令
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
environment:
# 禁止安装向导,配置为false,jenkins不要求设置密码,也不在一开始安装插件。如果需要安装向导可以注释掉这个配置。当需要获取初始管理员密码时,执行 docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 查看
- JAVA_OPTS=-Djenkins.install.runSetupWizard=false
# 重启策略:宿主机重启或容器意外停止时,自动重启。手动停止不自动重启。
restart: unless-stopped
volumes:
# 定义了名为 jenkins_home 的 Docker 数据卷
jenkins_home:
使用docker compose
启动jenkins服务:
# -f 指定Compose文件路径,up命令用于启动服务,-d表示分离模式运行容器(后台运行)
docker compose -f docker-compose-jenkins.yml up -d
访问localhost:9090
即可。
插件安装
右上角系统管理
> 系统配置
> 插件管理
在Avaliable plugins
下查找插件进行安装:
chinese
:中文包maven
git
docker
因为网络问题,可能会提示失败。可以再搜索对应插件,重新下载。

勾选安装完成后重启Jenkins:

也可以通过Portainer勾选对应的容器进行重启:
全局工具配置
右上角系统管理
> 系统配置
> 全局工具配置
JDK安装 - 新增JDK
JAVA_HOME
的路径可以去jenkins容器中通过which java
查看。Git installations
Maven 安装
要勾选
自动安装
Docker 安装
Installation root
填写/user/local/bin
配置完成后,最后保存即可。
添加凭证
右上角系统管理
> 安全
> 凭据管理
添加代码托管平台的Username with password
,描述可以填写是用于什么平台的凭据,后续拉取代码,选择相应凭证即可:

新建任务
以jenkins部署为例,采用的代码仓库:
https://gitcode.net/KnowledgePlanet/road-map/xfg-dev-tech-jenkins.git
一个任务就是一条构建发布部署项目的操作。

填写任务名称,选择构建一个maven项目
配置任务
源码管理
选择Git
:
Repository URL
填写目标代码仓库的地址Credentials
选择对应代码仓库的凭证
Build
配置Maven:
Root POM
填写pom.xml
Goals and options
填写clean install -Dmaven.test.skip=true

Post Steps
选择Run regardless of build result

Add post-build step
> 执行 Shell
:

填写命令:
# 先删除之前的容器和镜像文件
if [ "$(docker ps -a | grep xfg-dev-tech-app)" ]; then
docker stop xfg-dev-tech-app
docker rm xfg-dev-tech-app
fi
if [ "$(docker images -q xfg-dev-tech-app)" ]; then
docker rmi xfg-dev-tech-app
fi
# 重新生成
cd /var/jenkins_home/workspace/xfg-dev-tech-jenkins/xfg-dev-tech-app
docker build -t xiaofuge/xfg-dev-tech-app .
docker run -itd -p 8091:8091 --name xfg-dev-tech-app xiaofuge/xfg-dev-tech-app
填写完成后,save即可。
测试验证
立即构建
选择任务,立即构建
,再选择相应的构建流水线 > 控制台输出
,可以查看构建详情。


构建成功的结果会输出Finished: SUCCESS
:

验证结果
可以在Portainer中查看到已经创建了对应的容器:
访问应用的接口能正常获取返回:
说明自动化构建应用成功。