Auth0 Home Blog Docs

Parameterized deployments using Github deploy tool

I’m not sure if what I want is possible, or I’m missing it.

I’m setting up a new Github based deployment. We have three tenants, development, uat, production. I created a new repo and imported the production settings into it as a start.

The auth0 deploy tool has a feature of environment keyword mapping. Any json string has interpolation available

However, I don’t see any way in the github deploy extension for setting arbitrary parameters. I can hook up a CI system for deployment which can set the environment variables and call the auth0 deploy tool cli. However that’s more overhead than I was expecting.

How do you handle multiple tenants with a single github repository deployment strategy?

I’m not too familiar with the Github extension myself, but from what I see in the docs (esp. the Gitlab extension docs), you should be able to use the BASE_DIR field in the extension configuration:

  • BASE_DIR : The base directory, where all your tenant settings are stored. If you want to keep your tenant settings under org/repo/tenant/production , org/repo goes to the REPOSITORY and tenant/production - to BASE_DIR

(This info is from the Gitlab extension info, but it should apply to the Github extension accordingly.)

Let me know if this helps already, otherwise I’d need to check a bit further internally how it’s meant to be used.

I did see that bit. However that implies keeping fully separate trees for configuration, instead of one parameterized tree.

I’m going the route of using one set of configuration files, and parameterizing them using the env var substitution. I’m using Github Actions with encrypted secrets controlling the deploy cli tool. It’s a bit more manual than I wanted but overall it works.

1 Like

Ok. Just to answer the initial question:

How do you handle multiple tenants with a single github repository deployment strategy?

I would say the BASE_DIR approach is the way that Auth0 would point to, but I see your point there.
Regarding passing parameters, maybe it’s something to add as a feature request on