I would like prepare my old project to work wiith separate environments, e.g. for Development, Staging and Productions. I would like hear about your experience or listen your suggestion.
Project is hosted on Github and CI/CD will be running by Github Actions.
I would like prepare 3 stages:
debug = true, with API keys for sandboxes, database migrations, database seeds and unit, integration and e2e tests;
debug = false, with API keys for sandboxes, database seeds and unit, integration and e2e tests;
debug = false, with target API keys and database migrations.
I prepare sepearate workflows on Github: staging.yaml and production.yaml.
Of course, it’s not necessary for works on development stage. Also I use Deployer for running commands, but it’s not that relevant for this thread.
step: build - build docker environment (or pull and push) - run docker - build app (e.g. install vendors) - unit tests - integration tests - export build app as artifacts step: prepare server (e.g. droplet on DigitalOcean) - unzpi artifacts - build docker enviroment with e.g. database - run docker - install vendors - database seeds step: tests - run e2e tests step: publish - set subdomain (or domain) to docker environment
step: build - build docker environment (or pull and push) - run docker - build app - export build app as artifacts step: connect to existing server (e.g. droplet on DigitalOcean) - make new dir in releases/ directory - unzpi artifacts to newest directory in releases/ directory - run docker (or no) - database migrations - symlink direcotry (used as DOCUMENT_ROOT) do newest directory in releases/ directory step: publish - just set success message