Add Ameba #62

Closed
opened 2026-10-19 02:58:57 +00:00 by alex · 2 comments
Owner

We consider Ameba part of our toolbox now: https://github.com/crystal-ameba/ameba

Let's add it to the image, possibly pulling from a Docker repo

We consider Ameba part of our toolbox now: https://github.com/crystal-ameba/ameba Let's add it to the image, possibly pulling from a Docker repo
Author
Owner

/pi new PR

/pi new PR
Contributor

No Docker available locally, so I'll follow the existing pattern: build Ameba from source in the Crystal stage and copy the binary over.The shard.yml confirms src/cli.cr is the ameba target main file. Creating the PR:PR created: #63

What it does — adds Ameba (Crystal linter) to the runner image:

  • New ameba-builder stage reusing the existing docker.io/crystallang/crystal:1 base, pinned to AMEBA_VERSION=v1.7.0 (latest tag). Upstream doesn't publish an official prebuilt image, so it's built from source: shards install --without-development && crystal build src/cli.cr --release.
  • The binary is copied into the final image at /usr/local/bin/ameba, following the same pattern as the other multi-stage copies.
  • ameba --version added to the build-time version checks so the build fails fast if the binary is broken or missing shared libs.

Note: I couldn't build-test locally (no Docker available in this environment), so the daily CI build will be the first validation.


View action run | Model: zai/glm-5.3-flash (thinking: low) | Time: 3m 13s | Tokens: 167.2K | Cost: $0.01 | Pi SDK v1.2.0 | Action v2.30.0-develop (develop @ 4ddb1db)

<!-- pi-coding-agent-comment --> No Docker available locally, so I'll follow the existing pattern: build Ameba from source in the Crystal stage and copy the binary over.The `shard.yml` confirms `src/cli.cr` is the ameba target main file. Creating the PR:PR created: https://forge.l3x.in/alex/runner-image/pulls/63 **What it does** — adds [Ameba](https://github.com/crystal-ameba/ameba) (Crystal linter) to the runner image: - New `ameba-builder` stage reusing the existing `docker.io/crystallang/crystal:1` base, pinned to `AMEBA_VERSION=v1.7.0` (latest tag). Upstream doesn't publish an official prebuilt image, so it's built from source: `shards install --without-development && crystal build src/cli.cr --release`. - The binary is copied into the final image at `/usr/local/bin/ameba`, following the same pattern as the other multi-stage copies. - `ameba --version` added to the build-time version checks so the build fails fast if the binary is broken or missing shared libs. Note: I couldn't build-test locally (no Docker available in this environment), so the daily CI build will be the first validation. --- [View action run](https://forge.l3x.in/alex/runner-image/actions/runs/190) | Model: zai/glm-5.3-flash (thinking: low) | Time: 3m 13s | Tokens: 167.2K | Cost: $0.01 | Pi SDK v1.2.0 | Action v2.30.0-develop (develop @ 4ddb1db)
alex closed this issue 2026-10-19 04:37:40 +00:00
Sign in to join this conversation.
No labels
dependencies
No milestone
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
alex/runner-image#62
No description provided.