Jenkins官网:www.jenkins.io
Jenkins
Jenkins是一个开源的自动化部署工具,它能够持续地自动化构建、测试和部署软件项目。Jenkins通常用于构建、测试和部署Web应用程序,但也可以用于构建和测试其他类型的软件。
Jenkins提供了一个可扩展的插件系统,使得它可以轻松地与其他工具和技术集成。它支持各种版本控制系统(如Git、SVN等)、构建工具(如Maven、Gradle等)以及测试框架(如JUnit、Selenium等)。通过使用这些插件,Jenkins能够自动执行构建、测试和部署操作,并提供详细的报告和日志信息,方便开发人员跟踪和分析项目的状态和问题。
Jenkins还具有强大的可配置性和灵活性,使得它能够满足各种不同的需求和工作流程。它可以在本地计算机、服务器、Docker容器等各种环境中运行,也可以在云端进行部署和管理。
使用Jenkins有以下几个主要原因
- 自动化构建、测试和部署:Jenkins可以自动执行构建、测试和部署操作,从而减少了手动操作的时间和错误率,提高了软件交付的质量和效率。
- 可扩展性和灵活性:Jenkins提供了一个可扩展的插件系统,使得它可以与各种不同的工具和技术集成,从而满足不同项目的需求和工作流程。
- 实时报告和日志:Jenkins能够实时生成报告和日志信息,帮助开发人员及时跟踪和分析项目的状态和问题,从而更快地解决问题。
- 支持多种环境和部署方式:Jenkins可以在本地计算机、服务器、Docker容器等多种环境中运行,并支持云端部署和管理,从而满足不同团队和组织的需求。
- 开源和免费:Jenkins是一个开源的工具,可以免费使用和定制,同时也有一个庞大的社区支持和维护。
Docker安装Jenkins
bash
docker run -d -u root
--name jenkins
--restart=always
--privileged=true
--pid=host
-p 8180:8080 -p 50000:50000 -p 15340:15340
-v /jenkins/jenkins_home:/var/jenkins_home
-v /jenkins/logs:/var/log/jenkins
-v /jenkins/docker.sock:/var/run/docker.sock
-v /jenkins/docker:/usr/bin/docker
-v /application:/application
-v /opt/maven/apache-maven-3.9.9:/var/maven
-v /etc/localtime:/etc/localtime:ro
jenkins/jenkins:latest-jdk17
以下是对以上命令的逐行中文解释,包括参数的作用和潜在注意事项:
命令解释
bash
# -d:以"分离模式"(后台)运行容器。
# u root:以 `root` 用户身份运行容器(虽然方便,但存在安全隐患,建议仅在必要时使用)。
docker run -d -u root
# 将容器命名为 `jenkins`(便于后续管理)。
--name jenkins
# 容器退出时自动重启(确保服务高可用)。
--restart=always
# 赋予容器特权模式(容器将拥有主机设备的完全访问权限,慎用)。
--privileged=true
# 共享主机的进程命名空间(容器内可查看和操作主机进程,常用于调试,但有安全风险)。
--pid=host
# -p 8180:8080:将主机的 `8180` 端口映射到容器的 `8080` 端口(Jenkins Web 界面)。
# -p 50000:50000:用于 Jenkins 代理(Agent)通信。
# -p 15340:15340:自定义端口(用途需根据实际场景定义,如调试或其他服务)。
-p 8180:8080 -p 50000:50000 -p 15340:15340
# 持久化 Jenkins 数据(配置、插件等)。
-v /jenkins/jenkins_home:/var/jenkins_home
# 挂载 Jenkins 日志目录(便于查看日志)。
-v /jenkins/logs:/var/log/jenkins
# 挂载 Docker 守护进程的套接字(使容器内可直接调用主机 Docker,需谨慎:等同于赋予容器内 Docker 控制权)。
-v /jenkins/docker.sock:/var/run/docker.sock
# 挂载主机 Docker 客户端二进制文件(确保容器内 Docker 版本与主机一致)。
-v /jenkins/docker:/usr/bin/docker
# 共享主机 `/application` 目录到容器(用途需自定义)。
-v /application:/application
# 挂载 Maven 工具(需在容器内配置环境变量 `PATH` 或 `MAVEN_HOME`)。
# 将 `/opt/maven/apache-maven-3.9.9` 挂载到 `/var/maven` 下(前提需要在服务器种配置 Maven3.9.9 环境)
-v /opt/maven/apache-maven-3.9.9:/var/maven
# 同步主机与容器时区(`ro` 表示只读挂载)。
-v /etc/localtime:/etc/localtime:ro
# 使用官方 Jenkins 镜像,基于 JDK 17 的最新版本(适合需要 Java 17 环境的项目)
jenkins/jenkins:latest-jdk17
使用docker exec -it jenkins /bin/bash
进入 Jenkins
内部执行命令 java -version
以及 git --version
命令 可以看出来使用容器方式安装的
Jenkins
,容器内已经默认安装好 JDK
GIT
了。 以上命令执行完成后,那么就可以使用http://47.109.156.181:8180/
访问Jenkins页面。
Jenkins登录以及密码
进入容器,查看
/var/jenkins_home/secrets/initialAdminPassword
文件获取密码。
shell
# 进入容器
docker exec -it jenkins /bin/bash
# 查看密码
cat /var/jenkins_home/secrets/initialAdminPassword
输入密码后,出现如下界面,推荐选择第一种,选择后等待插件安装。
创建一个 root 用户,密码:123456 ,并进行登录。 登录成功后进入如下页面。
Jenkins插件安装
清华大学开源软件镜像站:mirrors.tuna.tsinghua.edu.cn/jenkins/plu...
Git
- 进入
首页
--系统管理
--插件管理
--可选插件
界面 - 搜索
git
插件,点击安装即可
git
配置插件可看《Jenkins配置 目录中的 git》
NodeJs
- 搜索插件
- 进入
首页
--系统管理
--插件管理
--可选插件
界面 - 搜索
nodejs
插件,点击安装即可
- 配置插件
- 进入
首页
--系统管理
--全局工具配置
界面 - 找到
NodeJS
配置栏
Publish Over SSH
- 搜索插件
- 进入
首页
--系统管理
--插件管理
--可选插件
界面 - 搜索
ssh
插件,点击安装即可
- 配置插件
- 进入
首页
--系统管理
--系统配置
界面 - 找到
SSH Servers
配置栏
Maven
- 搜索插件
- 进入
首页
--系统管理
--插件管理
--可选插件
界面 - 搜索
Maven Integration
插件,点击安装即可
Maven
配置插件可看《Jenkins配置 目录中的 Maven》
Localization: Chinese (Simplified)
- 搜索插件
- 进入
首页
--系统管理
--插件管理
--可选插件
界面 - 搜索
Localization: Chinese (Simplified)
插件,点击安装即可
最新版的 Jenkins 可能存在翻译不全或不生效情况
Jenkins代理配置
修改Jenkins插件下载源地址:mirrors.tuna.tsinghua.edu.cn/jenkins/upd...
Jenkins配置时区
Jenkins时区配置及定时构建
在使用Jenkins的时候如果没有配置时区,默认使用的是UTC时间,这样任务构建显示的时间点和定时构建配置的时间点就不会按北京时间去触发,如果用UTC去配置定时构建也麻烦,最好从根本上把Jenkins的时区配置成北京时间,本文介绍下Jenkins容器的时区配置及Jenkins定时构建的配置方式。
Shell
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')
在这条命令执行完之后,之后可以看到历史构建记录的时间戳显示的是北京时间,但是这种配置方式有一个问题,构建触发器的Build Periodically
定时构建使用的还是UTC的时间,并不是北京时间,而且在Jenkins
服务重启之后这个配置就失效了。 点击运行直到出现
Result: Asia/Shanghai
Jenkins配置
JDK
Shell
# 进入容器
docker exec -it jenkins /bin/bash
# 查看Jenkins中Java安装位置
echo $JAVA_HOME
Maven
因为我们之前使用命令-v /opt/maven/apache-maven-3.9.9:/var/maven
将宿主机/opt/maven/apache-maven-3.9.9
挂载到了/var/maven
下,所以我们配置MAVEM_HOME
时指向的是/var/maven
。配置Maven
全局工具配置时,指向的是/var/maven/conf/settings.xml
。