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

ci: ci: deprecate circle ci in favour of github actions #11786

Merged
merged 2 commits into from May 16, 2024

Conversation

galargh
Copy link
Contributor

@galargh galargh commented Mar 26, 2024

Important

Before merging this PR

  • Set up the following repository configuration variables:
    • DOCKERHUB_USERNAME
  • Set up the following repository secrets:
    • DOCKERHUB_TOKEN
    • GORELEASER_KEY
  • Update required checks on the protected branches

Important

After merging this PR:

  • Disable lotus project in CircleCI
  • Propagate all the GitHub Actions PRs to the release branch (?)

Related Issues

#11734

Proposed Changes

This PR removes CircleCI configuration from the repository entirely.

Additional Info

We have analysed the CircleCI vs GitHub Actions fitness in the period 2024-04-08 - 2024-04-15:

The analysis suggests we are ready to deprecate CircleCI in favour of GitHub Actions.

  • The workflow success rate in GitHub Actions is higher (min. 57%) than in CircleCI (min. 36%)
  • The median duration of workflows in GitHub Actions is lower (max. 13 minutes) than in CircleCI (max. 16 minutes)
  • The maximum duration of workflows in GitHub Actions is higher ⚠️ (max. 37 hours) than in CircleCI (max. 27 minutes) -> We were able to connect the outlier in GitHub Actions with an issue with self-hosted runners infrastructure where a runner might not get scheduled properly. We set up comprehensive monitoring for this issue, and we can quickly manually fix it if it happens again. We are also working on automation for the rescheduling process which should be complete within a month.
  • On master, only Test (itest-gateway) job is more flaky in GitHub Actions (75% success rate) than in CircleCI (92.86% success rate); there are 8 other tests that are more flaky in CircleCI than in GitHub Actions
  • On all branches, there are fewer tests that are only flaky in GitHub Actions (9) than only in CircleCI (20)

Before proceeding with the deprecation, we should decide whether the tests that we noticed to be flaky/failing only in GitHub Actions should be investigated. Here is a list of the tests (at most 2 failures in 54 runs):

  • Test (itest-path_type_filters)
  • Test (itest-eth_filter)
  • Test (itest-wdpost)
  • Test (itest-deals_pricing)
  • Test (itest-sector_finalize_early)
  • Test (itest-wdpost_worker_config)
  • Test (itest-cli)
  • Test (multicore-sdr)
  • Test (itest-harmonydb)

We should also decide how to proceed with the propagation of deprecation to the release branches. We imagine the course of action to look something like this.

  1. Merge the deprecation PR
  2. Change the required checks to the ones from GitHub Actions
  3. Disable CircleCI
  4. Cherry pick the GitHub Actions changes onto the release branch

Does it make sense to the team? Are there any other aspects of the process that we should take into account?

Finally, please note that we haven't tested the GitHub Actions release workflows with publishing credentials yet (to avoid duplicate releases). Because of this, we'd suggest coordinating the next release with us - that way we'd be able to immediately react if something unexpected were to happen.

Cost Breakdown

CircleCI

7 Days Total: $354.47

The above figure assumes a CircleCI credit price of $0.0006.

Screenshot 2024-04-17 at 12 54 32

GitHub Actions

7 Days Total: $176.54

Please note that the figures shown cover both self-hosted runners infrastructure, as well as other DX services such as GitHub monitoring, for example.

Screenshot 2024-04-17 at 12 54 58

Checklist

Before you mark the PR ready for review, please make sure that:

  • Commits have a clear commit message.
  • PR title is in the form of of <PR type>: <area>: <change being made>
    • example: fix: mempool: Introduce a cache for valid signatures
    • PR type: fix, feat, build, chore, ci, docs, perf, refactor, revert, style, test
    • area, e.g. api, chain, state, market, mempool, multisig, networking, paych, proving, sealing, wallet, deps
  • If the PR affects users (e.g., new feature, bug fix, system requirements change), update the CHANGELOG.md and add details to the UNRELEASED section.
  • New features have usage guidelines and / or documentation updates in
  • Tests exist for new functionality or change in behavior
  • CI is green

Base automatically changed from ci/ipdx-gha-release to master April 2, 2024 13:22
@galargh galargh changed the title wip: ci: deprecate circle ci in favour of github actions ci: ci: deprecate circle ci in favour of github actions Apr 16, 2024
@galargh galargh marked this pull request as ready for review April 16, 2024 15:52
@rvagg
Copy link
Member

rvagg commented May 15, 2024

Variable and secrets are done.

Status checks are ~done:

master:
Screenshot 2024-05-15 at 2 48 31 PM

release/*:
Screenshot 2024-05-15 at 2 49 22 PM

releases is a bit trickier - it had ci in it, which is the parent of all of the ci/* Circle jobs, but we don't have an equivalent. For now I'm just going with the basic checks rather than all although surely there must be a way to specify all?
Screenshot 2024-05-15 at 2 52 27 PM

@rvagg
Copy link
Member

rvagg commented May 15, 2024

@galargh there is a v1.27.0 release due soon, shall we coordinate on merging this and using it to test releases for that? I think @rjan90 could probably cut another RC just to test this out since we're already up to rc2 and not yet at final. Now might be a good time to make sure GoReleaser and DockerHub publishing works with GHA.

The outstanding items here I believe are to disable Circle integration and merge this PR (once rebased).

The flaky tests thing is a problem, but one we're going to have to chip away at rather than treat as a blocker to this because they are hard.

@rjan90 rjan90 merged commit 3ee0911 into master May 16, 2024
96 of 97 checks passed
@rjan90 rjan90 deleted the ipdx-circleci-deprecation branch May 16, 2024 11:31
@rjan90 rjan90 mentioned this pull request May 16, 2024
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants