Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slowly migrate to Github actions #1644

Closed
4 tasks
binarylogic opened this issue Jan 30, 2020 · 8 comments · Fixed by #2352 or #2371
Closed
4 tasks

Slowly migrate to Github actions #1644

binarylogic opened this issue Jan 30, 2020 · 8 comments · Fixed by #2352 or #2371
Labels
needs: approval Needs review & approval before work can begin. needs: requirements Needs a a list of requirements before work can be begin type: task Generic non-code related tasks

Comments

@binarylogic
Copy link
Contributor

binarylogic commented Jan 30, 2020

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 chore(testing): Disable kuberenetes tests in CI temporarily #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 Automate test harness and integrate into build process #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 chore: Kubernetes Integration RFC #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?
@binarylogic binarylogic added domain: operations type: task Generic non-code related tasks needs: approval Needs review & approval before work can begin. needs: requirements Needs a a list of requirements before work can be begin labels Jan 30, 2020
@Hoverbear
Copy link
Contributor

I'd love to be part of this task!

@Hoverbear Hoverbear self-assigned this Jan 30, 2020
@MOZGIII
Copy link
Contributor

MOZGIII commented Feb 1, 2020

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.

@binarylogic
Copy link
Contributor Author

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.

@binarylogic binarylogic added the meta: blocked Anything that is blocked to the point where it cannot be worked on. label Feb 1, 2020
@MOZGIII
Copy link
Contributor

MOZGIII commented Feb 4, 2020

Found this: https://github.com/nektos/act

@binarylogic binarylogic added this to the Move to Github Actions milestone Feb 10, 2020
@MOZGIII
Copy link
Contributor

MOZGIII commented Mar 14, 2020

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

@binarylogic binarylogic assigned ghost and unassigned MOZGIII Apr 4, 2020
@binarylogic binarylogic assigned Hoverbear and unassigned ghost Apr 16, 2020
@Hoverbear
Copy link
Contributor

How are we handling Windows testing and releasing?

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

@binarylogic
Copy link
Contributor Author

Noting, we still have the following workflows to transition:

  • Installation script checking
  • Installation script syncing
  • Releasing

@binarylogic binarylogic removed the meta: blocked Anything that is blocked to the point where it cannot be worked on. label May 4, 2020
@binarylogic binarylogic removed their assignment May 4, 2020
@binarylogic
Copy link
Contributor Author

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

@binarylogic binarylogic removed this from the Move to Github Actions milestone Jul 19, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs: approval Needs review & approval before work can begin. needs: requirements Needs a a list of requirements before work can be begin type: task Generic non-code related tasks
Projects
None yet
3 participants