欢迎来到Jenkins用户文档-为那些想要使用Jenkins的现有功能和插件特性的人。如果你想通过开发自己的Jenkins插件来扩展Jenkins的功能,请参考extend Jenkins(开发者文档)。
Jenkins是一个独立的、开源的自动化服务器,可用于自动化与构建、测试、交付或部署软件相关的各种任务。Jenkins可以通过本机系统包、Docker安装,甚至可以在安装了Java运行环境(JRE)的任何机器上独立运行。
帮助您启动并运行Jenkins,并向您介绍Jenkins的主要功能,管道。还有一些教程面向那些想要使用Pipeline和Blue Ocean在Jenkins中编排和自动化构建项目的开发人员。如果你以前从未使用过Jenkins或对Jenkins的经验有限,那么导览和介绍性教程是开始的好地方。如果您正在寻找有关使用Jenkins的更多详细信息,请参阅用户手册。
Jenkins是一个高度可扩展的产品,其功能可以通过安装插件来扩展。Jenkins有大量可用的插件。但是,本文档的导览、教程、解决方案页面和用户手册中涵盖的文档是基于安装了蓝海插件的Jenkins安装,以及在安装后安装向导中指定的“建议插件”。Activate
如果你想启动并运行Jenkins,请参见安装Jenkins,了解如何在你所支持的平台上安装Jenkins。如果你是一个典型的Jenkins用户(任何技能水平),想要了解更多关于Jenkins的使用,请参阅Using Jenkins。也可以参考单独的管道和蓝海章节了解更多关于Jenkins核心特性的信息。如果你是一个Jenkins管理员,想了解更多关于管理Jenkins节点和实例的知识,请参阅管理Jenkins。如果你是一个系统管理员,想学习如何备份,恢复,维护Jenkins服务器和节点,请参阅Jenkins系统管理。
章的小节Jenkins通常在自己的进程中作为独立应用程序运行。Jenkins WAR文件捆绑了Winstone,一个Jetty servlet容器包装器,并且可以在Jenkins支持的Java版本的任何操作系统或平台上启动。码头工人Kubernetes的理论上,Jenkins也可以在传统的servlet容器(如Apache Tomcat或WildFly)中作为servlet运行,但在实践中,这在很大程度上是未经测试的,并且有许多警告。特别是,对WebSocket代理的支持只针对Jetty servlet容器实现。详细信息请参见Servlet容器支持策略页面。Linux macOS Windows其他系统WAR文件其他Servlet容器离线安装初始设置
用于在称为“容器”(或Docker容器)的隔离环境中运行应用程序。像Jenkins这样的应用程序可以作为只读“镜像”(或Docker镜像)下载,每个镜像都作为容器在Docker中运行。Docker容器是Docker镜像的“运行实例”。Docker镜像是根据镜像更新的发布时间永久存储的,而容器是临时存储的。在Docker文档中的入门,第1部分:定向和设置中了解更多关于这些概念的信息由于Docker的基础平台和容器设计,给定应用程序(如Jenkins)的Docker镜像可以在任何支持的操作系统或运行Docker的云服务上运行。支持的操作系统包括macOS、Linux和Windows,支持的云服务包括AWS和Azure。
要在操作系统上安装Docker,请按照guide Tour先决条件中的说明进行操作。或者,访问Docker Hub,选择适合您的操作系统或云服务的Docker Community Edition。按照其网站上的安装说明进行操作。如果您在基于linux的操作系统上安装Docker,请确保您配置了Docker,以便可以以非root用户管理它。在Docker文档的Linux安装后步骤页面中了解更多信息。本页还包含了关于如何配置Docker启动的信息。
最低硬件要求:256mb RAM1gb的驱动器空间(虽然如果将Jenkins作为Docker容器运行,建议最小10gb)小型团队的推荐硬件配置:4gb以上的RAM50gb +的驱动器空间全面硬件建议:软件要求:硬件:请参见硬件建议页面Java:请参见Java Requirements页面Web浏览器:请参见“Web浏览器兼容性”页面Windows操作系统:Windows Support Policy Linux操作系统:Linux Support Policy对于servlet容器:servlet容器支持策略
有几个Jenkins的Docker图像可用。使用Docker Hub存储库中推荐的官方jenkins/jenkins镜像。此图像包含Jenkins的当前长期支持(LTS)版本,该版本已准备好用于生产。然而,这个镜像不包含Docker CLI,也没有与常用的蓝海插件及其功能捆绑在一起。要使用Jenkins和Docker的全部功能,您可能需要完成下面描述的安装过程。我每次jenkins Docker的新版本发布时,都会发布一个新的jenkins/jenkins镜像。您可以在标签页面上看到jenkins/jenkins图像的先前发布版本的列表。
1. 打开终端窗口。
2. 使用Docker network Create命令在Docker中创建网桥网络:
docker network create jenkins
3. 为了在Jenkins节点中执行Docker命令,请使用以下Docker run命令下载并运行Docker:dind Docker镜像:
docker run \
--name jenkins-docker \
--rm \
--detach \
--privileged \
--network jenkins \
--network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind \
--storage-driver overlay2
BASHCopied!
(可选)指定用于运行镜像的Docker容器名称。
默认情况下,Docker为容器生成一个唯一的名称。
(可选)关闭Docker容器(Docker镜像的实例)时会自动移除。
3(可选)在后台运行Docker容器。
你可以通过命令docker stop jenkins-docker来停止这个实例。
在Docker中运行Docker目前需要特权访问才能正常工作。
对于较新的Linux内核版本,这一要求可能会放宽。这与前面步骤中创建的网络相对应。
使Docker容器中的Docker作为主机名在jenkins网络中可用。启用在Docker服务器中使用TLS。
由于使用了特权容器,所以建议这样做,尽管它需要使用下面描述的共享卷。
该环境变量控制管理Docker TLS证书的根目录。
将容器内的/certs/client目录映射到一个名为jenkins-docker-certs的Docker卷。
将容器内的/var/jenkins_home目录映射到名为jenkins-data的Docker卷。
这允许由该Docker容器的Docker守护进程控制的其他Docker容器从Jenkins挂载数据。(可选)公开主机的Docker守护进程端口。
这对于在主机上执行docker命令来控制这个内部docker守护进程非常有用。
11docker:dind映像本身。
在运行之前下载这个镜像,使用命令:docker image pull码头工人:叮。Docker卷的存储驱动程序。请参考Docker存储驱动程序文档了解支持的选项。如果您在复制和粘贴上述命令片段时遇到问题,请使用下面的无注释版本:
docker run --name jenkins-docker --rm --detach \
--privileged --network jenkins --network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind --storage-driver overlay2
4. 通过执行以下两个步骤,定制官方Jenkins Docker镜像:a.创建内容如下的Dockerfile。
FROM jenkins/jenkins:2.426.2-jdk17
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"
b.从这个Dockerfile中创建一个新的docker镜像,并给这个镜像指定一个有意义的名字,比如“myjenkinsblueocean:2.426.2-1”。
docker build -t myjenkins-blueocean:2.426.2-1 .
如果你还没有下载官方的Jenkins Docker镜像,上面的过程会自动为你下载。
5. 在Docker中使用以下Docker Run命令将myjenkins-blueocean:2.426.2-1镜像作为容器运行:
docker run \
--name jenkins-blueocean \
--restart=on-failure \
--detach \
--network jenkins \
--env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client \
--env DOCKER_TLS_VERIFY=1 \
--publish 8080:8080 \
--publish 50000:50000 \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
myjenkins-blueocean:2.426.2-1
1(可选)Docker镜像实例对应的Docker容器名称。
2如果容器停止,一定要重新启动它。如果是手动停止,则只有当Docker守护进程重启或容器本身手动重启时才会重启。
3(可选)在后台运行当前容器,称为“detached”模式,并输出容器ID。如果不指定此选项,则在终端窗口中显示该容器的运行Docker日志。
4将此容器连接到先前定义的jenkins网络。Docker守护进程现在可以通过主机名Docker对这个Jenkins容器使用。
5指定docker、docker-compose和其他docker工具在上一步连接到docker守护进程时使用的环境变量将当前容器的8080端口映射或发布到主机上的8080端口。
6第一个数字表示主机上的端口,而最后一个数字表示容器的端口。例如,要通过端口49000访问主机上的Jenkins,请为该选项输入-p 49ee:sese。
7(可选)将当前容器的50000端口映射到主机的50000端口。只有当您在其他机器上设置了一个或多个入站Jenkins代理时才需要这样做,这些代理反过来与您的Jenkins blueocean容器(称为Jenkins“控制器”)交互。缺省情况下,入站Jenkins代理通过TCP端口50000与Jenkins控制器通信。您可以通过Security页面更改Jenkins控制器上的端口号。例如,如果您将Jenkins控制器的入站Jenkins代理的TCP端口更新为51000,则需要通过docker runcommand重新运行Jenkins。指定“publish”选项如下:第一个值是Jenkins控制器所在机器上的端口号,最后一个值匹配Jenkins控制器上更改的值,例如——publish 52000:5108e。入站Jenkins代理与该端口上的Jenkins控制器通信(本例中为52000)。注意,WebSocket代理不需要这个配置。
8将容器中的/var/jenkins_home目录映射到名为jenkins-data的Docker卷。除了将/var/jenkins_home目录映射到Docker卷之外,还可以将该目录映射到机器本地文件系统上的一个目录。例如,指定选项——vol SHoME/jenkins:/var/jenkins_hone将容器的/var/jenkins主目录映射到本地机器上SHoME目录下的jenkins子目录-通常是/users/
9将/certs/ clent目录映射到前面创建的jenkins-docker-certs卷。连接Docker守护进程所需的客户端TLS证书现在可以在DocKER_cERT_PATH环境变量指定的路径中获得。
10在上一步中创建的Docker镜像的名称。The IP
如果您在复制和粘贴命令片段时遇到问题,请使用下面的无注释版本:
docker run --name jenkins-blueocean --restart=on-failure --detach \
--network jenkins --env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \
--publish 8080:8080 --publish 50000:50000 \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
myjenkins-blueocean:2.426.2-1
6. 进入安装后设置向导。
Jenkins项目提供了一个Linux容器镜像,而不是Windows容器镜像。确保您的Docker for Windows安装配置为运行Linux容器而不是Windows容器。有关切换到Linux容器的说明,请参阅Docker文档。一旦配置为运行Linux容器,步骤如下:1. 打开命令提示符窗口,类似于上面的macOS和Linux指令,执行以下操作:2. 在Docker中创建一个桥接网络
docker network create jenkins
3. 运行docker:dind docker image
docker run --name jenkins-docker --rm --detach ^
--privileged --network jenkins --network-alias docker ^
--env DOCKER_TLS_CERTDIR=/certs ^
--volume jenkins-docker-certs:/certs/client ^
--volume jenkins-data:/var/jenkins_home ^
--publish 2376:2376 ^
docker:dind
4. 通过执行以下两个步骤,定制官方Jenkins Docker镜像:a.创建内容如下的Dockerfile。
FROM jenkins/jenkins:2.426.2-jdk17
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"
b.从这个Dockerfile中创建一个新的docker镜像,并给这个镜像指定一个有意义的名字,例如:“myjenkinsblueocean: 2.426.2-1”:
docker build -t myjenkins-blueocean:2.426.2-1 .
如果你还没有下载官方的Jenkins Docker镜像,上面的过程会自动为你下载。
5. 在Docker中运行你自己的nyjenkins-blueocean: 2.426.2-1镜像作为容器,使用以下Docker Run命令:
docker run --name jenkins-blueocean --restart=on-failure --detach ^
--network jenkins --env DOCKER_HOST=tcp://docker:2376 ^
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 ^
--volume jenkins-data:/var/jenkins_home ^
--volume jenkins-docker-certs:/certs/client:ro ^
--publish 8080:8080 --publish 50000:50000 myjenkins-blueocean:2.426.2-1
6. 继续安装向导。
如果你想通过终端/命令提示符使用Docker exec命令访问你的Docker容器,在Docker exec命令中添加一个选项,比如——name jenkins-tutorial。这将访问名为“Jenkins -tutorial”的Jenkins Docker容器。你可以使用docker exec命令访问你的docker容器(通过一个单独的终端/命令提示窗口),例如:码头经理-詹金斯-蓝海舞会
您可能想要访问Jenkins控制台日志,例如,当解锁Jenkins作为安装后设置向导的一部分时。通过执行docker run -l命令的终端/命令提示窗口访问Jenkins控制台日志。或者,你也可以使用以下命令通过容器的Docker日志访问Jenkins控制台日志:Docker日志< Docker -container-name>
例如,您可以访问Jenkins主目录,以检查工作区子目录中Jenkins构建的详细信息。如果您将Jenkins主目录(/var/Jenkins_home)映射到您机器的本地文件系统,例如,在上面的docker run命令中,通过您机器通常的终端/命令提示符访问目录内容。如果你在docker run -命令中指定了——volume Jenkins-data:/var/jenkins_hone选项,那么通过容器的终端/命令提示符,使用docker container exec命令访问Jenkins主目录的内容:Docker容器执行-it < Docker -container-name> bash根据上一节,使用docker container is命令获取
在下载、安装并使用上述程序之一运行Jenkins之后(使用Jenkins Operator安装除外),安装后设置向导开始这个设置向导带你通过几个快速的“一次性”步骤来解锁Jenkins,用插件自定义它,并创建第一个管理员用户,通过这个用户你可以继续访问Jenkins。
当您第一次访问一个新的Jenkins实例时,系统会要求您使用自动生成的密码解锁它。1. 浏览到http://localhost:sese(或安装时为Jenkins配置的任何端口),等待直到解锁Jenkins页面出现。
有道确实很快,牛逼的很
2. 从Jenkins控制台日志输出中,复制自动生成的字母数字密码(在两组星号之间)
注意:命令:sudo cat /var/lib/jenkins/secrets/initialAdminPassword将在控制台中打印密码。如果你在Docker中使用官方Jenkins / Jenkins镜像运行Jenkins,你可以使用sudo Docker exec${CONTAINER_ID或CONTAINER_NAME) cat /var/ jenkins_home /secrets/initialAdminPassword在控制台上打印密码,而无需执行到容器中。3. 在解锁Jenkins页面上,将此密码粘贴到Administrator密码字段中,然后单击Continue。注意:Jenkins控制台日志指出了该密码也可以获得的位置(在Jenkins主目录中)。这个密码必须在新的Jenkins安装向导中输入,然后才能访问Jenkins的主ui。如果您在安装向导中跳过后续的用户创建步骤,这个密码还可以作为默认管理员帐户的密码(用户名为“admin”)。
解锁Jenkins后,进入自定义Jenkins页面。在这里,您可以安装任意数量的有用插件作为初始设置的一部分。单击显示的两个选项之一:安装建议的插件——安装推荐的插件集,这是基于最常见的用例。选择要安装的插件—选择最初安装哪一组插件。当您第一次访问插件选择页面时,默认情况下会选择建议的插件。如果您不确定需要什么插件,请选择“安装建议的插件”。您可以安装(或删除)额外的Jenkins插件在稍后的时间点通过管理Jenkins >插件页面在Jenkins。安装向导显示了正在配置的Jenkins的进度和正在安装的Jenkins插件的选择集。这个过程可能需要几分钟。
搞不动了,自己官网看去吧