一、节点 node
Jenkins在安装并初始化完成后,会有一个主节点(Master Node),默认情况下主节点可以同时运行的任务数是2,可以在节点配置中修改(系统管理/节点和云管理)。
Jenkins中的节点(Node)是指用于执行构建任务的计算机或计算机集群。节点可以是物理计算机,也可以是虚拟机。Jenkins节点的主要作用是提供一个运行环境,使得构建任务可以在节点上执行。
Jenkins节点的配置和管理可以通过以下方式进行:
-
在Jenkins的管理界面中配置:在Jenkins的管理界面中,可以添加、编辑和删除节点。可以指定节点的名称、描述、标签等信息,并配置节点的连接方式和认证信息。
-
使用Jenkins CLI:Jenkins提供了命令行接口(CLI),可以使用CLI命令来配置和管理节点。通过CLI,可以添加、编辑、删除节点,以及设置节点的属性和参数。
-
使用Jenkins API:Jenkins还提供了API接口,可以通过API来配置和管理节点。通过API,可以使用各种编程语言编写脚本或程序来操作节点,实现自动化的节点管理。
Jenkins节点可以分为两种类型:
-
主节点(Master Node):主节点是Jenkins的核心节点,负责管理整个Jenkins系统的配置和任务分发。主节点可以执行一部分构建任务,但通常不建议在主节点上执行耗时较长或资源占用较高的任务,以免影响Jenkins的整体性能。
-
代理节点(Agent Node):代理节点是由主节点管理的其他计算机或计算机集群。代理节点可以执行构建任务,并将结果返回给主节点。代理节点可以根据需要添加多个,以提供更多的计算资源和并行执行能力。
通过将构建任务分配到不同的节点上执行,可以实现并行执行、负载均衡和资源隔离等功能。节点可以根据不同的需求进行配置,例如可以指定节点的标签,以便在构建任务中选择特定的节点执行。
总结来说,Jenkins中的节点是用于执行构建任务的计算机或计算机集群,可以通过配置界面、CLI或API进行配置和管理,可以分为主节点和代理节点,用于实现任务执行的并行化、负载均衡和资源隔离。
创建节点
点击系统管理/节点和云管理,然后点击“New Node”创建节点,输入节点名称(比如 node1),选择固定节点,然后点击Create按钮创建节点。
输入节点详细信息,节点通常是在其他机器上,这里要输入链接其他的其他的参数,首先要创建好凭据。
输入关键参数名字、远程工作目录(这是节点服务器上面的路径)、主机ip、凭据 credentials(要先创建好)、Host Key Verification Strategy选择“Non verifying..”
不验证证书,然后点击保存。
保存后,节点需要启动并初始化,需要1-2分钟时间,可以点击查看启动日志,启动完成后,可以看见节点变成已同步
二、凭据 credentials
Jenkins中的凭据是用于存储敏感信息的一种机制。凭据可以是用户名和密码、SSH密钥、OAuth令牌等。Jenkins可以使用凭据来访问远程服务器、下载文件、解压缩文件等。
Jenkins中的凭据可以分为两种类型:系统凭据和用户凭据。系统凭据是所有用户都可以使用的凭据,用户凭据是特定用户可以使用的凭据。
要创建一个凭据,可以通过以下步骤操作:
- 在Jenkins的管理页面中,点击凭据。
- 点击系统凭据或用户凭据。
- 点击创建凭据。
- 填写凭据的名称、类型、值等信息。
- 点击创建。
凭据创建时最好明确输入凭据ID,如果不输入系统会自动生成,在使用的时候,输入或选择对应的凭据ID即可。
Jenkins中的凭据可以有效地保护敏感信息,避免泄露。但是,要注意不要将凭据保存在公共存储中,以免被他人访问。
创建凭据
点击系统管理/凭据管理,系统全局凭据,也可以是用户凭据(就是另外创建一个域)。
以用户名密码凭据为例:输入用户名、密码、以及ID,点击Create即可
三、任务 job
在Jenkins中,任务(Job)是指要执行的特定操作或一系列操作的定义。任务可以是构建项目、部署应用程序、运行测试等。Jenkins中的任务通过配置和设置来定义其行为和执行方式。
以下是Jenkins中任务(Job)的一些重要概念和要点:
-
任务类型:Jenkins支持多种任务类型,例如自由风格项目、流水线项目、多配置项目等。每种任务类型都有不同的配置选项和执行方式。
-
构建触发器:任务可以通过不同的触发器来触发构建操作。常见的触发器包括定时触发、版本控制系统的变更触发、其他任务的成功触发等。
-
构建步骤:任务可以定义一系列的构建步骤,每个步骤执行特定的操作。例如,可以包括代码拉取、编译、测试、部署等步骤。
-
构建参数:任务可以定义输入参数,允许用户在执行任务时提供参数值。参数可以是文本、下拉列表、布尔值等类型。
-
构建环境:任务可以定义构建环境,包括设置环境变量、配置工具路径、指定构建代理节点等。
-
构建历史和报告:Jenkins会记录每次任务的构建历史,包括构建状态、执行时间、控制台输出等。任务还可以生成构建报告,用于查看构建结果和分析构建过程。
-
插件扩展:Jenkins提供了丰富的插件生态系统,可以扩展任务的功能和特性。通过安装和配置插件,可以实现更多的自定义和集成。
通过配置和管理任务,可以实现自动化的构建、测试和部署流程。Jenkins任务的配置可以通过Jenkins的Web界面进行,也可以通过Jenkins提供的CLI或API进行。任务的配置可以导出和导入,方便在不同的Jenkins实例之间共享和复用。
总结来说,Jenkins中的任务(Job)是指要执行的特定操作或一系列操作的定义。任务通过配置和设置来定义其行为和执行方式,包括触发器、构建步骤、构建参数、构建环境等。通过任务的配置和管理,可以实现自动化的构建、测试和部署流程。
1、node1服务器需要先做如下配置
这里假设任务在node1节点执行。
1)安装git,git指令
yum install git
2)配置maven环境,mvn指令
以版本apache-maven-3.8.2
为例,先下载maven压缩包apache-maven-3.8.2-bin.zip
上传到服务目录/opt/maven/
,然后解压,得到maven源文件目录/opt/maven/apache-maven-3.8.2
,配置环境变量/etc/profile
# 解压maven压缩包
unzip apache-maven-3.8.2-bin.zip
# 配置环境变量,创建文件 maven.sh
vim /etc/profile.d/maven.sh
在maven.sh中插入以下内容
MAVEN_HOME=/opt/maven/apache-maven-3.8.2
PATH=$MAVEN_HOME/bin:$PATH
export PATH
保存,让环境变量生效
source /etc/profile
输入命令 mvn -v
试试,maven配置成功!
[root@localhost apache-maven-3.8.2]# mvn -v
Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)
Maven home: /opt/maven/apache-maven-3.8.2
Java version: 17.0.9, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-17-oracle-x64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.102.1.el7.x86_64", arch: "amd64", family: "unix"
[root@localhost apache-maven-3.8.2]#
注意,mvn环境配置完成后,需要重启Jenkins服务
2、创建任务
这里以从git仓库中拉取项目并编译打包的pipeline任务为例。
输入任务名称(如:build_test),选择“流水线”
在pipeline中输入以下内容:
node('node1') {
stage("pull code") {
git branch: 'master', credentialsId: 'gitee_wlddhj', url: 'https://gitee.com/personal_practice/demo.git'
}
stage("build") {
sh label: '', script: '''
mvn clean package -Dmaven.test.skip=true -f pom.xml
'''
}
stage("release") {
sh label: '', script: '''
cp target/*.jar /data/product/deploy/
'''
}
stage("start") {
ansiColor('xterm') {
sh "JENKINS_NODE_COOKIE=dontKillMe nohup java -jar /data/product/deploy/spring-demo-0.0.1-SNAPSHOT.jar > demo.log &"
}
}
}
注意:
- 从git拉取代码需要秘钥,上面例子假设已经创建了一个凭据
gitee_wlddhj
- 这里以示例工程spring-demo作为演示,打包后台jar名称是
spring-demo-0.0.1-SNAPSHOT.jar
- 在shell环境中使用nohup,并且& 某个程序后,会后台执行,退出当前链接后程序依然可以执行。 但是在Jenkins的pipeline中,nohup,在Jenkins编译任务结束时,运行的程序会自动退出。针对该解决办法是设置系统环境变量
JENKINS_NODE_COOKIE=dontKillMe
3、执行任务
上面任务创建完成后就可以执行了。
点击“立即构建”,右边会显示执行进度,如果报错了,可以点进去看具体的执行日志