I left Github a while ago and have been relying on simple pre-push scripts in my workflow, but would like to be able to test PRs from others without putting my machine at risk. Besides codeberg and radicle (neither of which have reliable CI), I also have a build machine, where I could run CI jobs, however it is important that the CI jobs can also run locally so that external people do not require access to the build machine.

Is there a CI that can do those things (run locally and remotely)?

Anti Commercial-AI license

  • Björn Lindström
    link
    fedilink
    1916 days ago

    @onlinepersona don’t do it. Create makefiles or whatever that runs the build as a series of Podman/Docker commands or whatever, then just put as little CI config as possible around it. You’ll thank me when you need to switch CI system.

    • TrumpetX
      link
      fedilink
      English
      416 days ago

      I can’t upvote this comment enough. I grow so angry at Gitlab ci and GitHub actions. Even Jenkins got in on the junk.

      Just use normal build tools and you can use whatever cruft you want around it with just a few lines instead of monster ci file that goes out of date next year.

      • @[email protected]
        link
        fedilink
        4
        edit-2
        16 days ago

        I can’t speak for general use. But use it to:

        1. Build Rust artifacts
        2. Rebuild static sites, upload them to a bucket, then clear the CDN cache.

        It works perfectly for me and I have not run into issues. But it might be bad for other people. I just know it works well for me.

    • @[email protected]OP
      link
      fedilink
      116 days ago

      Are you able to run woodpecker locally from the repository? As in can woodpecker run in the checked out repository run the CI jobs?

      • @[email protected]
        link
        fedilink
        216 days ago

        It also has a CLI tool that I know can re-run your pipeline locally for debugging, so just running it normally should also be possible. Haven’t used either so far though.

        • @[email protected]OP
          link
          fedilink
          115 days ago

          I can’t find documentation about that unfortunately 🧐 There’s woodpecker-cli exec but after testing that on the example pipeline, it does nothing even with verbose logging.

          Do you have a functional example somewhere?

          Anti Commercial-AI license

  • @[email protected]
    link
    fedilink
    216 days ago

    would like to be able to test PRs from others without putting my machine at risk

    I know what you mean, but do you not read the diff? Are you working on codebases that are so obfuscated that you can’t spot a malicious command?

      • @[email protected]
        link
        fedilink
        315 days ago

        Run your CI in a sandbox.
        For example gitlab allows you to run in a docker image.
        Unless the attacker knows a docker CVE or is willing to waste a specter style 0-day on you, the most they can do is waste your cpu cycles.

        • @[email protected]
          link
          fedilink
          English
          2
          edit-2
          15 days ago

          Yep. Hell, be very paranoid and run it in a container on a runner VM on your box if you like.

          And you can use podman or sysbox there.

  • @[email protected]
    link
    fedilink
    316 days ago

    Great timing. I’m interested in this as well. I am currently attempting an ansible setup that runs podman containers in a couple lxc incus containers (developnent setup to mimic production) with forgejo and woodpecker on the other lxc container but it has been a battle.

    Currently unable to figure out why the ‘general.community’ modules won’t get recognized by ansible.

  • @[email protected]
    link
    fedilink
    216 days ago

    Surprised to not see Gitea here, thats what I’ve been using for awhile now for my little projects

    • @[email protected]
      link
      fedilink
      1116 days ago

      gitea has had some organizational problems so a lot of people have been using forgejo instead, which is just a community fork of gitea plus some more features

    • @[email protected]OP
      link
      fedilink
      English
      115 days ago

      Is that easy to run for contributors? Can you just gitea-run-ci and it’ll run the CI locally in your checked out repository?

  • @[email protected]
    link
    fedilink
    216 days ago

    Woodpecker with Ansible. Woodpecker will give container environment and using Ansible will reduce dependency on the CI tool.

    Woodpecker has a alpine linux based container for Ansible. It will take some time to setup, but will make the life much easier.

      • @[email protected]
        link
        fedilink
        215 days ago

        As I mentioned it is to reduce dependency on CI tool. You may have to shift the tool in the future and if you use a lot of commands specific to the CI tool, that is going to be a nightmare.

        Ansible is agent less and only needs SSH access. You can SSH into your local system, from the same local system. Need to add few entries in your SSH config and known_hosts. Essentially everything in Ansible are shell commands. So you are not really that much locked into Ansible.

        On the question,

        Does that make running it locally easier?

        If you mean making it easier compared to remote, on the surface level, the answer is ‘no’. But it makes CI pipeline easier to run independent of your environment. Ansible is here to reduce dependency on a specific tool.

        Bonus point is you can also create a working but basic CD system with Ansible.

    • @[email protected]OP
      link
      fedilink
      English
      115 days ago

      After perusing the docs, this looks more like it. Thank you. I’ll just have to explore how it can be combined with projects that use nix and those that don’t. My biggest issue with CIs has always been caching, but as the saying goes “there are 2 hard problems in computer science…”

      Anti Commercial-AI license