tangled
alpha
login
or
join now
evan.jarrett.net
/
git-summarize
1
fork
atom
An AI-powered tool that generates human-readable summaries of git changes using tool calling with a self-hosted LLM
1
fork
atom
overview
issues
pulls
pipelines
cleanup oci labels
evan.jarrett.net
3 months ago
3483d85d
20324ae6
verified
This commit was signed with the committer's
known signature
.
evan.jarrett.net
SSH Key Fingerprint:
SHA256:bznk0uVPp7XFOl67P0uTM1pCjf2A4ojeP/lsUE7uauQ=
0/1
release.yml
failed
1m 7s
+45
-25
3 changed files
expand all
collapse all
unified
split
.tangled
workflows
release.yml
Dockerfile
Makefile
+6
-10
.tangled/workflows/release.yml
reviewed
···
25
25
buildah bud \
26
26
--arch amd64 \
27
27
--build-arg TARGETARCH=amd64 \
28
28
-
--build-arg VERSION=${TANGLED_REF_NAME} \
29
29
-
--build-arg CREATED=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
30
30
-
--build-arg REVISION=${TANGLED_COMMIT_SHA} \
31
31
-
--build-arg TANGLED_REPO_DID=${TANGLED_REPO_DID} \
32
32
-
--build-arg TANGLED_REPO_NAME=${TANGLED_REPO_NAME} \
28
28
+
--label org.opencontainers.image.version="${TANGLED_REF_NAME}" \
29
29
+
--label org.opencontainers.image.created="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
30
30
+
--label org.opencontainers.image.revision="${TANGLED_COMMIT_SHA}" \
33
31
--tag ${IMAGE_REGISTRY}/${TANGLED_REPO_HANDLE}/${TANGLED_REPO_NAME}:${TANGLED_REF_NAME}-amd64 \
34
32
--file ./Dockerfile \
35
33
.
···
39
37
buildah bud \
40
38
--arch arm64 \
41
39
--build-arg TARGETARCH=arm64 \
42
42
-
--build-arg VERSION=${TANGLED_REF_NAME} \
43
43
-
--build-arg CREATED=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
44
44
-
--build-arg REVISION=${TANGLED_COMMIT_SHA} \
45
45
-
--build-arg TANGLED_REPO_DID=${TANGLED_REPO_DID} \
46
46
-
--build-arg TANGLED_REPO_NAME=${TANGLED_REPO_NAME} \
40
40
+
--label org.opencontainers.image.version="${TANGLED_REF_NAME}" \
41
41
+
--label org.opencontainers.image.created="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
42
42
+
--label org.opencontainers.image.revision="${TANGLED_COMMIT_SHA}" \
47
43
--tag ${IMAGE_REGISTRY}/${TANGLED_REPO_HANDLE}/${TANGLED_REPO_NAME}:${TANGLED_REF_NAME}-arm64 \
48
44
--file ./Dockerfile \
49
45
.
+6
-10
Dockerfile
reviewed
···
11
11
12
12
FROM alpine:3.20
13
13
14
14
-
ARG VERSION=dev
15
15
-
ARG CREATED
16
16
-
ARG REVISION
17
17
-
ARG TANGLED_REPO_DID
18
18
-
ARG TANGLED_REPO_NAME
19
19
-
14
14
+
# Static labels
20
15
LABEL org.opencontainers.image.title="git-summarizer" \
21
16
org.opencontainers.image.description="AI-powered git change summarizer using agentic tool-calling with self-hosted LLMs" \
22
22
-
org.opencontainers.image.version="${VERSION}" \
23
23
-
org.opencontainers.image.created="${CREATED}" \
24
24
-
org.opencontainers.image.revision="${REVISION}" \
25
17
org.opencontainers.image.licenses="MIT" \
26
26
-
org.opencontainers.image.source="https://tangled.sh/${TANGLED_REPO_DID}/${TANGLED_REPO_NAME}"
18
18
+
org.opencontainers.image.authors="Evan Jarrett" \
19
19
+
org.opencontainers.image.source="https://tangled.org/evan.jarrett.net/git-summarize" \
20
20
+
org.opencontainers.image.documentation="https://tangled.org/evan.jarrett.net/git-summarize"
21
21
+
22
22
+
# Dynamic labels are passed via --label flags at build time
27
23
28
24
RUN apk add --no-cache ca-certificates
29
25
+33
-5
Makefile
reviewed
···
1
1
-
.PHONY: build run docker test clean
1
1
+
.PHONY: build run docker docker-run docker-build docker-build-local setup-buildx test test-bluesky clean
2
2
+
3
3
+
# Container tool and image configuration
4
4
+
CONTAINER_TOOL ?= docker
5
5
+
IMG ?= atcr.io/evan.jarrett.net/git-summarizer:latest
2
6
3
7
# Build binary
4
8
build:
···
9
13
run: build
10
14
./git-summarizer
11
15
12
12
-
# Build docker image
16
16
+
# Build docker image (legacy, use docker-build-local or docker-build instead)
13
17
docker:
14
14
-
docker build -t git-summarizer:latest .
18
18
+
$(CONTAINER_TOOL) build -t $(IMG) .
15
19
16
20
# Run docker locally
17
21
docker-run:
18
18
-
docker run --network=host \
22
22
+
$(CONTAINER_TOOL) run --network=host \
19
23
-e LLAMA_URL=https://llama.j5t.io \
20
24
-e LLAMA_MODEL=qwen3-coder-30b \
21
21
-
git-summarizer:latest
25
25
+
$(IMG)
26
26
+
27
27
+
# Build and push multi-arch docker image (amd64 + arm64)
28
28
+
docker-build: setup-buildx
29
29
+
$(CONTAINER_TOOL) buildx build \
30
30
+
--builder git-summarizer-builder \
31
31
+
--platform=linux/amd64,linux/arm64 \
32
32
+
--push \
33
33
+
--tag $(IMG) \
34
34
+
.
35
35
+
36
36
+
# Build docker image for local arch only (no push)
37
37
+
docker-build-local:
38
38
+
$(CONTAINER_TOOL) build -t $(IMG) .
39
39
+
40
40
+
# Set up buildx builder for multi-arch builds
41
41
+
setup-buildx:
42
42
+
@echo "Setting up git-summarizer-builder..."
43
43
+
-$(CONTAINER_TOOL) buildx rm git-summarizer-builder 2>/dev/null || true
44
44
+
$(CONTAINER_TOOL) buildx create --name git-summarizer-builder \
45
45
+
--driver docker-container \
46
46
+
--driver-opt network=host \
47
47
+
--config /dev/stdin <<< 'debug = true' || true
48
48
+
$(CONTAINER_TOOL) buildx inspect --bootstrap git-summarizer-builder
49
49
+
@echo "✓ Builder setup complete!"
22
50
23
51
# Test with a public repo
24
52
test: