docs: def generate_pipeline(ctx, codebuild_image, source, buildspec_file, filename):
      # type: (click.Context, str, str, str, str) -> None
      """Generate a cloudformation template for a starter CD pipeline.
  
      This command will write a starter cloudformation template to
      the filename you provide.  It contains a CodeCommit repo,
      a CodeBuild stage for packaging your chalice app, and a
      CodePipeline stage to deploy your application using cloudformation.
  
      You can use any AWS SDK or the AWS CLI to deploy this stack.
      Here's an example using the AWS CLI:
  
          \b
          $ chalice generate-pipeline pipeline.json
          $ aws cloudformation deploy --stack-name mystack \b
              --template-file pipeline.json --capabilities CAPABILITY_IAM
      """
      from chalice import pipeline
      factory = ctx.obj['factory']  # type: CLIFactory
      config = factory.create_config_obj()
      p = pipeline.CreatePipelineTemplate()
      params = pipeline.PipelineParameters(
          app_name=config.app_name,
          lambda_python_version=config.lambda_python_version,
          codebuild_image=codebuild_image,
          code_source=source,
      )
      output = p.create_template(params)
      if buildspec_file:
          extractor = pipeline.BuildSpecExtractor()
          buildspec_contents = extractor.extract_buildspec(output)
          with open(buildspec_file, 'w') as f:
              f.write(buildspec_contents)
      with open(filename, 'w') as f:
          f.write(serialize_to_json(output))