For more information about Bash pipeline steps, see Bash.
Perform a build activity
This is an example of how to use the Bash step to perform a build activity.
Bash step to build
- name: build
type: Bash
configuration:
nodePool: my_node_pool
environmentVariables:
env1: value1
env2:
default: value2
description: Example Variable
values:
- value2
- value3
allowCustom: false
runtime:
type: image
image:
auto:
language: node
versions:
- "16"
inputResources:
- name: src
execution:
onExecute:
- cd $res_src_resourcePath
- npm install
- mkdir -p testresults && mkdir -p codecoverage
- $res_src_resourcePath/node_modules/.bin/mocha --recursive "tests/**/*.spec.js" -R mocha-junit-reporter --reporter-options mochaFile=testresults/testresults.xml
- $res_src_resourcePath/node_modules/.bin/istanbul --include-all-sources cover -root "routes" node_modules/mocha/bin/_mocha -- -R spec-xunit-file --recursive "tests/**/*.spec.js"
- $res_src_resourcePath/node_modules/.bin/istanbul report cobertura --dir codecoverage
- save_tests $res_src_resourcePath/testresults/testresults.xml
onSuccess:
- send_notification mySlack "build completed"Python in bash step
This is an example of how to use Python in a bash step.
Python
resources:
- name: script
type: GitRepo
configuration:
path: jfrog/sample-script
gitProvider: myGithub
pipelines:
- name: test_stepTestReports
steps:
- name: testReport
type: Bash
configuration:
inputResources:
- name: script
execution:
onExecute:
- cd $res_script_resourcePath
- ls
- python -m py_compile calc.py
- pip install --upgrade pip
- hash -d pip
- pip install pytest
- py.test --verbose --junit-xml test-reports/results.xml test_calc.py
onComplete:
- save_tests $res_script_resourcePath/test-reports/results.xmlruntime, environmentVariables, and inputSteps tags
This example uses the runtime, environmentVariables, and inputSteps tags:
pipelines:
- 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
execution:
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
execution:
onExecute:
- echo "step 2.."
affinityGroup and priority tags
This example uses the affinityGroup and priority tags:
pipelines:
- name: S_WF_019
steps:
- name: S_WF_019_001
type: Bash
execution:
onStart:
- add_run_variables step_1_var="step_1"
onExecute:
- echo "step 1 is running"
- name: S_WF_019_002
type: Bash
configuration:
inputSteps:
- name: S_WF_019_001
affinityGroup: ag_foo
priority: 4
execution:
onStart:
- echo "step_4_var - ${step_4_var}"
- if [ "$step_4_var" != "step_4" ]; then exit 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" ]; then exit 1; fi
- add_run_variables step_3_var="step_3"
onExecute:
- echo "step 3 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" ]; then exit 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" ]; then exit 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_2_var - ${step_2_var}"
- echo "step_3_var - ${step_3_var}"
- echo "step_4_var - ${step_4_var}"
- 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
- 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"
chronological tag
This examples uses the chronological tag:
pipelines:
- name: bash_chronological
steps:
- name: Start
type: Bash
execution:
onExecute:
- echo "It's a start."
- name: Step1
type: Bash
configuration:
chronological: true
inputSteps:
- name: Start
execution:
onExecute:
- add_run_variables step1=foo
- name: Step2
type: Bash
configuration:
chronological: true
inputSteps:
- name: Start
execution:
onExecute:
- add_run_variables step2=bar
- name: Step3
type: Bash
configuration:
chronological: true
inputSteps:
- name: Start
execution:
onExecute:
- add_run_variables step3=baz
- name: Finish
type: Bash
configuration:
inputSteps:
- name: Step1
- name: Step2
- name: Step3
execution:
onExecute:
- |
echo "Step1: $step1"
echo "Step2: $step2"
echo "Step3: $step3"
timeoutSeconds tag
This example uses the timeoutSeconds tag:
pipelines:
- name: pipelines_S_Bash_0023
steps:
- name: S_Bash_0023
type: Bash
configuration:
timeoutSeconds: 10
execution:
onExecute:
- sleep 3m