armada icon indicating copy to clipboard operation
armada copied to clipboard

Migrate from CircleCI to Github Actions

Open richscott opened this issue 2 years ago • 6 comments

richscott avatar Jun 01 '22 16:06 richscott

Unit tests and linting merged, but not required for merging -- we're evaluating it versus Circle CI first.

Integration tests have performance issues that I believe are caused by a smaller runner being used in GHA (this is not configurable; you use their static-sized runners or provide your own). There's a discussion here about how to move forward: https://gr-oss.slack.com/archives/C03F1DS85AQ/p1654807364006189 -- it boils down to three options:

  • Investigate hosting our GHA runners
  • Revert all test migrations to GHA
  • Continue to use a split setup, with unit tests and linting running alongside CodeQL in github actions, with integration tests running in circle ci. This is the option I think gives us the best mix of functionality and quick runtime.

This work is blocked until we come to a consensus on the above discussion. My plan is to move forward with the third option above if I don't here significant objections before next week.

jayofdoom avatar Jun 10 '22 19:06 jayofdoom

I have a PoC running tests using paid-for github runners in ~15-17 minutes. https://github.com/jayofdoom/armada/runs/7733643008

There are a handful of things needed before this is ready for landing:

  • Do some matrix testing across multiple different instance sizes; be sure we're at the best size
  • Ensure in the case where we cannot spawn a runner, we still run integration tests on a free runner (if possible)
  • Ensure all items supported by circleci (including releases / uploads of docker images) are supported in our GHA

jayofdoom avatar Aug 08 '22 21:08 jayofdoom

@jayofdoom thanks for doing this. I've never checked out the paid-for runners -- do we just pay more and maybe get that time down under 10mins?

stackedsax avatar Aug 08 '22 23:08 stackedsax

I'm not convinced that vertical scaling is possible without actual work to parallelize the tests explicitly. I'm trying to explore those possibilities before doing the cleanup work around this to make it mergeable. (Which will include making sure we're at the point where we have all the performance we can pay for without excess)

For instance, I started something testing before I stepped away this afternoon that is using docker's new build system which might be faster outright, but if it isn't I'm convinced it could be made to be faster with a few changes to our dockerfiles.

jayofdoom avatar Aug 08 '22 23:08 jayofdoom

https://github.com/jayofdoom/armada/runs/7736074257 looks like I just gained quite a bit of time just by setting an environment variable 👍

jayofdoom avatar Aug 08 '22 23:08 jayofdoom

One #1156 is merged, we'll have the following remaining steps:

  • Implement releases in Github Actions
  • Disable run of jobs in CircleCI

jayofdoom avatar Aug 17 '22 15:08 jayofdoom

Hey team! Please add your planning poker estimate with Zenhub @ClifHouck @dejanzele @kannon92 @richscott @Sharpz7 @suprjinx

richscott avatar Jan 24 '23 16:01 richscott

Migration completed. Wow that was quick!

Sharpz7 avatar Aug 21 '23 04:08 Sharpz7