suspenders icon indicating copy to clipboard operation
suspenders copied to clipboard

What is our default CI service?

Open purinkle opened this issue 11 months ago • 7 comments

With the introduction of #1172, we assumed that GitHub Actions is our default CI service. I love the new CI template. It's long overdue and something I've missed from Suspenders over the years. I would challenge the assumption that GitHub Actions is our default CI service. I lean towards CircleCI as a default. This is a personal preference, but we expect Suspenders to represent thoughtbot's opinion. What is thoughtbot's default CI service?

purinkle avatar Mar 28 '24 11:03 purinkle

Thank you for opening this. For context, I defaulted to GitHub Actions to keep parity with Rails in an effort to keep Suspenders lean and easier to maintain.

I think it would help to understand why we currently use CircleCI on other internal projects. Is it because, at one point, GitHub Actions either did not exist, or was not as effective as CircleCI? What does CircleCI offer that GitHub Actions does not?

One benefit to using CircleCI is that the repository does not need to be hosted on GitHub.

stevepolitodesign avatar Mar 28 '24 13:03 stevepolitodesign

The main reason for why we started standardizing around Github Actions for pipelines in general on Mission Control was that we found it much more likely for developers to investigate build failures when it was all in the same UI.

For example, when a non-test step would fail on another pipeline, such as AWS code build, or CircleCI, people tended to immediately ping the folks who created the pipelines, and asked them to take a look, even if the issue wasn't related to the pipeline, and was something that was in their change.

On the other hand, having it all in Github Actions, and in the same UI, made it significantly more likely that a developer would look at it, and probably resolve the issue on their own, without being gated by waiting on someone else, speeding up the feedback loop.

I don't have statistics or numbers to back this up, but that was the general feeling we noticed.

And granted that is more for continuous integration (build steps) and deployments, not CI in the sense of testing, which is what I think this issue is more about, but I think having a few things already in one place made it easier for other people to keep the tests in the same location as well.

And especially for things like dependecies for deployments, i.e. I want to push, run tests, then deploy if tests pass, is much simpler to do in one pipeline, rather than orchestrating between multiple.

ayellapragada avatar Apr 01 '24 15:04 ayellapragada

I agree. Suspenders should diverge from Rails as little as possible. This saves us time and effort with future work. Suspenders should also automate what we're doing instead of what we'd like. If we are using GitHub Actions as our current default, then let's reflect that here.

Currently, Suspenders has a CI generator that generates a CircleCI configuration.

The handbook also has explicit references to CircleCI. As does the Playbook.

The only reference I could find to the decision to move to CircleCI is from 2015.

I have no strong opinions about what service we use. My only opinion is that Suspenders should reflect current thoughtbot practices.

purinkle avatar Apr 03 '24 13:04 purinkle

The handbook also has explicit references to CircleCI. As does the Playbook.

The only reference I could find to the decision to move to CircleCI is from 2015.

Good find! Thank you for sharing those. I think this issue could continue to serve as a conversation around this topic.

stevepolitodesign avatar Apr 08 '24 12:04 stevepolitodesign

Now that I've had a chance to sleep on these comments, I've had more thoughts.

How do we change a standard once we've set one?

Do we see where the prevailing wind of the team takes us and update things from there?

Does the existence of a standard hold us back from being more experimental?

These questions are outside this issue's scope, but I wanted to share them.

purinkle avatar Apr 09 '24 09:04 purinkle

How do we change a standard once we've set one?

Pull requests, either against the Playbook or, more practically, against Suspenders. Typically the Playbook PR comes after the Suspenders one.

mike-burns avatar Apr 09 '24 14:04 mike-burns

I had another "shower thought" about this subject today.

I looked to see what the Rails team's default CI service was.

Even before the recent changes, they used GitHub Actions.

If we wanted to keep parity, this would be a clear indicator.

The main sticking point for me is why we use a particular service; apart from that, I have no strong opinions.

purinkle avatar Apr 11 '24 09:04 purinkle

@purinkle now that https://github.com/thoughtbot/handbook/pull/3804 has merged and Suspenders has been released, do you feel comfortable closing this issue?

stevepolitodesign avatar May 16 '24 23:05 stevepolitodesign