We employ a CI/CD pipeline for continuous integration & continuous delivery. This speeds up the development cycle by allowing us to quickly test our changes.
https://lucid.app/lucidchart/invitations/accept/inv_74ed890b-98c8-4b2c-8c74-9a6e82aeaeee
We begin on the local machine, after you’ve cloned the latest master branch & created a new local feature branch. After making some changes you type git add ., then git commit -m 'some-message'.
Husky will trigger .husky/pre-commit which calls lint-staged, this will call the corresponding functions in the file type map located at .lintstagedrc.js.
Then we’ll call a custom shell script to check that our local branch is following our branch naming convention.
Then the commit message is linted using configs at commitlint.config.js, it allows for custom commit message formats found at .cz-config.js.
It follows a scope followed by the module name in parenthesis. So feat(apps-web) would be adding a feature to the web project.
Now that we have committed our code, we’ll want to git push to the remote repository.
The push will only be triggered once all the specs pass within .husky/pre-push, we run some unit & integration specs.
CircleCI will trigger the dev workflow based on .circleci/config.yml. The follow is somewhat straight forward.
We use Vercel for app preview/deployment. Vercel will help to run custom command and also install dependencies for the app before compiling/running.
In case you want to modify that, check scripts/vercel
for proper requirements update.