CircleCI-Public / circleci-cli

Use CircleCI from the command line

Home Page:https://circleci-public.github.io/circleci-cli/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Change `.circleci` home directory location with an Environment variable

kferrone opened this issue · comments

What problem does this feature solve?:

Multiple customers using circle ci with multiple users in source vcs and therefore multiple personal access tokens. Currently I have to change the token manually within ~/.circleci/cli.yml to be able to switch context between customers. Then in each customer workspace will have it's own circleci context with it's own tokens.

Provide an example:

Set a variable like CIRCLECI_HOME. to point to the .circleci directory created when you run the setup.

Hello @kferrone , thanks for raising the issue!

Actually config location and even config customisation overall is a subject we discussed a lot in our team. Our aim in the (hopefully near) future would be to enable users to have several level of configuration.
Say you have

  • A
    • .circleci/cli.yml
    • B
      • .circleci/cli.yml
      • ...other files / directories in B

The CLI would first load the config in A and then the config in B thus overwriting the values set in A.

While we implement this, I propose that we add a root option --config that would allow you to specify the path of the directory to load config from.

Please consider allowing to move the directory. I have many customers each with a workspace which has a .envrc file to scope into their context. This way all tools are configured to treat that directory as the HOME directory for that project.

Having any tool try and stuff every single customer config into a single place will get very overwhelming very quickly. We even have some customers with more than one CircleCI account for whatever reason. Imagine how large the .circleci dir will get for us.

Every single CLI we currently use, except circlecli, allows changing where the home directory is. For example with aws cli I can set AWS_CONFIG_FILE and k8s with KUBECONFIG. This keeps everything very nicely organized and all customer stuff is in one single location.

Then cd into customer folder and direnv loads .envrc and voila, all cli tools just magically use the correct accounts and there is no chance of accidentally running commands against wrong customer.

I suggest something simple as CIRCLECI_CONFIG to be like everything else. Or CIRCLECI_HOME since it is a directory.

Any chance this is going to happen. One cli.yml is becoming a burden.