--- 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 git:
~/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":"you",
      "script_version":"master",
      "output_is_persistent":false
    },
    "filter":{
      "script":"0-filter.py",
      "script_parameters":{
        "input":{
          "output_of":"do_hash"
        }
      },
      "repository":"you",
      "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"@ parameter for the @filter@ component. Arvados determines the correct order to run the jobs when such dependencies are present. Now, use @arv pipeline_template create@ tell Arvados about your pipeline template:
~/you/crunch_scripts$ arv pipeline_template create --pipeline-template "$(cat ~/the_pipeline)"
Your new pipeline template will appear on the "Workbench %(rarr)→% Compute %(rarr)→% Pipeline templates":https://{{ site.arvados_workbench_host }}/pipeline_instances page.