一般步骤和本机步骤
步骤分为以下几种:
- 通用的步骤:通用步骤用于通用目的的执行。的Bash而且PowerShellsteps执行您指定的任何shell命令系列,分别是Linux和Windows运行时的单个通用步骤。
- 本机的一步:一个本机的一步作为封装单元执行一组特定的操作。本机步骤本身就知道执行哪些shell命令来执行它们的操作。使用本机步骤,您可以创建复杂的工作流,使用简单的步骤定义在Artifactory中推动、发布和推广您的构建。
所有本机步骤都派生自它们各自运行时环境的基本通用步骤定义,因此所有步骤都具有相同的基本标记:管道配置中的实体结构。每个本机步骤定义了特定于其函数的附加标记。
通用的步骤 |
|
---|---|
Bash是允许执行任何shell命令的通用步骤类型。这个通用的步骤可以用来执行任何脚本化的操作,甚至可以使用尚未与JFrog pipeline集成的工具和服务。这是最通用的步骤,同时充分利用了生命周期提供的功能。 | |
矩阵步骤开始跨多个容器的多个并行构建过程,每个容器具有不同的设置。 | |
PostMatrix通用步骤可用于执行Matrix步骤之后的执行后任务。 | |
PowerShell步骤类型是允许执行PowerShell命令的泛型类型。PowerShell步骤只能在Windows节点池上运行,与其他节点池上的Bash步骤类似。作为一个通用步骤,它可以执行任何脚本化的操作,甚至可以使用尚未与JFrog pipeline集成的工具和服务,它可以用于执行需要完全控制的操作。 | |
PreMatrix通用步骤可用于为执行Matrix步骤准备构建环境。 | |
本机的步骤 |
|
CreateReleaseBundle是一个本地步骤,它生成一个发布包,用于分发到一个Artifactory Edge Node。该步骤可用于创建已签名或未签名的发布包。 | |
DistributeReleaseBundle本机步骤触发将ReleaseBundle分发到Artifactory Edge Node。此步骤需要一个已签名的发布包和一个或多个分发规则才能成功执行。 |
|
DockerBuild | DockerBuild本机步骤执行构建,从Git源存储库中的Dockerfile生成Docker映像。 |
DockerPush | DockerPush本机步骤将Docker Image推送到Docker注册表。 |
GoBuild | GoBuild本机步骤从Go (GoLang)源代码执行构建。 |
GoPublishBinary | GoPublishBinary本机步骤将GO (GoLang)二进制文件发布到Artifactory。 |
GoPublishModule | gopubishmodule本机步骤将GO (GoLang)模块发布到Artifactory。此步骤应与GoBuild的一步。 |
GradleBuild | GradleBuild原生步骤在Git存储库中的文件上执行Gradle构建。可选地,它还可以向Artifactory发布构建信息。 |
HelmBlueGreenCleanup | 的HelmBlueGreenCleanup一步卸载之前由HelmBlueGreenDeploy步骤部署的空闲版本。 |
HelmBlueGreenDeploy | HelmBlueGreenDeploy步骤实现了一个蓝色/绿色策略,使用Helm图表将Docker映像部署到Kubernetes集群。 |
HelmBlueGreenRoleSwitch | HelmBlueGreenRoleSwitch步骤翻转通过HelmBlueGreenDeploy步骤部署的Helm版本所扮演的角色。 |
HelmDeploy | HelmDeploy步骤使用Helm图表将Docker映像部署到Kubernetes集群。 |
HelmPublish | HelmPublish步骤将Helm图表和相关的构建信息从Git repo中的位置发布到Artifactory中的Helm存储库。 |
詹金斯 | Jenkins本机步骤将执行转移到Jenkins管道。 |
MvnBuild | MvnBuild本机步骤在Git存储库中的文件上执行Maven项目构建。可选地,它还可以向Artifactory发布构建信息。 |
NpmBuild | NpmBuild本机步骤构建一个npm源。此步骤自动在Git存储库中的源上执行npm-install。 |
NpmPublish | 在NpmBuild步骤之后,NpmPublish步骤将一个npm包发布到Artifactory的注册表中。 |
PromoteBuild | PromoteBuild本机步骤提升BuildInfo,并将相关工件从一个Artifactory存储库移动或复制到另一个。 |
PublishBuildInfo | PublishBuildInfo步骤将BuildInfo发布到Artifactory。BuildInfo为构建提供了一个清单,包括关于模块、依赖项和其他环境变量的元数据。 |
SignReleaseBundle | SignReleaseBundle本机步骤签署一个发布包,准备将其分发到边缘节点。 |
XrayScan | XrayScan本机步骤触发JFrog Xray扫描安全漏洞和许可证遵从性。如果已经创建了覆盖所选构建的表,Xray将扫描已索引的构建构件。 |
步骤定义
方法下的管道配置中定义步骤步骤
标记,如下所示。
管道:—name: pipe1 configuration: <可选配置设置> steps: <步骤类型集合> .步骤3配置步骤
所有的步骤都由这些顶级标签组成:
标签 | 描述 | 必需的/可选 |
---|---|---|
的名字 |
一个字母数字字符串(允许使用下划线),用于标识步骤。这是在将该步骤分配为其他步骤的输入时将使用的名称。名称的选择应该准确地描述这个步骤的作用是什么? |
要求 |
类型 |
一个预定义的步骤类型. 在管道执行同步之后,不应该修改步骤的类型,因为它可能导致管道同步错误。 虽然不推荐,但如果您确实想更改步骤的类型,请执行以下步骤:
|
要求 |
配置 |
指定步骤执行环境的所有配置设置。这些设置可能包括:
虽然大多数配置标记都是可选的,但在实践中,您至少需要定义触发该步骤执行的集成、步骤和/或资源。2022世界杯阿根廷预选赛赛程许多本机步骤还需要在这个标记部分中进行一些设置。 |
通用步骤是可选的 大多数本机步骤都需要 |
执行 |
指定为步骤的每个执行阶段执行的操作。这些阶段可能包括:
|
可选 |
步配置
在编写步骤时,无论它们的功能是什么,这些都是一些配置
您可能需要考虑的部分设置。
环境变量
的集合,可以定义或重写environmentVariables
仅在执行步骤期间可用。
如果设置了以下变量,将使用它们:
JFROG_CLI_BUILD_NAME
:如果设置,管道将使用此值而不是收集的构建信息的默认管道名称。JFROG_CLI_BUILD_NUMBER
:如果设置,管道将使用此值而不是收集的生成信息的默认运行号。USE_LOCAL_JFROG_CLI
:如果设置为真正的
,主机或镜像中的本地JFrog CLI运行时
configuration)被用来代替JFrog管线打包的版本。不建议这样做,本机步骤可能无法与本地JFrog CLI版本一起运行。
运行时
你可能选择运行时对于要执行的步骤。
节点池分配
你可以指定一个特定的nodePool
您希望您的步骤从中绘制执行节点。您可能希望这样做,以确保步骤在特定的体系结构/OS组合中执行,和/或从提供足够执行节点的节点池中提取,以便一次处理管道中的多个步骤。
如果你不指定anodePool
步骤将在已设置为默认值的节点池中运行。
亲密团体
可以将步骤绑定在一个命名的affinityGroup
以确保它们在同一节点上执行。当多个步骤需要访问在节点上创建的文件或工件时,这将有所帮助。例如,DockerBuild而且DockerPush步骤必须分配给相同的affinityGroup
这样DockerBuild构建的映像就可以用于DockerPush。
队列优先级
您可以指定一个队列优先级
到一个步骤,以确保它获得对构建节点的适当有序访问当管道中有并行步骤或多个管道正在执行时。
超时时间
您可以使用timeoutSeconds标记设置步骤完成执行的时间限制。如果该步骤没有在给定的秒数内完成,则该步骤将被迫进入完成状态失败的
.
集成
您的本机步骤可能需要声明一个集成,或者您可能希望在步骤中发出引用集成的命令,例如向Slack发送通知。如果是,你必须声明集成
跟着你的脚步。
输入/触发
在定义管道中的第一步时,您可能需要这样做定义触发input2022世界杯阿根廷预选赛赛程Resources
(如GitRepo或者一个Webhook),将自动开始管道的新运行。2022世界杯阿根廷预选赛赛程资源可以来自任何管道源。如果资源是多分支管道源的一部分,并且来自与步骤不同的分支,则必须为中的资源指定分支input2022世界杯阿根廷预选赛赛程Resources
.
您应该定义其余的步骤,以便它们以相互依赖的顺序执行。这意味着每个步骤都经过配置,以便由成功完成一个(或多个)先决步骤触发其执行。通过这种方式,步骤1的完成将触发步骤2的执行,步骤2的完成将触发步骤3的执行,以此类推,直到管道中的所有步骤都执行完毕。
要做到这一点,每一步都需要定义inputSteps
触发它来构建所需的执行序列。
输出
您的步骤在执行其任务时可能会对资源产生更改。你必须把这些申报为output2022世界杯阿根廷预选赛赛程Resources
.如果更新的资源是多分支管道源的一部分,并且来自与步骤不同的分支,则必须为中的资源指定分支output2022世界杯阿根廷预选赛赛程Resources
.
步骤执行
您的自动化管道向执行节点发出shell命令以执行工作。这些在每个步骤中都被指定执行
部分在该步骤的指定执行阶段执行。
例如,在通用中Bash步骤:
……execute: onStart: - echo "prepare for main execution" onExecute: - echo " execution task command 1" - echo " execution task command 2" onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something went wrong" onComplete: - echo " cleanup up some stuff"
你不得申报onExecute
部分中的原生步骤,因为它们提供了自己的onExecute
来执行它们固有的功能.
除了常规的shell命令外,还可以利用内置的shell命令效用函数通过集成执行操作或保存状态信息。
你也可以利用环境变量在管道执行期间可用,以灵活地自动化任何步骤执行操作。
1评论
艾丹墨菲