version: "0.5" env: capture: "^(CAPTURE)$" vars: DEFAULT_ENV_VAR: default var OVERRIDE_ENV_VAR_0: old e0 OVERRIDE_ENV_VAR_1: old e1 .anchor: &anchor | printf "test anchor" nodes: python: description: This is an example of using multiple execution environments (shell and python). shell: program: bash args: - -c matrix: dense: dimensions: - - env: PRINT_VAL: value 0 - env: PRINT_VAL: value 1 tasks: - shell: program: python args: - -c script: print('yada') - script: printf "$PRINT_VAL" - script: *anchor a: matrix: dense: drop: "^(0,0,0)$" dimensions: - - env: VA: A0 - env: VA: A1 - - env: VB: B0 - env: VB: B1 - env: VB: B2 - - env: VC: C0 - env: VC: C1 tasks: - script: echo "$VA $VB $VC" b: pre: - a tasks: - script: echo "b" c: matrix: sparse: keep: "^(1,1)$" dimensions: - - env: VA: A0 - env: VA: A1 - - env: VB: B0 - env: VB: B1 pre: - b tasks: - script: | echo "$VA $VB" minimal: tasks: - script: echo "minimal" error: tasks: - script: exit 1 graph: pre: - minimal - a - b tasks: [] test: matrix: dense: dimensions: - - env: OVERRIDE_ENV_VAR_0: new e0 tasks: - env: OVERRIDE_ENV_VAR_1: new e1 script: | set -e echo "$DEFAULT_ENV_VAR" sleep 1 echo "$OVERRIDE_ENV_VAR_0" sleep 1 echo "$OVERRIDE_ENV_VAR_1" sleep 1 echo "A" sleep 1 echo "B" sleep 1 echo "C" sleep 1 echo "D" sleep 1 echo "{{ args.test }}" # this will require an argument to be passed via '-a args.test="some-argument"' sleep 1 unknown-command echo "too far!"