Why GitHub Actions is the Internet Explorer of CI, and why Buildkite offers a better path forward for teams that care about developer experience.

  • jtrek@startrek.website
    link
    fedilink
    arrow-up
    1
    ·
    1 month ago

    Sounds about right.

    I’m using GitHub actions at work because this place is extremely dysfunctional, and I can just add GitHub actions without it being a whole “research spike planning meeting impact analysis” six week journey.

    I took it from “there are absolutely no checks and Bob broke the environment because he pushed up a change that’s just invalid syntax” to… well, I couldn’t make it block the build on failures but at least now when Bob breaks it again I can point to the big red X and ask why he merged with an error.

    • zqwzzle@lemmy.ca
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      1 month ago

      If you can get the permissions to do it set the protected branch and prevent merge on build failures. This is a repo setting that will work with any ci provider assuming it updates the PR status.

      • jtrek@startrek.website
        link
        fedilink
        arrow-up
        0
        ·
        1 month ago

        I thought about it but people are so sensitive here. If they broke something and couldn’t merge they’d probably raise a big stink, and then there’s good odds the checks would be removed “because they’re adding friction” or some nonsense. My boss has already warned me about staying in my lane.

        These people have never done any automated testing of any sort. No linter. No unit tests. And they don’t seem to want to.

          • jtrek@startrek.website
            link
            fedilink
            arrow-up
            1
            ·
            1 month ago

            Well, yes, though my direct manager isn’t the worst. He’s trying to protect me from other teams that might get pissy.

            One of my friends is a product manager type and his analysis was basically “if stakeholders don’t care it’s not a problem, even if by any reasonable metric it is a problem”. So. Here we are.

  • underscores@lemmy.zip
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 month ago

    skimmed.

    preface: I do not like Microsoft or GitHub

    a lot of the points I read seem like skill issue

    there is validation for the yaml files, some of the criticism is correct. on occasion the error system in actions does not spit anything useful, you cannot dry run them even if you have self hosted runners

    but to say it’s killing your engineering team when it’s just vibes at my work seems odd, your bad CI is killing your team maybe, but GitHub actions is not the problem

  • hallettj@leminal.space
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    Well, I’m in that Nix shop category. For example, I run tests for my OSS project using lots of Python versions. There’s no need to use a Github Actions matrix for that - Nix does it more efficiently. Doesn’t even require containers or VMs. And the whole setup runs exactly the same locally, on Github Actions, or on Garnix. (But Garnix has better Nix caching than other CI runners, so that’s what I use.)

      • hallettj@leminal.space
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 month ago

        There are a few options:

        1. Sops-nix or Agenix store secrets encrypted in the repo. Each local machine needs to be set up with a PGP or an SSH key to decrypt and encrypt as necessary. This is what I do with my NixOS configuration.

        2. Manage secrets externally to repo code. I like to use direnv; sometimes I configure the checked-in .envrc file to source another file with secrets, that is not checked in.

        3. Don’t use secrets locally. If secrets are things like deploy keys, and I want all deploys going through CI, then I don’t want secrets configured locally. Instead running a deploy script locally should be a dry run, which doesn’t need secrets.

        4. Generate secrets at runtime. This is for cases where the project runs a cluster of services which need to authenticate with each other. For tests with locally running test services, authentication is confined to this isolated system. So secrets can be generated at test time, and written to env or config files that are not checked in.

        • beeng@discuss.tchncs.de
          link
          fedilink
          arrow-up
          0
          ·
          1 month ago

          In your CI which one do you use? I also use SOPS for my own, but it’s overhead… So wondering which you settled on?

          • hallettj@leminal.space
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            1 month ago

            I use sops for NixOS, but those secrets aren’t accessed in CI. For actual CI I’ve used a combination of 2-4 above.