Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Cyborg)
  • No Skin
Collapse
Brand Logo

CIRCLE WITH A DOT

  1. Home
  2. Uncategorized
  3. i know some people oppose the widespread use of CI on ideological grounds, so i think it's worth it thinking about why we value it

i know some people oppose the widespread use of CI on ideological grounds, so i think it's worth it thinking about why we value it

Scheduled Pinned Locked Moved Uncategorized
50 Posts 11 Posters 237 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • dalias@hachyderm.ioD dalias@hachyderm.io

    @whitequark @wwahammy I don't see why the archive would need to be stored. Tarballs are fully streamable and the git-archive command emits them as a stream not with temporary storage.

    whitequark@social.treehouse.systemsW This user is from outside of this forum
    whitequark@social.treehouse.systemsW This user is from outside of this forum
    whitequark@social.treehouse.systems
    wrote last edited by
    #31

    @dalias @wwahammy that is how Forgejo works today; the specific externalities that downloading an archive would have over cloning the repo

    dalias@hachyderm.ioD 1 Reply Last reply
    0
    • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

      @dalias @wwahammy that is how Forgejo works today; the specific externalities that downloading an archive would have over cloning the repo

      dalias@hachyderm.ioD This user is from outside of this forum
      dalias@hachyderm.ioD This user is from outside of this forum
      dalias@hachyderm.io
      wrote last edited by
      #32

      @whitequark @wwahammy Gotta love how much of a regression all the fancy forges are versus plain cgi-bin cgit... 😫

      bms48@mastodon.socialB whitequark@social.treehouse.systemsW 2 Replies Last reply
      0
      • dalias@hachyderm.ioD dalias@hachyderm.io

        @whitequark @wwahammy Gotta love how much of a regression all the fancy forges are versus plain cgi-bin cgit... 😫

        bms48@mastodon.socialB This user is from outside of this forum
        bms48@mastodon.socialB This user is from outside of this forum
        bms48@mastodon.social
        wrote last edited by
        #33

        @dalias @whitequark @wwahammy Do you include SourceHut in that analysis? In some ways it's even more minimalist than cgit.

        1 Reply Last reply
        0
        • dalias@hachyderm.ioD dalias@hachyderm.io

          @whitequark @wwahammy OK, but that's the fault of the CI system doing a shallow clone rather than a fully recursive checkout from already-cloned-and-cached repositories. It's the fault of poor abstraction layers that behave as "just do whatever you want to script in this throwaway container" rather than something more structured.

          whitequark@social.treehouse.systemsW This user is from outside of this forum
          whitequark@social.treehouse.systemsW This user is from outside of this forum
          whitequark@social.treehouse.systems
          wrote last edited by
          #34

          @dalias @wwahammy so I've been responsible for the operation of something more structured for a few years—in my case, a complex Buildbot CI workflow that was updating and building an LLVM/Clang/ARTIQ on a 10 Mbps link (not a typo). I actually did set up the caching system you're talking about here, which used nginx in a forward proxy mode to intercept and store Conda package requests, and it was one of my most nightmarish technical assignments. if I never have to do that again in my life it will be too soon. the correct amount of state in a CI system is zero, because this actually makes it knowable, instead of a bundle of surprises you never know will work from one build to the next because of changes you couldn't predict or track

          this doesn't mean that redownloading the same static files over and over is necessary, but the basic principle of "preserve nothing from run to run" is the only way to stay sane

          dalias@hachyderm.ioD mrdos@hachyderm.ioM whitequark@social.treehouse.systemsW 3 Replies Last reply
          0
          • dalias@hachyderm.ioD dalias@hachyderm.io

            @whitequark @wwahammy Gotta love how much of a regression all the fancy forges are versus plain cgi-bin cgit... 😫

            whitequark@social.treehouse.systemsW This user is from outside of this forum
            whitequark@social.treehouse.systemsW This user is from outside of this forum
            whitequark@social.treehouse.systems
            wrote last edited by
            #35

            @dalias see, I don't really like talking to you because of your tendency to arrogantly jump to conclusions without ever doing a bare minimum of research

            whitequark@social.treehouse.systemsW dalias@hachyderm.ioD 2 Replies Last reply
            0
            • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

              @dalias see, I don't really like talking to you because of your tendency to arrogantly jump to conclusions without ever doing a bare minimum of research

              whitequark@social.treehouse.systemsW This user is from outside of this forum
              whitequark@social.treehouse.systemsW This user is from outside of this forum
              whitequark@social.treehouse.systems
              wrote last edited by
              #36

              @dalias not "Huh, I wonder why is it that Forgejo does that?" (I don't know but I suspect it has something to do with IO load from repeatedly requested archives), directly to "It's a regression compared to [favorite project]!". it's insufferable

              1 Reply Last reply
              0
              • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                @dalias @wwahammy so I've been responsible for the operation of something more structured for a few years—in my case, a complex Buildbot CI workflow that was updating and building an LLVM/Clang/ARTIQ on a 10 Mbps link (not a typo). I actually did set up the caching system you're talking about here, which used nginx in a forward proxy mode to intercept and store Conda package requests, and it was one of my most nightmarish technical assignments. if I never have to do that again in my life it will be too soon. the correct amount of state in a CI system is zero, because this actually makes it knowable, instead of a bundle of surprises you never know will work from one build to the next because of changes you couldn't predict or track

                this doesn't mean that redownloading the same static files over and over is necessary, but the basic principle of "preserve nothing from run to run" is the only way to stay sane

                dalias@hachyderm.ioD This user is from outside of this forum
                dalias@hachyderm.ioD This user is from outside of this forum
                dalias@hachyderm.io
                wrote last edited by
                #37

                @whitequark @wwahammy TBH if you can't trust your incremental builds to be incremental, that's something I'd want a good CI to test too. 🤪

                Like, both preserving artifacts from parent commit, *and* running a new build from scratch, and asserting that the results are byte-for-byte identical.

                No, that doesn't sound fun to implement.

                ppxl@social.tchncs.deP 1 Reply Last reply
                0
                • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                  @dalias @wwahammy so I've been responsible for the operation of something more structured for a few years—in my case, a complex Buildbot CI workflow that was updating and building an LLVM/Clang/ARTIQ on a 10 Mbps link (not a typo). I actually did set up the caching system you're talking about here, which used nginx in a forward proxy mode to intercept and store Conda package requests, and it was one of my most nightmarish technical assignments. if I never have to do that again in my life it will be too soon. the correct amount of state in a CI system is zero, because this actually makes it knowable, instead of a bundle of surprises you never know will work from one build to the next because of changes you couldn't predict or track

                  this doesn't mean that redownloading the same static files over and over is necessary, but the basic principle of "preserve nothing from run to run" is the only way to stay sane

                  mrdos@hachyderm.ioM This user is from outside of this forum
                  mrdos@hachyderm.ioM This user is from outside of this forum
                  mrdos@hachyderm.io
                  wrote last edited by
                  #38

                  @whitequark @dalias @wwahammy “10 Mbps link” That's a nice fast UART you've got there!

                  whitequark@social.treehouse.systemsW 1 Reply Last reply
                  0
                  • mrdos@hachyderm.ioM mrdos@hachyderm.io

                    @whitequark @dalias @wwahammy “10 Mbps link” That's a nice fast UART you've got there!

                    whitequark@social.treehouse.systemsW This user is from outside of this forum
                    whitequark@social.treehouse.systemsW This user is from outside of this forum
                    whitequark@social.treehouse.systems
                    wrote last edited by
                    #39

                    @MrDOS @dalias @wwahammy this was fiber, believe it or not. the technology caught up with 2010s, the billing... did not

                    whitequark@social.treehouse.systemsW 1 Reply Last reply
                    0
                    • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                      @dalias see, I don't really like talking to you because of your tendency to arrogantly jump to conclusions without ever doing a bare minimum of research

                      dalias@hachyderm.ioD This user is from outside of this forum
                      dalias@hachyderm.ioD This user is from outside of this forum
                      dalias@hachyderm.io
                      wrote last edited by
                      #40

                      @whitequark If this is a conversation you'd rather I not continue I'm fine with dropping it.

                      whitequark@social.treehouse.systemsW 1 Reply Last reply
                      0
                      • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                        @dalias @wwahammy so I've been responsible for the operation of something more structured for a few years—in my case, a complex Buildbot CI workflow that was updating and building an LLVM/Clang/ARTIQ on a 10 Mbps link (not a typo). I actually did set up the caching system you're talking about here, which used nginx in a forward proxy mode to intercept and store Conda package requests, and it was one of my most nightmarish technical assignments. if I never have to do that again in my life it will be too soon. the correct amount of state in a CI system is zero, because this actually makes it knowable, instead of a bundle of surprises you never know will work from one build to the next because of changes you couldn't predict or track

                        this doesn't mean that redownloading the same static files over and over is necessary, but the basic principle of "preserve nothing from run to run" is the only way to stay sane

                        whitequark@social.treehouse.systemsW This user is from outside of this forum
                        whitequark@social.treehouse.systemsW This user is from outside of this forum
                        whitequark@social.treehouse.systems
                        wrote last edited by
                        #41

                        @dalias @wwahammy practically speaking, since most of the traffic is coming from npm/pip/cargo/etc I think you should be able to reduce load on external services without intercepting every network request, but by providing local on-demand caches of popular (thus, expensive to run) repositories. this is unlikely to make much of a difference because the supermajority of the load will continue to come from GitHub, but in a hypothetical world where GitHub implemented this, it would improve things a lot

                        of course GitHub doesn't care too much because npm traffic should be free for them and I guess they just don't think too much about the rest? gross behavior

                        whitequark@social.treehouse.systemsW 1 Reply Last reply
                        0
                        • dalias@hachyderm.ioD dalias@hachyderm.io

                          @whitequark If this is a conversation you'd rather I not continue I'm fine with dropping it.

                          whitequark@social.treehouse.systemsW This user is from outside of this forum
                          whitequark@social.treehouse.systemsW This user is from outside of this forum
                          whitequark@social.treehouse.systems
                          wrote last edited by
                          #42

                          @dalias no, I would rather like to see you question your assumptions (that other people just don't know how to build software) more often. which I know is a lot more work, but still

                          dalias@hachyderm.ioD 1 Reply Last reply
                          0
                          • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                            @dalias no, I would rather like to see you question your assumptions (that other people just don't know how to build software) more often. which I know is a lot more work, but still

                            dalias@hachyderm.ioD This user is from outside of this forum
                            dalias@hachyderm.ioD This user is from outside of this forum
                            dalias@hachyderm.io
                            wrote last edited by
                            #43

                            @whitequark I mean I feel like it's less of an "assumption" and more of a long history of unpleasant experiences.

                            1 Reply Last reply
                            0
                            • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                              @dalias @wwahammy practically speaking, since most of the traffic is coming from npm/pip/cargo/etc I think you should be able to reduce load on external services without intercepting every network request, but by providing local on-demand caches of popular (thus, expensive to run) repositories. this is unlikely to make much of a difference because the supermajority of the load will continue to come from GitHub, but in a hypothetical world where GitHub implemented this, it would improve things a lot

                              of course GitHub doesn't care too much because npm traffic should be free for them and I guess they just don't think too much about the rest? gross behavior

                              whitequark@social.treehouse.systemsW This user is from outside of this forum
                              whitequark@social.treehouse.systemsW This user is from outside of this forum
                              whitequark@social.treehouse.systems
                              wrote last edited by
                              #44

                              @dalias @wwahammy the unfortunate part about being a comparative drop in the bucket is that you could reduce your traffic by 99.9% and nobody on the other end would even notice. in general it doesn't look like a problem that will be solved unless e.g. PyPI starts responding with 429 to requests from Azure's ASN, and which will probably be solved quickly afterwards

                              from memory, the latest plan on this was to start charging the biggest bandwidth users, but I'm not sure where that's at. maybe @glyph knows?

                              wwahammy@social.treehouse.systemsW 1 Reply Last reply
                              0
                              • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                                @MrDOS @dalias @wwahammy this was fiber, believe it or not. the technology caught up with 2010s, the billing... did not

                                whitequark@social.treehouse.systemsW This user is from outside of this forum
                                whitequark@social.treehouse.systemsW This user is from outside of this forum
                                whitequark@social.treehouse.systems
                                wrote last edited by
                                #45

                                @MrDOS @dalias @wwahammy I don't think I have words to adequately describe waiting for Conda to download a build of LLVM you just uploaded there minutes ago... for 90 minutes... then deciding to discard everything it's done and download it again, for some inscrutable dependency solver reasons I could never nail down

                                I think it may have improved since but it's why I still have a visceral reaction to Conda. it's basically like this

                                Link Preview Image
                                dalias@hachyderm.ioD whitequark@social.treehouse.systemsW 2 Replies Last reply
                                0
                                • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                                  @MrDOS @dalias @wwahammy I don't think I have words to adequately describe waiting for Conda to download a build of LLVM you just uploaded there minutes ago... for 90 minutes... then deciding to discard everything it's done and download it again, for some inscrutable dependency solver reasons I could never nail down

                                  I think it may have improved since but it's why I still have a visceral reaction to Conda. it's basically like this

                                  Link Preview Image
                                  dalias@hachyderm.ioD This user is from outside of this forum
                                  dalias@hachyderm.ioD This user is from outside of this forum
                                  dalias@hachyderm.io
                                  wrote last edited by
                                  #46

                                  @whitequark @MrDOS @wwahammy A similar visceral reaction is probably a large part of my rage at this kind of stuff.

                                  1 Reply Last reply
                                  0
                                  • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                                    @MrDOS @dalias @wwahammy I don't think I have words to adequately describe waiting for Conda to download a build of LLVM you just uploaded there minutes ago... for 90 minutes... then deciding to discard everything it's done and download it again, for some inscrutable dependency solver reasons I could never nail down

                                    I think it may have improved since but it's why I still have a visceral reaction to Conda. it's basically like this

                                    Link Preview Image
                                    whitequark@social.treehouse.systemsW This user is from outside of this forum
                                    whitequark@social.treehouse.systemsW This user is from outside of this forum
                                    whitequark@social.treehouse.systems
                                    wrote last edited by
                                    #47

                                    @MrDOS @dalias @wwahammy (the reason it had to do that is that I had no good way to make a write-through cache, so after uploading something, I think it was to jfrog?, it had to be downloaded at least once before becoming usable. it was maddening.)

                                    1 Reply Last reply
                                    0
                                    • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                                      @dalias @wwahammy the unfortunate part about being a comparative drop in the bucket is that you could reduce your traffic by 99.9% and nobody on the other end would even notice. in general it doesn't look like a problem that will be solved unless e.g. PyPI starts responding with 429 to requests from Azure's ASN, and which will probably be solved quickly afterwards

                                      from memory, the latest plan on this was to start charging the biggest bandwidth users, but I'm not sure where that's at. maybe @glyph knows?

                                      wwahammy@social.treehouse.systemsW This user is from outside of this forum
                                      wwahammy@social.treehouse.systemsW This user is from outside of this forum
                                      wwahammy@social.treehouse.systems
                                      wrote last edited by
                                      #48

                                      @whitequark @dalias @glyph it really seems like it comes down to "GitHub doesn't want to fix it"

                                      1 Reply Last reply
                                      0
                                      • dalias@hachyderm.ioD dalias@hachyderm.io

                                        @whitequark @wwahammy TBH if you can't trust your incremental builds to be incremental, that's something I'd want a good CI to test too. 🤪

                                        Like, both preserving artifacts from parent commit, *and* running a new build from scratch, and asserting that the results are byte-for-byte identical.

                                        No, that doesn't sound fun to implement.

                                        ppxl@social.tchncs.deP This user is from outside of this forum
                                        ppxl@social.tchncs.deP This user is from outside of this forum
                                        ppxl@social.tchncs.de
                                        wrote last edited by
                                        #49

                                        @dalias @whitequark @wwahammy I hope I didn't lose the right end of this thread with so many side replies it needs its own representational format. Only meta communication from my side:

                                        Thanks for the civil discussion, a rarity in public Internet when different opinions clash. I know there's a lot of own experiences, assumptions, and opinions, some of them in comparable direction while others being diametrical.

                                        Anyway, I enjoyed this discussion wholeheartedly. Not because it could also be a panel discussion but rather because they highlight reasons for actions being taken (with different findings but that is okay on my page)

                                        I'd like to see more of this in the future 🙏🏾

                                        1 Reply Last reply
                                        0
                                        • dalias@hachyderm.ioD dalias@hachyderm.io

                                          @whitequark @wwahammy I think I'm one of them so I'll go over a few:

                                          1. Resource usage externalities when this is done at scale, especially for large projects times large numbers of PR authors. This manifests as energy waste, hammering the servers/infrastructure of software you depend on and pull dynamically in standard "destroy the world and re-run everything from scratch" CI recipes, etc.

                                          2. Dependency on subsidized compute resources from a capitalist platform with motivation to lock you in and enshittify.

                                          3. Reducing or eliminating the mandate for your software to be independently buildable by people on their own systems without your CI infrastructure.

                                          thepwnicorn@infosec.exchangeT This user is from outside of this forum
                                          thepwnicorn@infosec.exchangeT This user is from outside of this forum
                                          thepwnicorn@infosec.exchange
                                          wrote last edited by
                                          #50

                                          @dalias @whitequark @wwahammy these can be solved by hosting your own GitLab, Forgejo, or Gitea instance, using an artifact storage (either built-in or something like Nexus) and not overcomplicating your CI setup (e.g. just calling the script/build system/test rather than having entire scripts in the CI)

                                          1 Reply Last reply
                                          1
                                          0
                                          • R relay@relay.infosec.exchange shared this topic
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups