hey nerds! i got a lovely email from GitHub this morning that their increasingly vibe-coded, barely-working Actions features are about to get more expensive (charging by the minute for something that notoriously spin-locks is a special flavor of shit sandwich).

i usually just use whatever i’m given at wherever i’m working. i do have a project that i maintain to parse Ollama Modelfiles tho: https://github.com/covercash2/modelfile and to be honest, Actions is the only solution i’ve ever used that came close to sparking joy, simply because it was easy to use and had tons of community mind-share (i’ve definitely heard horror stories and would never stake my business on it), but this price increase and all the other news around GitHub lately has got me side-eying self-hosting solutions for my git projects. Forgejo seems like the way to go for git hosting, but Actions in particular Just Works™️ for me, so i’m kind of dreading setting something up that will be yet another time sink/rabbit hole (just in time for the holidays! 🙃).

i can install most of my tooling with my language toolchain (read: rustup and cargo) which makes things fairly neat, but i just don’t have a sense for what people use outside of Jenkins and Actions.

i thought this community might have some insight beyond the LLM generated listicles that have blighted modern search results.

thanks in advance 🙏

  • TheHolm@aussie.zone
    link
    fedilink
    English
    arrow-up
    0
    ·
    24 days ago

    Woodpecker. No BS CI which can be attached to pretty much anything. It just need a webhook and way to pull your project.

    • chrash0@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      28 days ago

      i honestly didn’t look that close, obviously haha

      but yeah, i’ve been kinda looking for a reason to de-Microsoft my stuff

  • Mike@piefed.chrisco.me
    link
    fedilink
    English
    arrow-up
    0
    ·
    28 days ago

    Used to use travis or clicleci and they both worked really well. Theres some issues with travis being old/expensive and circle got in touble for a few security issues though. gitlab has some nice tools from my experience.

    Im interested as well. Ive got a forgjo that I would love to hook into at some point.

      • zr0@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        27 days ago

        Every language, that uses functional white spaces, is absolutely awesome!!

        — no one

      • Jayjader@jlai.lu
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        27 days ago

        I dislike yaml as much as the next person, but you can always “just” write Jason JSON (lol autocorrect). Unless I’m misunderstanding your criticism?

        • chilicheeselies@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          27 days ago

          Yaml is vette than json for this IMO brcausebyou can write comments in yaml, and in general format multiline strings easier. Json is best for system to system comms. Human to system literlaly anything other text formst than json.

        • Scrubbles@poptalk.scrubbles.tech
          link
          fedilink
          English
          arrow-up
          0
          ·
          27 days ago

          Sure! I use Kaniko (Although I see now that it’s not maintained anymore). I’ll probably pull the image in locally to protect it…

          Kaniko does the Docker in Docker, and I found an action that I use, but it looks like that was taken down… Luckily I archived it! Make an action in Forgejo (I have an infrastructure group that I add public repos to for actions. So this one is called action-koniko-build and all it has is this action.yml file in it:

          name: Kaniko
          description: Build a container image using Kaniko
          inputs:
            Dockerfile:
              description: The Dockerfile to pass to Kaniko
              required: true
            image:
              description: Name and tag under which to upload the image
              required: true
            registry:
              description: Domain of the registry. Should be the same as the first path component of the tag.
              required: true
            username:
              description: Username for the container registry
              required: true
            password:
              description: Password for the container registry
              required: true
            context:
              description: Workspace for the build
              required: true
          runs:
            using: docker
            image: docker://gcr.io/kaniko-project/executor:debug
            entrypoint: /bin/sh
            args:
              - -c
              - |
                mkdir -p /kaniko/.docker
                echo '{"auths":{"${{ inputs.registry }}":{"auth":"'$(printf "%s:%s" "${{ inputs.username }}" "${{ inputs.password }}" | base64 | tr -d '\n')'"}}}' > /kaniko/.docker/config.json
                echo Config file follows!
                cat /kaniko/.docker/config.json
                /kaniko/executor --insecure --dockerfile ${{ inputs.Dockerfile }} --destination ${{ inputs.image }} --context dir://${{ inputs.context }}     
          

          Then, you can use it directly like:

          name: Build and Deploy Docker Image
          
          on:
            push:
              branches:
                - main
            workflow_dispatch:
          
          jobs:
            build:
              runs-on: docker
          
              steps:
              # Checkout the repository
              - name: Checkout code
                uses: actions/checkout@v3
          
              - name: Get current date # This is just how I label my containers, do whatever you prefer
                id: date
                run: echo "::set-output name=date::$(date '+%Y%m%d-%H%M')"
          
              - uses:  path.to.your.forgejo.instance:port/infrastructure/action-koniko-build@main # This is what I said above, it references your infrastructure action, on the main branch
                with:
                  Dockerfile: cluster/charts/auth/operator/Dockerfile
                  image: path.to.your.forgejo.instance:port/group/repo:${{ steps.date.outputs.date }}
                  registry: path.to.your.forgejo.instance:port/v1
                  username: ${{ env.GITHUB_ACTOR }}
                  password: ${{ secrets.RUNNER_TOKEN }} # I haven't found a good secret option that works well, I should see if they have fixed the built-in token
                  context: ${{ env.GITHUB_WORKSPACE }}
          

          I run my runners in Kubernetes in the same cluster as my forgejo instance, so this all hooks up pretty easy. Lmk if you want to see that at all if it’s relevant. The big thing is that you’ll need to have them be Privileged, and there’s some complicated stuff where you need to run both the runner and the “dind” container together.

          • felbane@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            27 days ago

            Thanks for the write-up! I’ve been trying and failing to do DOOD and POOP runners via forgejo, but I haven’t had the time or energy to really dig in and figure out the issue. At this point I just want something to work so I’ll give your setup a try 😎

    • AA5B@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      27 days ago

      I’m not entirely sure why all the hate : Jenkins can do the most things the must ways. And yes, it’s so much nicer defining a pipeline with a fully functional language than an assortment of yaml files

      Actually that was my response when my company wanted to start using Gitlab ci. It only has one way of doing things so you can probably get a faster start if you had no ci, were a small company, and had simple builds. However we’re over 4,000 builds in many languages from 12 year old monoliths to modern micro services and containers…… and way too much godawful JavaScript. Do you want the quick and simple tool great for a small startup or the all powerful kitchen sink of tools?

    • prettybunnys@piefed.social
      link
      fedilink
      English
      arrow-up
      0
      ·
      27 days ago

      Jenkins is good enough to be widely used enough to be hated enough to be downvoted.

      The sign of a mature product IMO.

      You could do worse than Jenkins

      • Avid Amoeba@lemmy.ca
        link
        fedilink
        English
        arrow-up
        0
        ·
        27 days ago

        Been using Jenkins since before it was called Jenkins. It’s been in use at every corpo I’ve worked for. It can practically do anything. Especially coupled with Docker.

      • PushButton@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        27 days ago

        I was scrolling, looking for a Jenkins somewhere, to finally find that post with down votes.

        Every company I go, it’s a different CICD, and they all make me wish to use Jenkins instead.

  • h54@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    28 days ago

    IMO, Gitlab CI/CD blows Github out of the water. They’re not even in the same league. I recommend Gitlab + self hosted runners (it’s so easy).

    I’ve been using Gitlab for many years and host my own runners as of the past 6 months because I nearly exhausted my monthly free tier runner minutes one month.

    • jacksilver@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      27 days ago

      I had someone swear to me that Github templating was better, but I’ve only worked with Gitlabs templates. Why do you like Gitlab over Github?

      • h54@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        27 days ago

        Gitlab CI feels native. Github offers similar functionality but it feels/looks like an afterthought. I think the Gitlab .yaml structure is more intuitive. Also, how the Gitlab UI visually represents a pipeline is mcuh better, IMO. Self hosting runners on my server (Ubuntu) is so easy and free. I hadn’t tried it with Github but it sounds like it still costs money?!

        Note: I don’t work for Gitlab

    • xcjs@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      27 days ago

      I second GitLab CI/CD - it’s a CI/CD system that just makes sense to me. That doesn’t mean it doesn’t have its complexities depending on your needs, but I’ve overall enjoyed my time working with it.

    • douglasg14b@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      27 days ago

      Edit: I forgot this was self-hosted community, disregard.


      How does organization work out?

      We have dozens of workflows for our monorepo CI/CD stuff. GitHub organization with the flat structure is incredibly annoying.

      GitLab is a single file?? (Or am I misinformed? )How does that work out?

      • h54@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        27 days ago

        The repo specific config is a single file. You can also import templates/other files if need be. I worked in a shop where Devops set up a bunch of templates for generic, common jobs which made getting started easy. If custom config/code is required, overriding a templated job was easy. I was responsible for migrating my team’s ~50 repos (services, libraries, etc) from Jenkins + Bitbucket into Gitlab and found it to be pretty straightforward.

    • Victor@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      27 days ago

      connexion

      I’m imagining you saying “connex-yun”, and it reminds me of Stewie saying “cool-hhhwip”.

  • Carol2852@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    0
    ·
    28 days ago

    I’m using gitea which has CI compatible to GitHub actions with my own runner. It’s pretty straightforward to set up and didn’t give me any headaches yet. It’s a very small instance just for my ownaybe dozen projects though.

    • yaroto98@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      28 days ago

      This is what I was using till I switched to forgejo and never got around to setting up one of their runners.

      • Carol2852@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        0
        ·
        27 days ago

        I run their act binary on one of my servers. Can’t remember much of the setup, so I can’t be too bad. I did have to change the used images though, but I guess that comes with maintenance of you own runner anyway.

      • cecilkorik@lemmy.ca
        link
        fedilink
        English
        arrow-up
        0
        ·
        27 days ago

        If it helps motivate you to give it a shot, I found gitea’s runner very confusing to set up, but I felt like forgejo was better designed, pretty easy and well documented.

      • witten@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        27 days ago

        Out of curiosity, how did you switch to Forgejo? I thought Gitea and Forgejo have diverged to the point where you can no longer just switch over without losing stuff.

        • yaroto98@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          27 days ago

          I hadn’t used gitea for long. I just had both running, and then cloned my repos one at a time manually. So long as I had the code, I didn’t really care.

      • Finn@toot.fan
        link
        fedilink
        arrow-up
        0
        ·
        27 days ago

        @yaroto98 @Carol2852 Same here, switched from gitea to forgejo. I still was using the act runner for some time, later I replaced it with the forgejo-runner.

        Works pretty smooth!

    • chrash0@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      28 days ago

      good lead. it’s just the one project for now, and to my surprise it’s actually a dependency for the ollama-rs project, so i feel somewhat obligated to keep it stable.

      • chocrates@piefed.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        27 days ago

        I get the hate but did you ever have to maintain jenkins pipelines? I’ll take yaml any day.

        I’m game to explore the next evolution though.