One Pipeline configuration for all projects. Is that possible?

Hello,
I would like to have one pipeline configuration for more projects than one. Is that possible?

Thanks,
Lukas

Some infos in the pipeline configuration are project specific so I don’t think it’s doable and more importantly, I don’t think it will be a good practice.

What you could do to at least avoid duplicating settings yml files and hooks, is replacing those folders by symbolic links to a centralise “studio pipeline configuration”.

By achieving this, you’ll get most of the configuration centralised and you’ll still be able to change it to actual files instead of symlinks for a custom project.

Cheers,
Kevin

Yes you can have a pipeline config for all projects, it’s called a Site config.
Its basically a Pipeline Configuration that does not have a project set in it’s Project field.

If you create one that is named Primary then SG desktop will load into that comnfig on boot.
You will probbaly want to take a look at converting your Centralized Configuration to a Distributed config so the project specific files are no longer there.

Distributed configs can be zipped up and uploaded or they can be referenced to a on-disk location via a descriptor.

This setup makes it easy to keep multiple projects up to date and if you combine it with git branches then you can easily merge/pull/push changes across and keep project specific settings.

This is an example of using distributed configs:

Alternatively you could link a Project Pipeline Config to a folder via the descriptor {os}_path= parameter.
In this way you can link multiple project pipeline configs to just 1 folder.

An example:

git repo: my-distributed-pipeline-config

Primary folder on disk: P:/pipeline/shotgrid/my-distributed-pipeline-config-main-branch
(This is always a git pull of the master/main branch)
Project A, B and C all have the following pipeline configs:

Name: Primary
Plugin IDs: basic.*
Descriptor: sgtk:descriptor:path?windows_path=G:\Pipeline\Shotgrid\my-distributed-pipeline-config-main-branch

Name: Dev
Plugin IDs: basic.*
Descriptor: sgtk:descriptor:path?windows_path=G:\Pipeline\Shotgrid\my-distributed-pipeline-config-dev-branch
(This folder has a checkout of the dev branch on our git repo

Project A, B and C all load exactly the same pipeline.
If we want to do dev work we can load the Dev pipeline config on any of those projects and do our coding without braking stuff for others.
Once we are done we can push the changes to the main branch and do a git pull on the main folder.

In similar but more cmplex fashion you can use one git repo and stash your project specific changes in branches and point to those for each project.

Alternatively to that you could set an env variable in tank_init core hook which reads teh TANK_NAME and sets that as env variable, then you can include yaml files in the config with a env variable pointing to ${TANK_NAME} which then loads the correct yaml file depening on the project you are loading.

There you go, various ways to go about this.
Read up on more here:

1 Like

Hi Ricardo,
thanks for your message.
I removed a project from project field in the pipeline configuration, but then I could not see Dev option in the shotgun desktop. So I am not sure what is wrong.
Could you send me an example of the pipeline configuration for more or all projects as a one pipe config in pipeline configuration with with names of the fields? I just want to make sure I have to correct setting.

Thanks

The Dev option is something I created (an extras pipeline config called “Dev”) which just points to a different folder which has a chekout of a different branch of the same git repo.

If this sounds feoreign to you it maye be better first getting to grips with git and administering Tookit because a broken site config can break everyones SG desktop (as that loads the site config before loading the project config).

Hm I am not sure if if you know what I need.
I would like to have one Dev pipeline config to set for all projects or given specific projects. When I removed a project from project field, it did break all sg desktops.
So I am not really sure what to do to get it work. I just need a clear and working example. :frowning:
I don’t need to have a branch there, just a normal path.

Why is not so simple just adding specific projects to the project field as a list or none as all?

If you say it breaks then it would be good if you can post the error logs so we can try and find out why it breaks.
Be sure to user restrict the config only to yourself so you dont affect everyone.

But to work with a site config you will need to have some more understanding of administering/developing with sgtk because it’s not just a 1 button and go scenario.

Hello @Ricardo_Musch !

I just found out, that I came up a very same solution to simply maintain project configurations, however, for me it doesn’t seem to work as expected.

Could you check your logs if yours also uses files from your network location, instead of the locally downloaded files?

Thanks!

Do you have an example?