TECH-7711: Migrate CI from CircleCI to GitHub Actions - #8
Conversation
Replaces .circleci/config.yml with two GHA workflows following the pattern established by smartrent_castore, alloy_access_atlas, and credo_binary_patterns for SmartRent Hex libraries: matrix build/test across two Elixir/OTP pairs, quality checks and hex.build on the latest version only, and a separate release workflow that verifies version alignment, cuts the GitHub release, and publishes to Hex on tag push. HEX_API_WRITE_KEY secret still needs to be added before the next tagged release can publish to Hex.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Please read and follow SmartRent's Secure Development policy to resolve these alerts. Reach out to security@smartrent.com if you have any questions.
|
The compile/test steps ran under Mix's default :dev env instead of :test, unlike the CircleCI config which set MIX_ENV=test globally. This meant --warnings-as-errors wasn't validating test-support code (elixirc_paths(:test) includes test/support), where CircleCI's identical compile step did catch it.
Summary
.circleci/config.yml.github/workflows/ci.yaml— matrix build/test on Elixir 1.19.2/OTP 28.1.1 and 1.18.4/OTP 27.3.4.4 (mirroring the CircleCI matrix), quality checks (format, credo, dialyzer) and docs/hex.build on the latest version only, plus a spelling/markdownlint job (cspell + markdownlint-cli2).github/workflows/release.yaml— onv*tag push: verifies mix.exs/CHANGELOG/tag version alignment, creates the GitHub Release from CHANGELOG notes, publishes to HexReview fix
testjob now setsMIX_ENV: testat the job level. Without it,mix compile --warnings-as-errorsran under Mix's default:devenv instead of:test, so warnings in test-support code (elixirc_paths(:test)includestest/support/) weren't caught the way CircleCI's identical compile step caught them.Test Plan
ci.yamlpasses (both matrix legs + spelling/markdownlint)lrzszinstalls cleanly andLRZWriter'sSystem.find_executable("lrz")/"rz"resolves onubuntu-latestHEX_API_WRITE_KEYsecret addedrelease.yamlcreates the GitHub Release and publishes to Hex on the next tag