When at some point a release manager decide to release the integration test release, one of the following workflows can be performed:
Workflow 1:
Navigate to the same folder used for build of the integration test release
resin deploy Official_Releases
This flow works, but has some major assumptions. It is assumed that the docker prebuild cached layers must be present and has not been changed. If layer is missing or changed, then the release will not be identical to the one used during integration test.
This flow works, but has a blocking issue. The deploy process will use a default compose.yml construct hence the release will not be identical to the one used during integration test.
Hi @aliasbits, I think what you are trying to do should be already possible, here are some ideas:
workflow examples
In workflow 2:
This flow works, but has a blocking issue. The deploy process will use a default compose.yml construct hence the release will not be identical to the one used during integration test.
Is it because you use a Legacy, Classic, or Essentials application? Or just us a single service in general?
If you use a Microservices, then even when you have a single container, you could package it with your own docker-compose.yml? Then no defaults are created, that should work to create the same outcome?
It would be the same setup to create as a multicontainer application, but only using a single service, and you can explicitly base it on the default docker-compose.yml used.
What do you think?
staged releases
Also, we have “staged releases” feature, where you wouldn’t have 2 apps, but one app, that you push too. You can pin devices to a certain release, and thus the integration test device can e.g. run the latest, while the production devices are on a specific release. When the integration test is passed, then you can repin all the devices you want to the tested release, thus the test and production is exactly the same.
Currently it works through the API and here’s the tooling if you’d like to try it:
It’s coming soon to the dashboard / CLI as well, so it will be more user friendly.