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
rjan90 added a commit that referenced this pull request Jun 10, 2024
* release: v1.26.3 (#11908) (#11915)

* deps: update dependencies to address migration memory bloat

to address memory concerns during a heavy migration

Ref: filecoin-project/go-state-types#260
Ref: whyrusleeping/cbor-gen#96
Ref: filecoin-project/go-amt-ipld#90

* release: prep v1.26.3 patch

Prep v1.26.3 patch release:
- Update changelog, version and make gen + make docsgen-cli

* deps: update cbor-gen to tagged version

deps: update cbor-gen to tagged version

* deps: update go-state-types to tagged version

deps: update go-state-types to tagged version v0.13.2

* chore: deps: update go-state-types to v0.13.3

Fixes a panic when we have fewer than 1k proposals.

---------

Co-authored-by: Rod Vagg <[email protected]>
Co-authored-by: Steven Allen <[email protected]>

* build: release: v1.27.0-rc1 (#11947)

* chore: Set version as v1.27.0-rc1

Set version as v1.27.0-rc1, run make gen & make docsgen-cli

* Update changelog

Update changelog

* Update changelog

Update changelog based on feedback

* Bump pubsub-dep

Bump pubsub-dep

* Prep v1.27.0-rc2

Prep v1.27.0-rc2

* Typo fixes, and more changelog updates

Typo fixes, and more changelog updates

* chore: remove unmaintained bootstrappers (#11983)

* chore: remove unmaintained bootstrappers

chore: remove unmaintained bootstrappers

* Update mainnet.pi fixing typoed domain

fixing typo for 1475.io 'bootstarp' -> 'bootstrap'

* Update mainnet.pi

apparently the actual hostname is typoed. so bootstarp it is.

---------

Co-authored-by: smagdali <[email protected]>

* chore: update go-data-transfer and go-graphsync

* add ETH addrs API to Gateway (#11979)

* fix: copy Flags field from SectorOnChainInfo

Fixes: #11962

* feat: libp2p: Lotus stream cleanup (#11993)

* set stream deadlines in Lotus

* reduce timeout

* whitelist bootstrappers

* fix tests

* Update changelog and version

Update changelog and version

* ci: deprecate circle ci in favour of github actions (#11786)

* Update changelog

Update changelog with the deprecate circle-ci

* chore: update drand (#12021)

* Update changelog / make docsgen

Update changelog / make docsgen

* chore: lint: update golangci lint config

* remove and replace some linters
* remove some exclusions
* make all exclusions more explicit matches

* chore: lint: fix lint errors with new linting config

Ref: #11967

* chore: lint: address feedback from reviews

* doc: eth: restore comment lost in linter cleanup

Ref: #11968

* chore: libp2p: update to v0.34.1 (#12027)

* update libp2p to v0.34.0

* fix libp2p err

* fix imports

* update go mod

* update go mod

* Update changelog

Update changelog

* go mod tidy

go mod tidy

* revert go version change (#12050)

* Update changelog

Update changelog

* chore: backport #12054 to release/v1.27.0 branch (#12056)

* chore: pin golanglint-ci to v1.58.2 (#12054)

Fixes: #12044

* Add backport to changelog

Add backport to changelog

---------

Co-authored-by: Rod Vagg <[email protected]>

* Fix where #12054 is placed in changelog

Fix where #12054 is placed in changelog

* Add trailing line in Makefile

Add trailing line in Makefile

* Go mod tidy

Go mod tidy

---------

Co-authored-by: Rod Vagg <[email protected]>
Co-authored-by: Steven Allen <[email protected]>
Co-authored-by: smagdali <[email protected]>
Co-authored-by: Aarsh Shah <[email protected]>
Co-authored-by: Piotr Galar <[email protected]>
jennijuju added a commit that referenced this pull request Jun 25, 2024
* release: v1.26.3 (#11908) (#11915)

* deps: update dependencies to address migration memory bloat

to address memory concerns during a heavy migration

Ref: filecoin-project/go-state-types#260
Ref: whyrusleeping/cbor-gen#96
Ref: filecoin-project/go-amt-ipld#90

* release: prep v1.26.3 patch

Prep v1.26.3 patch release:
- Update changelog, version and make gen + make docsgen-cli

* deps: update cbor-gen to tagged version

deps: update cbor-gen to tagged version

* deps: update go-state-types to tagged version

deps: update go-state-types to tagged version v0.13.2

* chore: deps: update go-state-types to v0.13.3

Fixes a panic when we have fewer than 1k proposals.

---------

Co-authored-by: Rod Vagg <[email protected]>
Co-authored-by: Steven Allen <[email protected]>

* build: release: v1.27.0-rc1 (#11947)

* chore: Set version as v1.27.0-rc1

Set version as v1.27.0-rc1, run make gen & make docsgen-cli

* Update changelog

Update changelog

* Update changelog

Update changelog based on feedback

* Bump pubsub-dep

Bump pubsub-dep

* Prep v1.27.0-rc2

Prep v1.27.0-rc2

* Typo fixes, and more changelog updates

Typo fixes, and more changelog updates

* chore: remove unmaintained bootstrappers (#11983)

* chore: remove unmaintained bootstrappers

chore: remove unmaintained bootstrappers

* Update mainnet.pi fixing typoed domain

fixing typo for 1475.io 'bootstarp' -> 'bootstrap'

* Update mainnet.pi

apparently the actual hostname is typoed. so bootstarp it is.

---------

Co-authored-by: smagdali <[email protected]>

* chore: update go-data-transfer and go-graphsync

* add ETH addrs API to Gateway (#11979)

* fix: copy Flags field from SectorOnChainInfo

Fixes: #11962

* feat: libp2p: Lotus stream cleanup (#11993)

* set stream deadlines in Lotus

* reduce timeout

* whitelist bootstrappers

* fix tests

* Update changelog and version

Update changelog and version

* ci: deprecate circle ci in favour of github actions (#11786)

* Update changelog

Update changelog with the deprecate circle-ci

* chore: update drand (#12021)

* Update changelog / make docsgen

Update changelog / make docsgen

* chore: lint: update golangci lint config

* remove and replace some linters
* remove some exclusions
* make all exclusions more explicit matches

* chore: lint: fix lint errors with new linting config

Ref: #11967

* chore: lint: address feedback from reviews

* doc: eth: restore comment lost in linter cleanup

Ref: #11968

* chore: libp2p: update to v0.34.1 (#12027)

* update libp2p to v0.34.0

* fix libp2p err

* fix imports

* update go mod

* update go mod

* Update changelog

Update changelog

* go mod tidy

go mod tidy

* revert go version change (#12050)

* Update changelog

Update changelog

* chore: backport #12054 to release/v1.27.0 branch (#12056)

* chore: pin golanglint-ci to v1.58.2 (#12054)

Fixes: #12044

* Add backport to changelog

Add backport to changelog

---------

Co-authored-by: Rod Vagg <[email protected]>

* Bump version - make gen/make docsgen

Bump version - make gen/make docsgen

* Update changelog

Update changelog

* Bump NodeBuildVersion to v1.27.1-rc1

Bump NodeBuildVersion to v1.27.1-rc1

* Add Lotus-Miner / Curio related changes

Add Lotus-Miner / Curio related changes

* Update date and upgrade warnings

Update date and upgrade warnings

* fix: ci: do not use deprecated --debug goreleaser flag (#12086)

* chore: deals: remove forgotten graphsync references (#12084)

* chore: types: remove more items forgotten after markets (#12095)

* chore: cleanup: remove more items forgotten after markets

* .gz somehow reappeared after #11625

* fix: ETH RPC API: ETH Call should use the parent state root of the subsequent tipset (#11905)

* fix eth call

* tests

* changes as per review

* changes as per review

* Update node/impl/full/eth.go

Co-authored-by: Rod Vagg <[email protected]>

* fix as per review

---------

Co-authored-by: Rod Vagg <[email protected]>

* Update changelog to RC2

Update changelog to RC2

* Make gen / make docsgen-cli

Make gen / make docsgen-cli

* chore: api: the Net API/CLI now remains only on daemon

The only part of this repository that does lp2p is now lotus-daemon

Remove the CommonNet type, used exclusively bu the CLI stack

Adjust the rest of struct-memebership to match what went where

End result best seen in diff of `documentation/en/api-v0-methods-miner.md`

* Update changelog

Update changelog

* fix: events: sqlite db improvements (#12090)

* fix: events: sqlite db improvements

* fix unclosed multi-row query
* tune options to limit wal growth

Ref: #12089

* fix: events: use correct context for CollectEvents transaction

* fix: events: close prepared read statement

* fix: events: close initial query; handle lint failures

* Update CHANGELOG.md

* build: release: v1.27.1-rc2 (#12101)

* fix: ci: do not use deprecated --debug goreleaser flag (#12086)

* chore: deals: remove forgotten graphsync references (#12084)

* chore: types: remove more items forgotten after markets (#12095)

* chore: cleanup: remove more items forgotten after markets

* .gz somehow reappeared after #11625

* fix: ETH RPC API: ETH Call should use the parent state root of the subsequent tipset (#11905)

* fix eth call

* tests

* changes as per review

* changes as per review

* Update node/impl/full/eth.go

Co-authored-by: Rod Vagg <[email protected]>

* fix as per review

---------

Co-authored-by: Rod Vagg <[email protected]>

* Update changelog to RC2

Update changelog to RC2

* Make gen / make docsgen-cli

Make gen / make docsgen-cli

* chore: api: the Net API/CLI now remains only on daemon

The only part of this repository that does lp2p is now lotus-daemon

Remove the CommonNet type, used exclusively bu the CLI stack

Adjust the rest of struct-memebership to match what went where

End result best seen in diff of `documentation/en/api-v0-methods-miner.md`

* Update changelog

Update changelog

* fix: events: sqlite db improvements (#12090)

* fix: events: sqlite db improvements

* fix unclosed multi-row query
* tune options to limit wal growth

Ref: #12089

* fix: events: use correct context for CollectEvents transaction

* fix: events: close prepared read statement

* fix: events: close initial query; handle lint failures

* Update CHANGELOG.md

---------

Co-authored-by: Piotr Galar <[email protected]>
Co-authored-by: Peter Rabbitson <[email protected]>
Co-authored-by: Aarsh Shah <[email protected]>
Co-authored-by: Rod Vagg <[email protected]>
Co-authored-by: Peter Rabbitson <[email protected]>

* small fix in changelog

* fix: release: update goreleaser config file

Fixes: #12120

* fix go releaser and test with rc3

* Update CHANGELOG.md

* lotus v1.27.1 prep

* address review
- resolve one more conflicts
- revert 2 new line added

* doc: events: note events db migration impact

---------

Co-authored-by: Phi-rjan <[email protected]>
Co-authored-by: Rod Vagg <[email protected]>
Co-authored-by: Steven Allen <[email protected]>
Co-authored-by: smagdali <[email protected]>
Co-authored-by: Aarsh Shah <[email protected]>
Co-authored-by: Piotr Galar <[email protected]>
Co-authored-by: Peter Rabbitson <[email protected]>
Co-authored-by: Peter Rabbitson <[email protected]>
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.

3 participants