Concourse Manifest

Hi,

I was wondering if we have concept called concourse manifest ?. Below is the example which mainly the manifest file should contain.

Name: test # name of the pipline
Vars: {gitrepo}/test/concourse.vars #variables
Config: {gitrepo}/test/pcf-pipeline-tasks-externals/test-pipeline.yml # configure file
Envs: dev qa prod # Env’s

Thanks,
Kalyan

Nothing like that currently exists as far as I’m aware.

What would you use a file like this for?

I have requirement where all my individual pipelines needs to be set_pipeline if there is any change in the git. This should be dynamic though. my agenda is to create one additional file inside the individual pipelines with all the attributes that i mentioned above and call them via other pipeline.

So you want to ensure your pipelines are set automatically whenever a change is made to the git repo containing the pipeline config and tasks?

I’ve had success implementing this by making the pipelines set themselves in a job at the start of the pipeline that triggers off of changes to a git resource. This is extra easy with Concourse v5.8.0 because of the new set_pipeline step.

Something like

resources:
- name: pipeline-repo
  type: git
  source:
    uri: git@github.com:whatever
    private_key: ((git-private-key.private_key))
    branch: master

jobs:
- name: set-pipeline
  serial: true
  plan:
  - get: pipeline-repo
    trigger: true
  - set_pipeline: ((pipeline))
    file: pipeline-repo/ci/pipeline.yml
    var_files:
    - pipeline-repo/vars/((pipeline)).yml

This way all the config for the pipeline remains in git and there’s no need for an additional manifest-style file.

Thank you for response. Our idea is i have written a bash script and created pipeline called (Boss-pipeline) where it sets all my other pipeline’s when there is change in other pipelines. But I am struck with target (i have three targets like test,dev,prod) how do i pass the target dynamically ? So that my Boss-pipeline will know about it.

Thanks,
Kalyan

If you’re referring to the target in fly -t $target ... then that label only exists on your machine. In order to set pipelines on different Concourses or different teams within a Concourse you will need to log in multiple times in the task where you do the pipeline setting.

Its also worth noting that the set_pipeline step can only set pipelines on the Concourse and team that the pipeline calling it is on.