anchor.diff:    - name: update-deployment
       taskRef:
         name: update-deployment
  -    workspaces:
  -    - name: source
  -      workspace: shared-workspace
       params:
       - name: deployment
         value: $(params.deployment-name)
  
positive.code: [id="assembling-a-pipeline_{context}"]
  = Assembling a Pipeline
  
  A Pipeline represents a CI/CD flow and is defined by the Tasks to be executed. It is designed to be generic and reusable in multiple applications and environments.
  
  A Pipeline specifies how the Tasks interact with each other and their order of execution using the `from` and `runAfter` parameters. It uses the `workspaces` field to specify one or more volumes that each Task in the Pipeline requires during execution.
  
  In this section, you will create a Pipeline that takes the source code of the application from GitHub and then builds and deploys it on {product-title}.
  
  //The image below displays the various components of `pipelines-tutorial` Pipeline, and how these components interact with each other.
  
  //image::op-assemble-a-pipeline.png[]
  
  
  The Pipeline performs the following tasks for the back-end application `vote-api` and front-end application `vote-ui`:
  
  * Clones the source code of the application from the Git repository by referring to the `git-url` and `git-revision` parameters.
  * Builds the container image using the `buildah` ClusterTask.
  * Pushes the image to the internal image registry by referring to the `image` parameter.
  * Deploys the new image on {product-title} by using the `apply-manifests` and `update-deployment` Tasks.
  
  [discrete]
  .Procedure
  
  . Copy the contents of the following sample Pipeline YAML file and save it:
  +
  [source,yaml,subs="attributes+"]
  ----
  
negative.code:     - apply-manifests
  ----
  +
  The pipeline definition abstracts away the specifics of the Git source repository and image registries. These details are added as `params` when a pipeline is triggered and executed.
  
  . Create the pipeline:
  +
  ----
  $ oc create -f <pipeline-yaml-file-name.yaml>
  