Docker安装Jenkins

Jenkins官网:www.jenkins.io

Jenkins

Jenkins是一个开源的自动化部署工具,它能够持续地自动化构建、测试和部署软件项目。Jenkins通常用于构建、测试和部署Web应用程序,但也可以用于构建和测试其他类型的软件。

Jenkins提供了一个可扩展的插件系统,使得它可以轻松地与其他工具和技术集成。它支持各种版本控制系统(如Git、SVN等)、构建工具(如Maven、Gradle等)以及测试框架(如JUnit、Selenium等)。通过使用这些插件,Jenkins能够自动执行构建、测试和部署操作,并提供详细的报告和日志信息,方便开发人员跟踪和分析项目的状态和问题。

Jenkins还具有强大的可配置性和灵活性,使得它能够满足各种不同的需求和工作流程。它可以在本地计算机、服务器、Docker容器等各种环境中运行,也可以在云端进行部署和管理。

使用Jenkins有以下几个主要原因

  1. 自动化构建、测试和部署:Jenkins可以自动执行构建、测试和部署操作,从而减少了手动操作的时间和错误率,提高了软件交付的质量和效率。
  2. 可扩展性和灵活性:Jenkins提供了一个可扩展的插件系统,使得它可以与各种不同的工具和技术集成,从而满足不同项目的需求和工作流程。
  3. 实时报告和日志:Jenkins能够实时生成报告和日志信息,帮助开发人员及时跟踪和分析项目的状态和问题,从而更快地解决问题。
  4. 支持多种环境和部署方式:Jenkins可以在本地计算机、服务器、Docker容器等多种环境中运行,并支持云端部署和管理,从而满足不同团队和组织的需求。
  5. 开源和免费: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

  1. 进入 首页 -- 系统管理 -- 插件管理 -- 可选插件 界面
  2. 搜索 git 插件,点击安装即可
  • git配置插件可看《Jenkins配置 目录中的 git

NodeJs

  • 搜索插件
  1. 进入 首页 -- 系统管理 -- 插件管理 -- 可选插件 界面
  2. 搜索 nodejs 插件,点击安装即可
  • 配置插件
  1. 进入 首页 -- 系统管理 -- 全局工具配置 界面
  2. 找到 NodeJS 配置栏

Publish Over SSH

  • 搜索插件
  1. 进入 首页 -- 系统管理 -- 插件管理 -- 可选插件 界面
  2. 搜索 ssh 插件,点击安装即可
  • 配置插件
  1. 进入 首页 -- 系统管理 -- 系统配置 界面
  2. 找到 SSH Servers 配置栏

Maven

  • 搜索插件
  1. 进入 首页 -- 系统管理 -- 插件管理 -- 可选插件 界面
  2. 搜索 Maven Integration 插件,点击安装即可
  • Maven配置插件可看《Jenkins配置 目录中的 Maven

Localization: Chinese (Simplified)

  • 搜索插件
  1. 进入 首页 -- 系统管理 -- 插件管理 -- 可选插件 界面
  2. 搜索 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

Git

相关推荐
漫谈网络22 天前
SSHv2 密钥交换(Key Exchange)详解
运维·ssh·自动化运维·devops·paramiko·sshv2
CJWbiu1 个月前
Github Action + docker 实现自动化部署
前端·自动化运维
rainsc1 个月前
Singularity使用
运维·自动化运维
周天天1 个月前
linux 服务器一步部署jar包,并设置开机自启动和使用systemcl进行服务管理
运维·自动化运维
ygria2 个月前
0成本,使用Github Action做一个外语PDF翻译工作流
github·自动化运维
Stirner2 个月前
MCP 实现网站自动监控,口语化批量运维域名
http·llm·自动化运维
ygria2 个月前
用Cloudflare Worker做一个微信封面图生成服务
自动化运维
中二少年学编程2 个月前
electron+robotjs实现自动化办公功能,使用robotjs时的报错解决
electron·自动化运维
外滩运维专家2 个月前
多场景消息推送方案实践:基于Spug推送平台的技术实现
后端·敏捷开发·自动化运维
IT成长日记2 个月前
Ansible命令行模式常用模块使用案例(三)
linux·ansible·自动化运维·ad-hoc 模式)