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