自动化各种任务的Jenkins

Jenkins是一个开源的自动化服务器,广泛用于持续集成和持续部署(CI/CD)的自动化流程中。它支持开发者在软件开发的各个阶段自动化各种任务,比如构建、测试和部署应用程序。Jenkins通过插件支持各种工具和技术,使其成为一个非常灵活和强大的工具。

一 通过systemd配置为服务

需要下载如下三个文件:jenkins-cli.jar为命令行操作提供支持,
jenkins-plugin-manager-2.11.1.jar便于插件的命令行管理,而jenkins.war则是部署Jenkins服务器的基石。

1. jenkins-cli.jar(大约3.4MB)

  • 作用:这是Jenkins命令行接口(CLI)的客户端工具。Jenkins CLI允许用户从命令行或脚本中执行Jenkins操作,如创建新作业、列出所有作业、管理插件、重启Jenkins等。这是一个非常强大的工具,尤其适合自动化任务和批量操作。
  • 使用场景:当需要自动化Jenkins任务,或者在没有图形用户界面的环境中管理Jenkins时,jenkins-cli.jar非常有用。

2. jenkins-plugin-manager-2.11.1.jar(大约6.0MB)

  • 作用:这是Jenkins插件管理器的一个独立版本,用于从命令行管理Jenkins插件。它可以安装、更新、删除或列出插件等。与Jenkins CLI相比,此工具专注于插件管理。下载地址https://github.com/jenkinsci/plugin-installation-manager-tool
  • 使用场景:对于需要管理大量插件或在自动化脚本中处理插件安装和更新的场景,jenkins-plugin-manager-2.11.1.jar非常有用。它简化了插件管理过程,特别是在初始化Jenkins实例或维护大型Jenkins环境时。

3. jenkins.war(大约69MB)

  • 作用:这是Jenkins的Web应用程序归档(WAR)文件,包含了运行Jenkins服务器所需的所有内容。通过Java命令,可以直接从此WAR文件启动Jenkins服务器。
  • 使用场景:当需要部署一个新的Jenkins服务器或升级现有服务器时,jenkins.war文件是必需的。它是Jenkins的核心组件,适用于所有希望使用Jenkins进行持续集成和持续部署的场景。

编辑配置文件
/etc/systemd/system/jenkins.service 作为系统服务

[Unit]
Description=jenkins server
After=network.target
[Service]
ExecStart=java -jar /var/www/jenkins.war --httpPort=8080 --prefix=/report/jenkins
EnvironmentFile=/home/zhuocang/.jenkins/config.xml
Restart=on-failure
Type=simple
User=zhuocang
[Install]
WantedBy=multi-user.target
Alias=jenkins.service

二 config.xml配置说明

Jenkins的一个核心配置文件,它保存了Jenkins服务器的全局和项目级的配置信息。这个文件包含了Jenkins的许多设置,包括系统配置、安全设置、插件信息、构建任务的配置等。jenkins全局配置都在这里
/home/zhuocang/.jenkins/config.xml

有几个关键元素可以用来控制Jenkins实例的行为。

<numExecutors>配置

<numExecutors>元素决定了Jenkins主节点可以同时执行的最大构建任务数。这个配置对于管理Jenkins的并发构建能力非常关键。xmlCopy code

<numExecutors>10</numExecutors>

<useSecurity>配置

<useSecurity>元素控制Jenkins的安全设置是否启用。

  • 关闭安全设置:通过将<useSecurity>的值设置为false,你可以关闭Jenkins的安全设置。这将移除所有安全验证,意味着不再需要登录就可以访问Jenkins实例。这在某些环境中可能是必要的,比如完全受信的内网环境,或者是在进行快速测试时。

三 页面的系统管理

点击首页>“系统管理

安全配置页面

  1. 访问安全配置页面:通过访问/jenkins/configureSecurity/,可以直接进入Jenkins的安全配置页面。这个URL是Jenkins实例的安全配置部分,用于调整与安全相关的各种设置,包括认证方式、授权策略等。
  2. 授权策略配置:选择“登录用户可以做任何事,匿名用户可以查看”的授权策略意味着已登录的用户(包括管理员和其他经过认证的用户)将拥有执行任何操作的权限,而未登录的匿名用户则仅能查看Jenkins中的项目和构建信息。这是一种常见的配置,旨在平衡操作的灵活性和系统的安全性。
  3. 选择用户数据库:“Jenkins专有用户数据库”是Jenkins内置的用户管理系统。选择这个选项意味着Jenkins将使用自己的数据库来存储用户信息,包括用户名、密码等。这种方式便于管理,因为所有用户数据都保存在Jenkins本身,不依赖于外部系统如LDAP或Active Directory。
  4. 管理用户:应用设置并保存后,当你回到Jenkins的首页并选择“系统管理”,你会发现新出现了“管理用户”的选项。这表明Jenkins已经成功配置为使用其专有用户数据库,并且你现在有权限管理用户帐户。进入“管理用户”后,会展示一个“用户列表”,列出了所有在Jenkins专有用户数据库中注册的用户
  5. 修改密码:在用户列表中,找到要修改密码的管理员账户,并点击其旁边的相关链接(通常是用户名或者某个指向详细信息/设置的图标),进入用户的详细信息页面。在用户详细信息页面中,会有一个修改密码的选项。从这里,你可以为该用户设置新密码。

四 插件安装

Jenkins插件地址 https://plugins.jenkins.io https://updates.jenkins.io/download/plugins/

通过jenkins-plugin-manager安装Jenkins插件

  1. 打开终端:首先,你需要打开一个命令行终端。
  2. 设置代理:在Linux中,你可以直接在命令行中设置代理环境变量。如果你的代理服务器需要认证,你可能还需要设置https.proxyUser和https.proxyPassword属性。
  3. 执行命令:使用java命令运行jenkins-plugin-manager,指定Jenkins WAR文件的位置,插件安装目录,以及要安装的插件和版本。

下面是一个具体的命令示例:java -Dhttps.proxyHost=proxy.com.cn -Dhttps.proxyPort=80 -jar
/path/to/jenkins-plugin-manager-2.11.1.jar -w /path/to/jenkins.war -d /var/lib/jenkins/plugins -p junit:1.53

这里有几点需要注意:

  • 文件路径:使用了/path/to/作为文件路径的占位符,你需要根据实际情况替换为jenkins-plugin-manager-2.11.1.jar和jenkins.war文件的实际路径。同样,插件目录/var/lib/jenkins/plugins也需要根据你的Jenkins安装调整。
  • 代理设置:-Dhttps.proxyHost和-Dhttps.proxyPort设置为你的代理服务器的地址和端口。如果你不需要通过代理连接到互联网,可以省略这些代理参数。

执行上述命令后,jenkins-plugin-manager将会通过指定的代理服务器下载并安装junit插件到指定的Jenkins插件目录中

离线安装插件及其依赖可能比较困难,因为需要手动下载插件及其所有依赖的.hpi或.jpi文件,并将它们放置在Jenkins的plugins目录下。

五 插件查看

在Jenkins中查看已经安装的插件有几种方法,可以通过Jenkins的Web界面进行查看,也可以通过命令行工具查询。下面详细介绍这些方法:

通过Web界面查看

在“插件管理”页面中,有几个标签页,选择“已安装”标签。这里会列出所有已经安装在Jenkins实例上的插件,包括插件的名称、版本、状态(是否启用)以及是否有可用的更新。

通过命令行查看

如果配置了Jenkins CLI,可以使用list-plugins命令列出所有已安装的插件及其版本:java -jar jenkins-cli.jar -s http://your-jenkins-url/ list-plugins

这里的http://your-jenkins-url/需要替换为Jenkins服务器地址。如果Jenkins配置了安全验证,还需要提供相应的认证信息。

直接在服务器上查看

在Jenkins的服务器上,插件被存储在Jenkins的主目录下的plugins文件夹中。你可以直接列出这个目录下的内容来查看已安装的插件:

ls /var/lib/jenkins/plugins

这条命令适用于Linux系统,路径/var/lib/jenkins/plugins是Jenkins的默认安装路径之一或者到用户家目录下的plugins

六 典型插件使用

Description Setter Plugin插件

允许用户根据构建日志中的特定信息来动态设置构建的描述。通过使用正则表达式匹配构建日志中的文本,这个插件能够自动提取出重要信息,并将其设置为构建的描述,从而使构建的概览更加直观和有意义。

Role-based Authorization Strategy插件

精细化配置权限,让Jenkins管理员能够以非常灵活和细粒度的方式管理用户和用户组的权限。这个插件通过定义角色,并将这些角色关联到具体的权限上,然后再将用户或用户组分配给这些角色,来实现权限的管理。

  • 全局角色:可以定义一组全局权限,这些权限将适用于Jenkins实例中的所有项目。这适合于需要在Jenkins级别上授予权限的用户或用户组。
  • 项目角色:允许为特定的Jenkins项目(包括文件夹和多配置项目)定义权限。这种角色基于项目名称的模式匹配,使得管理员可以为一组相似的项目批量设置权限。
  • 代理角色:专门为Jenkins代理(或称为节点)定义的角色,允许管理员控制哪些用户或用户组可以配置或运行在特定代理上的构建任务。

使用步骤

  1. 确定config.xml中的<useSecurity>true</useSecurity>
  2. 安装插件:首先,需要在Jenkins中安装"Role-based Authorization Strategy"插件。这可以通过Jenkins的"管理插件"页面完成。"Authorize Project"插件则在这个框架基础上,为项目构建执行提供了更细粒度的权限控制。这两个插件结合使用
  3. 配置安全策略:在 Jenkins 的系统管理 -> 安全设置中,使用Jenkins专有用户数据库。并确保 "Allow users to sign up" 被取消勾选。在"全局安全配置"中选择"Role-Based Strategy"作为授权策略。
  4. 转到“管理Jenkins”>“管理和分配角色”>“管理角色”,在这里可以定义全局角色、项目角色和代理角色。创建角色时,可以指定一组权限,如“构建”、“配置”、“查看”等。
  5. 在“分配角色”页面,你可以将前面定义的角色分配给具体的用户或用户组。这需要根据用户的用户名或用户组的名称来进行。
  6. 应用配置:配置完成后,确保保存更改。这样设置的权限策略就会立即生效。
  7. 在 Jenkins 主页上,点击右上角的 "人物" 图标或链接。选择 "Create User" 创建一个新的管理员用户。如果之前已有一个管理员用户,但忘记了密码,您可以点击该用户,然后选择 "Configure" 更新密码。

配置安全策略

管理和分配角色

Pipeline插件

为Jenkins引入了Pipeline的概念,提供了一种扩展的方式来实现持续集成和持续交付(CI/CD)的流程。Pipeline允许开发者定义整个构建/部署过程为代码(即“Pipeline as Code”),通常使用一个名为Jenkinsfile的文本文件来描述这个流程。这种方法提供了比传统的基于UI配置更高的灵活性和可复用性。

Pipeline 插件的主要特点

  • 可编程:Pipeline的最大优势之一就是可编程性,允许使用Groovy语言定义复杂的构建、测试和部署流程。
  • 复用性:Pipeline代码可以存储在版本控制系统中,与应用代码一起管理,这样就可以轻松地复制、修改和扩展Pipeline。
  • 持久性:Pipeline插件支持持久化构建过程,即使Jenkins服务器重启,正在执行的Pipeline也能从中断点恢复执行。
  • 阶段和并行执行:Pipeline允许将构建过程分解成多个阶段,并且可以并行执行多个任务,加快构建过程。
  • 可视化:Jenkins Pipeline提供了丰富的可视化界面,包括Pipeline的阶段视图和构建历史,使得管理和监控Pipeline变得更加直观。

如何使用Pipeline

  1. 安装Pipeline插件:首先需要确保Jenkins安装了Pipeline插件及其依赖插件。在Jenkins 2.x版本中,Pipeline插件通常作为默认插件集成。如果没有,需要手动安装。
  2. 创建Pipeline任务:在Jenkins中新建任务时选择“Pipeline”项目,这允许你输入或引用Jenkinsfile。
  3. 编写Jenkinsfile:Jenkinsfile是定义Pipeline的Groovy脚本,它描述了构建、测试和部署的整个过程。你可以在这个文件中使用各种Pipeline指令和步骤。
  4. 执行Pipeline:提交Jenkinsfile到你的版本控制系统,并配置Jenkins任务以使用它。当变更被推送到包含Jenkinsfile的仓库时,Jenkins可以自动触发并执行Pipeline。

七 远程触发构建

开发者或自动化脚本在不直接登录Jenkins界面的情况下远程启动构建任务,非常适合集成到其他自动化流程中,如CI/CD管道、定时任务等

启用远程触发构建

  1. 进入Job配置页面:首先,登录到Jenkins的管理界面,找到你想要配置远程触发的Job,点击任务名称进入详情页面,然后选择左侧的“Configure”进行配置。
  2. 配置构建触发器:在Job的配置页面中,滚动到“Build Triggers”部分。这里包含了多种触发构建的方式。
  3. 启用远程触发:在“Build Triggers”部分中,勾选“Trigger builds remotely (e.g., from scripts)”选项。这允许通过HTTP请求来远程触发该Job的构建。
  4. 设置Authentication Token:在启用远程触发后,你需要为这个触发器设置一个“Authentication Token”。这个Token是一个秘钥,远程请求必须包含这个Token才能成功触发构建。这是一种安全措施,用来验证远程请求的合法性。
  5. 保存修改:配置完毕后,记得保存你的修改。

远程触发构建的URL

  • 基本URL结构:Jenkins提供了RESTful API来支持远程触发构建,这些API的URL通常遵循这样的格式:JENKINS_URL/job/JOB_NAME/build,其中JENKINS_URL是你的Jenkins服务器地址,JOB_NAME是你想要远程触发的Job的名称。
  • 带Token的URL:如果设置了Authentication Token,远程触发的URL可能需要附加Token参数,如:JENKINS_URL/job/JOB_NAME/build?token=TOKEN_NAME。这里的TOKEN_NAME就是你在Job配置中设置的Token。

不需要Token的情况

如果Jenkins实例没有启用安全验证(即<useSecurity>配置项被设置为false),那么即使没有提供Token,也可能允许远程触发构建。这种情况下,远程触发的URL不需要附加Token参数。

通过远程触发构建功能,Jenkins为自动化工作流提供了更大的灵活性和集成能力。正确配置和使用这一功能,可以有效提高开发和部署流程的效率。

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值