--- layout: default navsection: userguide title: "Writing a multi-step pipeline" ... A pipeline in Arvados is a collection of crunch scripts, in which the output from one script may be used as the input to another script. *This tutorial assumes that you are "logged into an Arvados VM instance":{{site.baseurl}}/user/getting_started/ssh-access.html#login, and have a "working environment.":{{site.baseurl}}/user/getting_started/check-environment.html* This tutorial uses *@you@* to denote your username. Replace *@you@* with your user name in all the following examples. h2. Create a new script Our second script will filter the output of @hash.py@ and only include hashes that start with 0. Create a new script in ~/you/crunch_scripts/ called @0-filter.py@: {% code '0_filter_py' as python %} Now add it to your repository:
~/you/crunch_scripts$ chmod +x 0-filter.py
~/you/crunch_scripts$ git add 0-filter.py
~/you/crunch_scripts$ git commit -m"zero filter"
~/you/crunch_scripts$ git push origin master
h2. Create a pipeline template Next, create a file that contains the pipeline definition:
~/you/crunch_scripts$ cat >~/the_pipeline <<EOF
{
  "name":"Filter MD5 hash values",
  "components":{
    "do_hash":{
      "script":"hash.py",
      "script_parameters":{
        "input":{
          "required": true,
          "dataclass": "Collection"
        }
      },
      "repository":"$USER",
      "script_version":"master",
      "output_is_persistent":false
    },
    "do_filter":{
      "script":"0-filter.py",
      "script_parameters":{
        "input":{
          "output_of":"do_hash"
        }
      },
      "repository":"$USER",
      "script_version":"master",
      "output_is_persistent":true
    }
  }
}
EOF
* @"output_of"@ indicates that the @output@ of the @do_hash@ component should be used as the @"input"@ of @do_filter@. Arvados uses these dependencies between jobs to automatically determine the correct order to run them. (Your shell should automatically fill in @$USER@ with your login name. The JSON that gets saved should have @"repository"@ pointed at your personal Git repository.) Now, use @arv pipeline_template create@ to register your pipeline template in Arvados:
~/you/crunch_scripts$ arv pipeline_template create --pipeline-template "$(cat ~/the_pipeline)"
Your new pipeline template will appear on the Workbench "Compute %(rarr)→% Pipeline templates":https://{{ site.arvados_workbench_host }}/pipeline_instances page. For more information and examples for writing pipelines, see the "pipeline template reference":{{site.baseurl}}/api/schema/PipelineTemplate.html