云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

Bash是允许执行任何shell命令的泛型步骤类型。这个通用的步骤可以用来执行任何脚本化的操作,甚至可以使用尚未与JFrog pipeline集成的工具和服务。这是最通用的步骤,同时充分利用了生命周期提供的功能。


所有本机步骤都派生自Bash步骤。这意味着所有步骤共享来自Bash的相同基本标记集,而本机步骤也有自己的附加标记,这些标记支持该步骤的特定功能。因此熟悉Bash步骤定义非常重要,因为它是所有其他步骤定义的核心。

使用


Bash
管道:—name:  steps:—name:  type: Bash configuration: affinityGroup: bldGroup priority: <[0-10000]> timeoutSeconds:  nodePool: < nodePool的名称>时间顺序: environmentVariables: env1:  env2:  env3: default:  description:  values:  allowCustom:  integrations:—name: <集成名称> inputSteps:—name: <步骤名称> inputResources:—name: <资源名称> trigger:2022世界杯阿根廷预选赛赛程 # default true newVersionOnly:  # default false branch:  #参见下面的defaults描述outputResources: - name: <2022世界杯阿根廷预选赛赛程资源名> branch:  #参见下面的defaults描述runtime: type:  image: auto: language:  version:  #指定单个版本。如果定义了“versions”,则不能使用。Versions: #指定多个版本。如果定义了“version”,则不能使用。-  custom: name:  tag:  options:  registry:  #可选的私有注册表集成sourceRepository:  #如果注册表是Artifactory则必须。例如,如果注册表是AWS,则docker-local区域:#是必需的。例如:us-east-1 autoPull:  #默认为true;在运行执行之前拉图像:onStart: - echo“准备工作…”onExecute: - echo“执行任务命令1”- echo“执行任务命令2”onSuccess: - echo“工作做得好!”onFailure: - echo“呃哦,出错了”onComplete: #always - echo“清理一些东西”
页面内容

标签

的名字

一个字母数字字符串(允许使用下划线),用于标识步骤。名称的选择应该准确地描述这个步骤的作用是什么?prov_test_env表示提供测试环境的作业。步骤的名称在管道中必须是唯一的。

类型

必须Bash对于这个步骤类型。

配置

指定所有步骤执行环境的可选配置选择。

标签

使用说明

必需的/可选
affinityGroup 控制与节点的关联的标签。具有相同affinityGroup的所有步骤将在同一节点上执行。这将允许在步骤之间共享状态。举个例子,DockerBuild和DockerPush步骤在一个Pipeline中拥有相同的affinityGroup,这样在DockerBuild步骤中构建的图像就可以被用于在DockerPush步骤中发布。 可选
优先级

当管道中有并行步骤或多个管道正在执行时,控制步骤的优先级。如果对运行的步骤数没有限制,它将确定在所有可以运行的步骤中,哪个步骤将首先运行。数字小的步骤将在数字大的步骤之前运行。例如,优先级10将在优先级100之前运行。默认优先级为9999。

优先级不适用于仍在等待输入完成或配置为在没有可用节点的节点池中运行的步骤。此外,如果有两个步骤准备运行,但只有一个可用节点,则优先级编号较低的步骤首先运行,而不管每个步骤属于哪个管道。

可选
timeoutSeconds 时间限制,以秒为单位,为步骤完成。如果该步骤没有在给定的时间限制内完成,则该步骤将被迫进入失败的完成状态。 可选
nodePool 指定执行该步骤的节点池。如果不指定节点池,则在默认节点池上执行步骤。在这里看到的了解节点池的更多信息 可选
按时间顺序排列

指定必须按时间顺序执行的步骤,以确保接收来自前面步骤的所有状态更新。

一步与时间:真将仅在该步骤全部完成时执行先前触发的运行

可选
environmentVariables 以key:value格式分配任何环境变量及其值。在步骤定义中分配的所有环境变量仅在该步骤的执行范围内是活动的。
如果设置了以下变量,将使用它们:
  • JFROG_CLI_BUILD_NAME:如果设置,管道将使用此值而不是收集的构建信息的默认管道名称。
  • JFROG_CLI_BUILD_NUMBER:如果设置,管道将使用此值而不是收集的生成信息的默认运行号。
  • USE_LOCAL_JFROG_CLI:如果设置为真正的,主机或镜像中的本地JFrog CLI运行时configuration)被用来代替JFrog管线打包的版本。不建议这样做,本机步骤可能无法与本地JFrog CLI版本一起运行。
可选
集成 此步骤将使用的集成集合。集成可以在不需要资源的情况下直接使用。 可选
inputSteps 命名步骤的集合,其完成将触发此步骤的执行。 可选
input2022世界杯阿根廷预选赛赛程Resources

一个命名为管道资源2022世界杯阿根廷预选赛赛程这一步将使用它作为输入。

  • 触发:默认为:对这些已命名资源的更改2022世界杯阿根廷预选赛赛程将触发此步骤的执行。这可以通过声明来更改触发作为
  • newVersionOnly:设置newVersionOnly作为真正的如果这些资源中的一个或多个是同一运行中另一个步骤的输出资源,则将导致跳过该步骤2022世界杯阿根廷预选赛赛程input2022世界杯阿根廷预选赛赛程Resources已在当前运行中更新。
  • 分支:一个分支仅在使用来自多分支源的另一个分支的资源时才需要。默认情况下,将使用来自单个分支源或来自多分支管道的同一分支的资源。若要在单分支管道中使用多分支资源,或在多分支管道中使用另一个分支,分支应用于指定资源所属的分支。
可选
output2022世界杯阿根廷预选赛赛程Resources

一个命名为管道资源2022世界杯阿根廷预选赛赛程将在此步骤中生成或更改。

分支:一个分支只需要来自多分支源的另一个分支的资源。2022世界杯阿根廷预选赛赛程默认情况下,假定来自单个分支源或来自多分支管道的同一分支的资源。要更新单分支管道中的多分支资源或多分支管道中的另一个分支,分支应用于指定资源所属的分支。

可选
运行时 指定执行节点的运行时。 可选

执行

声明一组shell命令序列来执行不同的执行阶段:

标签 使用说明 必需的/可选
onStart 要预先执行的命令onExecute 可选
onExecute 该步骤执行的主要命令 可选
调用onSuccess 成功完成时执行的命令onExecute 可选
onFailure 执行失败时要执行的命令onExecute 可选
onComplete 的任意补全时执行的命令onExecute 可选

例子

这些例子的管道DSL是可以在这个存储库JFrogGitHub帐户。

执行一个构建活动

这是一个如何使用Bash步骤执行构建活动的示例。

构建Bash步骤
—name: build type: Bash configuration: nodePool: my_node_pool environmentVariables: env1: value1 env2: default: value2 description:示例变量值:—value2—value3 allowCustom: false runtime: type: image image: auto: language:节点版本:—16 inputResources:—name: src execution: onExec2022世界杯阿根廷预选赛赛程ute:- cd $ res_src_resourcePath npm安装mkdir - p testresults & & mkdir - p codecoverage - res_src_resourcePath / node_modules /美元。bin /摩卡——递归“测试/ * * / * .spec.js”- r mocha-junit-reporter——reporter-options mochaFile = testresults / testresults.xml - res_src_resourcePath / node_modules /美元。bin /伊斯坦布尔——include-all-sources盖根“路线”node_modules /摩卡/ bin / _mocha——- r spec-xunit-file——递归“测试/ * * / * .spec.js”——美元res_src_resourcePath cobertura伊斯坦布尔/ node_modules /。bin /报告——dir codecoverage - save_tests $res_src_resourcePath/testresults/testresults.xml onSuccess: - send_notification mySlack "build completed"

Python在bash步骤

这是一个如何在bash步骤中使用Python的示例。

Python
2022世界杯阿根廷预选赛赛程resources:—name:脚本类型:GitRepo配置:路径:jfrog/sample-script gitProvider: myGithub pipeline:—name: test_stepTestReports步骤:—name: testReport类型:Bash配置:inputResources:—name:脚本执行:onExecute:—cd $res_script_resourcePath - ls - python -m py_compile calc.py - pip install——upgrade pip - hash -d pip - pip install pytest - py. shtest——verbose——junit-xml test-reports/results.xml test_calc.py onComplete: - save_tests $res_script_resourcePath/test-reports/results.xml

运行时environmentVariables,inputSteps标签

本例使用运行时environmentVariables,inputSteps标签:

pipeline:—name: api_steps steps:—name: api_steps type: Bash configuration: runtime: type: host environmentVariables: env1: value1 env2: value2 execution: onExecute: - touch cachefile.txt - add_cache_files cachefile.txt my_file - name: api_steps_2 type: Bash configuration: runtime: type: host inputSteps: - name: api_steps execute: onExecute: - echo "step 2.."—name: api_steps_ProjectAdmin steps:—name: api_steps_ProjectAdmin type: Bash configuration: runtime: type: host environmentVariables: env1: value1 env2: value2 execution: onExecute:—touch cachefile.txt—add_cache_files cachefile.txt my_file—name: api_steps_ProjectAdmin_2 type: Bash configuration: runtime: type: host inputSteps:—name: api_steps_ProjectAdmin execute: onExecute: - echo "step 2.."

affinityGroup而且优先级标签

本例使用affinityGroup而且优先级标签:

管道:—name: S_WF_019 steps:—name: S_WF_019_001 type: Bash执行:onStart:—add_run_variables step_1_var="step_1" onExecute:—echo "step 1 is running" - name: S_WF_019_002 type: Bash配置:inputSteps: - name: S_WF_019_001 affinityGroup: ag_foo priority: 4 execute: onStart: - echo "step_4_var - ${step_4_var}" - if ["$step_4_var" != "step_4"];然后退出1;fi - add_run_variables step_2_var="step_2" onExecute: - echo "step 2 is running" - name: S_WF_019_003 type: Bash configuration: inputSteps: - name: S_WF_019_001 affinityGroup: ag_foo priority: 1 execution: onStart: - echo "step_1_var - ${step_1_var}" - if ["$step_1_var" != "step_1"];然后退出1;fi - add_run_variables step_3_var="step_3" onExecute: - echo " step3 is running" - name: S_WF_019_004 type: Bash configuration: inputSteps: - name: S_WF_019_001 affinityGroup: ag_foo priority: 3 execution: onStart: - echo "step_3_var - ${step_3_var}" - if ["$step_3_var" != "step_3"];然后退出1;fi - add_run_variables step_4_var="step_4" onExecute: - echo "step 4 is running" - name: S_WF_019_005 type: Bash configuration: inputSteps: - name: S_WF_019_002 - name: S_WF_019_003 - name: S_WF_019_004 affinityGroup: ag_foo priority: 4 execution: onStart: - echo "step_6_var - ${step_6_var}" - if ["$step_6_var" != "step_6"];然后退出1;fi - add_run_variables step_5_var="step_5" onExecute: - echo "step 5 is running" - name: S_WF_019_006 type: Bash configuration: inputSteps: - name: S_WF_019_002 - name: S_WF_019_003 - name: S_WF_019_004 affinityGroup: ag_foo priority: 2 execution: onStart: - echo " step_var - ${step_var}" - echo "step_4_var - ${step_4_var}" - if ["$ step_var " != "step_2"];然后退出1; fi - if [ "$step_3_var" != "step_3" ]; then exit 1; fi - if [ "$step_4_var" != "step_4" ]; then exit 1; fi - add_run_variables step_6_var="step_6" onExecute: - echo "step 6 is running" - name: S_WF_019_007 type: Bash configuration: inputSteps: - name: S_WF_019_005 - name: S_WF_019_006 affinityGroup: ag_foo priority: 2 execution: onStart: - echo "step_1_var - ${step_1_var}" - echo "step_2_var - ${step_2_var}" - echo "step_3_var - ${step_3_var}" - echo "step_4_var - ${step_4_var}" - echo "step_5_var - ${step_5_var}" - echo "step_6_var - ${step_6_var}" - if [ "$step_1_var" != "step_1" ]; then exit 1; fi - if [ "$step_2_var" != "step_2" ]; then exit 1; fi - if [ "$step_3_var" != "step_3" ]; then exit 1; fi - if [ "$step_4_var" != "step_4" ]; then exit 1; fi - if [ "$step_5_var" != "step_5" ]; then exit 1; fi - if [ "$step_6_var" != "step_6" ]; then exit 1; fi onExecute: - echo "step 7 is running"

按时间顺序排列标签

此示例使用按时间顺序排列标签:

管道:—name: bash_chronicle steps:—name:启动类型:Bash执行:onExecute: - echo "It's a Start ."—name: Step1类型:Bash配置:序年:true inputSteps:—name:开始执行:onExecute:—add_run_variables Step1 =foo—name: Step2类型:Bash配置:序年:true inputSteps:—name:开始执行:onExecute:—add_run_variables Step2 =bar—name: Step3类型:Bash配置:序年:true inputSteps:—name:开始执行:onExecute:—add_run_variables Step3 =baz—name:完成类型:Bash配置:inputSteps:—name: Step1—name:Step2 - name: Step3执行:onExecute: - | echo "Step1: $ Step1 " echo "Step2: $ Step2 " echo "Step3: $ Step3 "

timeoutSeconds标签

本例使用timeoutSeconds标签:

管线:—name: pipelines_S_Bash_0023 steps:—name: S_Bash_0023 type: Bash configuration: timeoutSeconds: 10 execution: onExecute:—sleep 3m
  • 没有标签
版权所有©2023 JFrog Ltd。