Taking Hashrocket's "Ultimate Elixir CI" to the next level
Blog post from Felt
Hashrocket's post on building an Elixir CI with GitHub Actions has influenced many in the Elixir community by recommending a setup involving Elixir, cache restoration, formatting checks, Credo, Dialyzer, and ExUnit tests. However, the authors of the post have expanded this basic CI setup significantly by implementing a system that deploys a staging environment for every pull request (PR), allowing for real-time code testing and feedback, reducing friction in the PR review workflow. They also parallelize CI tasks to provide faster feedback, refactor CI boilerplate to streamline processes, and clear caches on retries to ensure reliability. Additionally, they incorporate extensive static analysis and code coverage checks, use Dependabot for dependency management, and are exploring further improvements like end-to-end tests and more powerful build machines. The overarching philosophy is to maximize feedback and efficiency while minimizing human oversight and error.