comin icon indicating copy to clipboard operation
comin copied to clipboard

Introduce concept of stages

Open britter opened this issue 1 year ago • 2 comments

When running multiple servers, it's quite common to have a test environment that replicates the production environment. In cases where a change spans multiple machines, it becomes a little bit difficult to roll that out with comin.

Example:

I have a server that runs a DNS service (prod-1) and another server that I want to deploy NextCloud to (prod-2). When deploying NextCloud, I also want to add a DNS record for it. I have the same set up in my test environment (servers test-1 and test-2). When I want to test this change in my test environment, I need to create a branch called testing-test-1 with the DNS change and push that and then another branch called testing-test-2 with the NextCloud change.

It would be great to be able to mark the stage of a server, so that I can simply create a branch called testing-stage-test and it would apply to all servers that are assigned to the test stage. The stage should be configurable in the module options.

britter avatar Sep 17 '24 07:09 britter

Currently, comin first checkout a commit from a "Main" branch and then from a "Testing" branch, if the "Testing" branch is on top of the Main branch.

Instead of having a single "Testing" branch, i think we could have a list of testing branches. Moreover, to each testing branch branch, we could add an attribute to indicate the switch-to-configuration operation (switch or test).

It would then be possible to have this kind of comin configuration:

{
  remotes={
    main.name = "main";
    testings = [
       {name="testing-host1"; operation="test";}
       {name="stage"; operation="switch";}
    ];
  };
}

(Still need to find a better name for "testings")

nlewo avatar Jan 22 '25 21:01 nlewo

@nlewo thank you for the response. With your proposal, how would I assign multiple hosts to stage-test for example? I think there needs to be a mapping between hostname and the stage the host is assigned to.

britter avatar Jan 23 '25 08:01 britter