Vector: Slowly migrate to Github actions

Created on 30 Jan 2020  路  8Comments  路  Source: timberio/vector

This has been a long-running discussion. We've never been completely happy with CircleCI, but it's never felt like a good use of time to migrate to something else. Primarily because other platforms felt just as risky, it was likely we'd have similar complaints with whatever we moved to. That said, we've been slowly adopting Github actions due to its convenience and it appears to solve some of the frustrations we have with CircleCI:

  1. Github Actions allows us to run our own custom runners on our own hardware (such as EC2 instances). This resolves the variety of resource contention issues we've had on CircleCI. The latest being #1629.
  2. Github Actions has a marketplace of helpful actions that will reduce our own internal engineering time. We've made use of this through enforcing conventional commit semantics, running cargo audit, etc.
  3. We're planning on using Github actions for #1416.
  4. We can compose actions and isolate them, making it easier to manage. This is much better than a single circleci/config.yaml file which is daunting to look at and frustrating to test.
  5. It's tightly integrated into our Github workflow.

I'd like to open this issue for discussion. Assuming we all agree we should create a checklist of Github actions we'd like to create over time.

Requirements

  • [ ] Preserve the existing Dockerized approach we have with Circle right now so that we do not baloon scope.
  • [ ] Remove the existing Kubernetes tests since we are changing this in https://github.com/timberio/vector/pull/2222.
  • [ ] Strive to build Vector once for all tests.
  • [ ] Only run CI if files in relevant directories change (/src, /tests, /proto).

Outstanding Questions

  1. How are we handling Windows testing and releasing?
  2. Do we need to consider self-hosted runners for larger machines?
approval requirements task

All 8 comments

I'd love to be part of this task!

I'm doing some work with Github Actions to automate the test harness and make it invocable via the specially formatted PR comment (i.e. something like /test) - see #1416.

I've described the design here, and one of the points there is building vector as the Github Action step. This seems relevant, and we could probably reuse either build step scripts, or the artifacts from the previous builds if those exist.
It's just something to consider. For now I'll go with the simplest way to make it work initially - building the requested commit from scratch every time.

Yes, I'd like to also note that #1663 will greatly simplify how we migrate since we'll be mostly decoupling from Circle with the tasks outlined in that issue. That said, this issue is blocked until that work is done.

Since I linked this act above, it has changed a lot. In short, it works now.

How are we handling Windows testing and releasing?

GA supports windows, this shouldn't be an issue.

Noting, we still have the following workflows to transition:

  • [ ] Installation script checking
  • [ ] Installation script syncing
  • [ ] Releasing

Closing this since it's mostly done. I will be opening a new issue that is more accurate.

Was this page helpful?
0 / 5 - 0 ratings