announcements

cfleming 2025-08-11T01:36:39.620399Z

Cursive 2025.2.1-eap1 is out. Quality of life fixes to clj-kondo support, and one bugfix. https://cursive-ide.com/blog/cursive-2025.2.1-eap1.html

πŸŽ‰ 11
Wout Neirynck 2025-08-11T12:14:15.396319Z

After over a year of development I'm finally satisfied enough with it to present to you MonkeyCI, a Clojure-based CI/CD SaaS tool. Do your builds in Clojure! Expect many more features and improvements in the future. I invite you all to check it out at https://www.monkeyci.com Features include: - Build scripts in Clojure, edn, json or yaml (or a combination thereof) - Unit tests on build scripts - Run builds locally using the cli - Extensible by using standard Clojure libs - Supports Github, Bitbucket, Codeberg and custom webhooks

πŸ‘€ 6
😍 4
πŸŽ‰ 32
2025-08-12T08:43:07.706739Z

Thanks for the update, now verify is happy, but the build run still seems to do nothing. It looked to me like the build script runs app tests so I expected something to happen with build run vs running tests of the build script with build test. I am likely missing some insights that did not click from reading the docs.

2025-08-12T08:43:18.539159Z

Also noticed description on Github links to https://monkeyci.com/ which does not work, while https://www.monkeyci.com/ works.

Wout Neirynck 2025-08-12T11:38:49.056789Z

See my PM

πŸ™ 1
2025-08-11T12:35:33.644289Z

the site doesn't load for me

Wout Neirynck 2025-08-11T12:36:23.278489Z

Off to a bad start πŸ™‚. Let me check it out

borkdude 2025-08-11T12:36:58.631269Z

Is the code public (I guess not) or do you have anything to share about how it was built?

Wout Neirynck 2025-08-11T12:37:22.443169Z

yes, it's public, https://github.com/monkey-projects/monkeyci

πŸŽ‰ 6
Wout Neirynck 2025-08-11T12:37:58.018909Z

I wrote it in Clojure, including the static and docs websites, which is generated using markdown and hiccup

Wout Neirynck 2025-08-11T12:38:08.395209Z

Didn't feel like writing html ;)

Wout Neirynck 2025-08-11T12:39:35.526599Z

Site should work now, seems to be a temp hiccup on the provider side 🀷

borkdude 2025-08-11T12:41:13.344239Z

What I'm interested in is how you load user scripts. It seems you're using using the Clojure compiler: https://github.com/monkey-projects/monkeyci/blob/87dbef691274114897ba6eb1e7092ed351526973/app/src/monkey/ci/script/core.clj#L59 So people can execute basically anything on your CI server then right?

Wout Neirynck 2025-08-11T12:41:56.695119Z

Build scripts are running on agents, which start a container and load the scripts there

Wout Neirynck 2025-08-11T12:42:02.217319Z

So it's not run on the main api server

borkdude 2025-08-11T12:42:06.247969Z

ah right

borkdude 2025-08-11T12:42:26.044069Z

pretty nice :)

Wout Neirynck 2025-08-11T12:42:28.452919Z

Yes, security is a major issue if you allow anybody to run code in your system πŸ™‚

borkdude 2025-08-11T12:43:02.634809Z

congrats on your project, looks like a lot of work :)

Wout Neirynck 2025-08-11T12:43:37.906439Z

Thanks, it was indeed more work than I expected. Especially the infra stuff, I underestimated that.

borkdude 2025-08-11T12:44:50.591839Z

What would you say is the benefit of using a custom CI environment vs just writing your build in clojure (or bb) and run that script on a "normal" CI provider?

Wout Neirynck 2025-08-11T12:47:17.350059Z

I think one does not exclude the other. Both can be used at the same time. You can write your build using bb, or clojure cli or whatever, and then execute those in jobs using monkeyci, which allows more control on when to run those jobs or how to configure them.

Wout Neirynck 2025-08-11T12:47:56.971099Z

That is my main frustration with existing ci/cd tools, you don't have enough control when you have a complicated build script.

πŸ‘ 2
Wout Neirynck 2025-08-11T12:50:56.995759Z

It's also aimed at non-clojure projects, which are often less flexible. But I'm going for clojure-lovers first πŸ™‚.

❀️ 3
gaverhae 2025-08-11T15:00:54.131219Z

My main gripe with all of the CI systems I've used so far is this: Docker seems to be the isolation mechanism we standardised on. This is fine. Build definitions can thus select a Docker image to run in, usually with a choice of either choosing from a handful of images provided by the platform, or using an image hosted elsewhere. What I don't understand is why none of them (that I know of, please tell me if I'm wrong here) has an option to say: here's my CI Dockerfile, right here in my repo. Please build this image, then use it to run my tests. I don't want to manage my own, separate build pipeline for Docker images on another platform. Apologies if that feels off topic, I've wanted to tell that to someone who makes a CI platform for a long time.

☝️ 1
borkdude 2025-08-11T15:03:15.619949Z

> has an option to say: here's my CI Dockerfile, I think the issue there may be that it needs to cache that build since it would get slow otherwise? Is it possible to upload that image to a container registry and then use that image in a CI environment? Also probably not since these CI providers need to have some agent running in the container maybe? Or maybe it is possible with CircleCI docker builds, haven't checked

borkdude 2025-08-11T15:03:32.472989Z

yeah, they have docs on this: https://circleci.com/docs/guides/execution-managed/custom-images/

gaverhae 2025-08-11T15:05:59.461339Z

Yes, so this is exactly what I don't want.

gaverhae 2025-08-11T15:06:53.744429Z

Unless I'm misreading something, that page is telling me to, outside of my CI, build my image and push it to a registry myself. I'd like the CI pipeline to deal with that.

borkdude 2025-08-11T15:07:03.544279Z

If you don't want this, wouldn't it be similar to just do the steps you would otherwise do in the Dockerfile, but just in your build?

gaverhae 2025-08-11T15:07:13.676999Z

Sure, but with caching.

Wout Neirynck 2025-08-11T15:07:17.598279Z

In MonkeyCI (and probably, any other CI tool) you could add another job that creates the image, pushes it somewhere (possibly a private repo), and then uses that image in another job to execute the tests.

borkdude 2025-08-11T15:07:35.008589Z

I bet you can do this with circleci too

gaverhae 2025-08-11T15:07:41.491679Z

Yes.

Wout Neirynck 2025-08-11T15:10:28.986669Z

You could even create a https://docs.monkeyci.com/articles/plugins/ that does this automatically, and just include that plugin in all your pipelines where you want to use this feature.

gaverhae 2025-08-11T15:10:33.509359Z

But that means I have to set up a registry somewhere, and handle the synchronization of checking whether the image is available. I'd like to be able to say something like

docker: 
so instead of looking for an existing Docker image at some external registry, it looks in the ci folder of my repo and builds the image and uses it and caches it and I don't need to deal with any of that.

borkdude 2025-08-11T15:11:05.621629Z

It sounds like you need MonkeyCI ;P

borkdude 2025-08-11T15:12:33.987659Z

You could also just rent a VPS and install some git hooks that get run on push :P

Wout Neirynck 2025-08-11T15:12:49.533809Z

MonkeyCI uses podman, which can run standalone, without a service, but I know from experience it's still not easy to build docker images inside containers, when that container has limited privileges.

Wout Neirynck 2025-08-11T15:15:58.086119Z

I'd have to try if MonkeyCI would make this possible πŸ˜…

borkdude 2025-08-11T15:16:24.132829Z

Hmm, maybe this also resembles your wish @gaverhae? https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action

borkdude 2025-08-11T15:16:38.932139Z

> GitHub will build an image from your Dockerfile, and run commands in a new container using this image.

gaverhae 2025-08-11T15:17:57.380459Z

That does sound promising, let me take a closer look.

gaverhae 2025-08-11T15:22:12.487119Z

Oh, no, that's not what I want. 😒

borkdude 2025-08-11T15:22:49.561889Z

Yeah, I realized this is for creating Actions you can use in other places, darnit

borkdude 2025-08-11T15:23:08.324749Z

Gitlab seems to have docker in docker stuff which allows it

gaverhae 2025-08-11T15:23:12.844499Z

Anyway, I don't want to derail this further. Let's just consider that a feature suggestion πŸ™‚

πŸ‘ 1
gaverhae 2025-08-11T15:25:00.772299Z

@wout.neirynck Your website mentions we can start for free, but there does not seem to be a "pricing" page to get some sense of how much it would cost beyond the free tier, and what might be included in the free tier.

βž• 1
borkdude 2025-08-11T15:26:16.876819Z

> Reduce Debugging Time > Write unit-tests for your build scripts to avoid production issues. Note that opening up an nREPL port to the build script would also be great for debugging.

πŸ‘ 1
borkdude 2025-08-11T15:26:29.058799Z

similar to how you can ssh into github actions and circleci

borkdude 2025-08-11T15:31:02.084709Z

I guess it would be great if you could develop the whole build in nREPL incrementally while being connected to the CI env

2025-08-11T16:33:04.015809Z

Congrats, looks great! I really like the rationale. I wanted to try local build to get familiar. Inside the app/examples/clj-build I ran monkeyci build run which computes for a bit and exits with 0 exit code like it succeeds. But then I tried to add (is (= 1 2)) to the example test to make it fail. After running monkeyci build run again I would expect some output and perhaps a non-zero exit code, but still get no output and 0 exit code. Perhaps I misunderstand how local builds should work? Then I tried monkeyci build verify which prints:

Got 1 error(s)
build.clj - at 11:16: Unresolved symbol: test-all
So maybe the example is out of date? Using CLI version 0.19.5 on PopOS/Ubuntu 22.04

Wout Neirynck 2025-08-11T19:19:26.055959Z

Ah yes could be the example need an update, I 'll take a look tomorrow

Wout Neirynck 2025-08-11T19:21:37.103689Z

To run tests, you need to do β€˜monkeyci build test’, they aren't executed when you build

2025-08-11T19:22:33.450789Z

i've been experimenting with https://tangled.sh/, so i'm excited to try this out as an alternative CI system

Wout Neirynck 2025-08-11T19:25:35.325679Z

@gaverhae See https://docs.monkeyci.com/articles/pricing/, it mentions there is no commercial offering yet, it's still a todo πŸ˜…

Wout Neirynck 2025-08-11T19:27:55.559569Z

@borkdude With the cli you can monkeyci build test --watch which will continuously run the tests on changes. But the repl idea is a great suggestion.

Wout Neirynck 2025-08-11T19:54:36.299329Z

@kloud examples updated πŸ™‚

ericdallo 2025-08-11T21:21:15.402879Z

eca https://github.com/editor-code-assistant/eca - Editor Code Assistant - 0.24.2 released with a lots of features for https://github.com/editor-code-assistant/eca-vscode, https://github.com/editor-code-assistant/eca-emacs and https://github.com/editor-code-assistant/eca-nvim! Code with an AI in your editor - https://eca.dev/ β€’ πŸš€ New: custom prompt commands - Ex: /optmize β€’ πŸš€ New: Custom LLM providers - Use ECA in your company β€’ πŸš€ New: /resume to resume previous chats β€’ πŸš€ New: file changes diff support β€’ βš™οΈ MCP: disable, restart servers and tools β€’ ✨ Improved multiple chat UX: better summary of tool calls and more. ✨ Come to #eca for questions/feedbacks or any discussion!

4
13
πŸŽ‰ 15
7