We are looking for a release management solution and would like to check if we can accomplish that with Circle CI

We are looking for a release management solution:

Simple case:
For example we have a WordPress plugin that has 3 versions:

  • single site
  • three sites
  • ten sites

Code is exactly the same for all versions only 1 line in 1 file (licensing code) should be dynamic where we are declaring the version name:
“single site” string changed to: define( ‘ITEM_NAME’, ‘Single’ );
“three sites” string changed to: define( ‘ITEM_NAME’, ‘Three’ );
The ideal solution will produce 3 product versions from 1 branch of code.
They could be deployed to the same or different servers (we would prefer the same server so it’s easier for us to pick up the product).

More complicated case:
For this case we will have the option to tag/mark some parts of the code which then will be replaced or deleted depending on the release requirements.
For example Dev release has the code with parameters that are associated with Dev server and Prod release has the code with parameters that are associated with Prod server.
Here is the explanation for that case:
I check this code into the main branch

dev_site_url: www.devsite.com
dev_site_auth_key: oauth0001

prod_site_url: www.prodsite.com prod_site_auth_key: oauth0002

Can we accomplish that with CircleCI?

Thank you very much!


Yes this can be done You can use Bash commands (and scripts) in a circle.yml file to determine when to create the different types of releases. You can also pass in environment variables via the API to determine what to build dynamically that way.

Deployments can be done however you want, to any server via SSH, rsync, SCP, and any other Linux-based tool.

Hi Feliciano, thank you so much for your response.
Can you please point me to your documentation where that is explained.
I was looking but was unable to find.

It’s a combination of several different docs. I would start with the Configuring CircleCI and then you’d need to find the specific docs for the different pieces you want to do. For example, at the bottom of the configuration doc includes some news about deployments. Another example, if you wanted to do paramterized builds via the API, the API Doc, particularly this endpoint would be useful.