云客户?
免费开始>
在MyJFrog中升级>
云的新功能>





概述

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


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

使用


Bash
管道:- name: 步骤:- name: 类型:Bash配置: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:  #参见下面的默认描述outputResources: - name: <资源名称> 2022世界杯阿根廷预选赛赛程branch:  #参见下面的默认描述runtime: type:  image: auto: language:  version:  #指定单个版本。如果定义了“versions”,则不能使用。版本:#指定多个版本。如果定义了“version”,则不能使用。-  custom: name:  tag:  options:  registry:  #私有注册表的可选集成sourcererepository:  #如果注册表是Artifactory则必需。例如,如果注册表是AWS, docker-local region: # required。例如us-east-1 autoPull:  # default true;onStart: - echo "Preparing for work…" onExecute: - echo " doing task command 1" - echo " doing task command 2" onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something出错了" onComplete: #always - echo "Cleaning up some stuff"
页面内容

标签

名字

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

类型

必须Bash对于这一步,输入:

配置

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

标签

使用说明

必需的/可选
affinityGroup 控制与节点关联的标签。具有相同affinityGroup的所有步骤将在同一节点上执行。这将允许在步骤之间共享状态。一个例子是在管道中对DockerBuild和DockerPush步骤具有相同的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(取决于运行时配置),而不是与JFrog pipeline一起打包的版本。不建议这样做,本地步骤可能无法在本地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配置:nodePool: my_node_pool environmentVariables: env1: value1 env2: default: value2 description: Example变量值:—value2—value3 allowCustom: false runtime: type: image image: auto: language: node versions:—"16" inputResources:—name: src execution: o2022世界杯阿根廷预选赛赛程nExecute:- 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世界杯阿根廷预选赛赛程资源:-名称:脚本类型:GitRepo配置:路径:jfrog/sample-script gitProvider: myGithub管道:-名称:test_stepTestReports步骤:-名称:testReport类型:Bash配置:inputResources: -名称:脚本执行:onExecute: - cd $res_script_resourcePath - ls - python -m py_compile calc.py - pip install——upgrade pip - hash -d pip - pip install pytest - pytest——verbose——junit-xml test-reports/results.xml test_calc.py onComplete: - save_tests $res_script_resourcePath/test-reports/results.xml

运行时environmentVariables,inputSteps标签

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

管道:-名称:api_steps步骤:-名称:api_steps类型:Bash配置:运行时:类型:主机环境变量:env1: value1 env2: value2执行:onExecute: - touch cachefile.txt - add_cache_files cachefile.txt my_file -名称:api_step_2类型:Bash配置:运行时:类型:主机inputSteps: -名称:api_steps执行:onExecute: - echo "step 2.."-名称:api_steps_ProjectAdmin步骤:-名称:api_steps_ProjectAdmin类型:Bash配置:运行时:类型:主机环境变量:env1: value1 env2: value2执行:onExecute: - touch cachefile.txt - add_cache_files cachefile.txt my_file -名称:api_steps_ProjectAdmin类型:Bash配置:运行时:类型:主机inputSteps: -名称:api_steps_ProjectAdmin执行:onExecute: - echo "step 2.."

affinityGroup优先级标签

此示例使用affinityGroup优先级标签:

- name: S_WF_019 steps: - name: S_WF_019_001类型:Bash执行:onStart: - add_run_variables step_1_var="step_1" onExecute: - echo "step 1正在运行" - name: S_WF_019_002类型:Bash配置:inputSteps: - name: S_WF_019_001 affinityGroup: ag_foo priority: 4执行:onStart: - echo "step_4_var - ${step_4_var}" - if ["$step_4_var" != "step_4"];然后退出1;- add_run_variables step_2_var="step_2" onExecute: - echo " step2 is running" - name: S_WF_019_003类型:Bash配置:inputSteps: - name: S_WF_019_001 affinityGroup: ag_foo priority: 1执行:onStart: - echo "step_1_var - ${step_1_var}" - if ["$step_1_var" != "step_1"];然后退出1;- add_run_variables step_3_var="step_3" onExecute: - echo " step3 is running" - name: S_WF_019_004类型:Bash配置:inputSteps: - name: S_WF_019_001 affinityGroup: ag_foo priority: 3执行: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 " step4 is running" - name: S_WF_019_005类型:Bash配置:inputSteps: - name: S_WF_019_002 - name: S_WF_019_003 - name: S_WF_019_004 affinityGroup: ag_foo priority: 4执行: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 " step5 is running" - name: S_WF_019_006类型:Bash配置:inputSteps: - name: S_WF_019_002 - name: S_WF_019_003 - name: S_WF_019_004 affinityGroup: ag_foo priority: 2执行:onStart: - echo "step_2_var - ${step_3_var}" - echo "step_4_var - ${step_3_var}" - echo "step_4_var - ${step_3_var}" - if ["$step_2_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_chronological steps:—name: Start type: Bash execution: onExecute:—echo“这是一个开始”。- name: Step1类型:Bash配置:时间顺序:true inputSteps: - name:开始执行:onExecute: - add_run_variables类型:Bash配置:时间顺序:true inputSteps: - name:开始执行:onExecute: - add_run_variables类型: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:结束类型:Bash配置:inputSteps: - name:步骤1 - name:Step2 - name: Step3执行:onExecute: - | echo "Step1: $ Step1 " echo "Step2: $ Step2 " echo "Step3: $ Step3 "

timeoutSeconds标签

此示例使用timeoutSeconds标签:

—名称:pipelines_S_Bash_0023步骤:—名称:S_Bash_0023类型:Bash配置:timeoutSeconds: 10执行:onExecute:—sleep 3m
  • 没有标签
版权所有©2023 JFrog Ltd.