Skip to content

Proposal: Move all Circle CI configuration to run on GitHub Actions instead #1214

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

Closed
flimzy opened this issue Jun 26, 2023 · 4 comments
Closed
Labels

Comments

@flimzy
Copy link
Member

flimzy commented Jun 26, 2023

Background: When the GopherJS project began, GitHub Actions didn't exist, so it was appropriate to select a third-party tool. CircleCI was selected, and it has served us well.

In the years since that decision was made, GitHub Actions has been released, and matured significantly. In September of 2021, we began using GitHub Actions for the task of reporting build size on PRs. Then more recently, I added another GitHub Action to run golangci-lint, which was approved and merged without any discussion about GHA vs CircleCI.

This means that as of today, we have some configuration for GitHub Actions, and some for CircleCI. This works, but isn't perfectly ideal, IMO, and it would be better to standardize on one or the other.

As I see it, the main case to be made for CircleCI is that most of our configuration at the moment lives there, so would be the smaller delta.

The main case for GitHub Actions is that it would require fewer things to maintain.

Proposal:

  1. I propose that effective immediately, we officially adopt what appears to be our de-facto standard, that any new automation is added to GitHub Actions, rather than CircleCI
  2. We state as an eventual goal the retiring of CircleCI, and moving everything that exists there, into GitHub Actions over time.

I don't see any particular urgency to this task, but as we occasionally have requests from would-be voluteers for tasks they could help with, this might be a good candidate. So I bring this proposal forward for discussion.

@nevkontakte
Copy link
Member

I agree with the general sentiment. I think the only feature github actions doesn't support (and why I didn't actively attempt to move off circleci so far) is automated test splitting. CircleCI can use test timing information from previous runs to evenly distribute them into 4 parallel shards, which we use to run standard library tests. I'm not sure what's the best way to substitute this on GHA would be.

Other than that, a few potential considerations come to mind:

  • Does GitHub actions provide us enough open source credits to run our relatively expensive test suite?
  • Do they provide Windows and Mac machines?
  • How does performance compare?

@flimzy
Copy link
Member Author

flimzy commented Jun 27, 2023

  • Does GitHub actions provide us enough open source credits to run our relatively expensive test suite?

Good question. I don't know the answer.

  • Do they provide Windows and Mac machines?

Yes. See https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources

  • How does performance compare?

Also don't know.

@grantnelson-wf
Copy link
Collaborator

grantnelson-wf commented Jul 22, 2024

A large amount of this proposal has been taken care of by #1317

However not all configurations have been moved over to GitHub Actions. The GopherJS Tests job is broken into 2 shards ("crypto" and "non-crypto") to provide a simplistic balancing of tests. That job could use a more sophisticated balancing method similar to the setup in CircleCI. The CircleCI configuration used the timings from a prior CI run to break up tests to evenly distribute them based on duration. Something like go-test-split-action may be able to provide a similar balancing. The goal would be to split GopherJS Tests job into 4 or more (staying within the limits for a free CI of a public repo) shards that take about the same amount of time to run.

@nevkontakte
Copy link
Member

#1327 made the tests complete quicker, so the non-crypto shard passes in 10m, and crypto under 5m. I think this is good enough for the time being and we can reconsider test splitting if the run time starts creeping back up again.

Thanks @grantnelson-wf!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants