commit 34c40f8839cd8ead6a3e4900d67abf0feea76ea7
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2026-06-18T20:38:42Z |
| subject | makefile adds docker push |
commit 34c40f8839cd8ead6a3e4900d67abf0feea76ea7
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2026-06-18T20:38:42Z
makefile adds docker push
---
.gitignore | 1 +
Makefile | 27 +++++++++++++++++++++++-
build.env | 3 +++
dockerfiles/dev.Dockerfile | 4 ----
dockerfiles/runtime.Dockerfile | 41 +++++++++++++++++++++++++++++++++++++
go.sum | 0
internal/buildinfo/buildinfo_gen.go | 4 ++--
7 files changed, 73 insertions(+), 7 deletions(-)
diff --git a/.gitignore b/.gitignore
index 7c0e8d3..8b87ab2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
/dist/
out/
bin/
+build.env.work
*.test
*.out
*.swp
diff --git a/Makefile b/Makefile
index 54020d2..213aaf3 100644
--- a/Makefile
+++ b/Makefile
@@ -5,13 +5,30 @@ export
OUT_DIR := out
BIN_DIR := bin
+IMAGE_NAME ?= penguinade/flatgit
+IMAGE_TAG ?= dev
+
VERSION ?= dev
GIT_REV := $(shell git rev-parse HEAD)
BUILDINFO_FILE := internal/buildinfo/buildinfo_gen.go
+BUILDX_BUILDER ?= container-builder
all: test build
+ensure-buildx:
+ @if ! docker buildx inspect $(BUILDX_BUILDER) >/dev/null 2>&1; then \
+ echo "Creating buildx builder $(BUILDX_BUILDER)..."; \
+ docker buildx create \
+ --name $(BUILDX_BUILDER) \
+ --driver docker-container \
+ --driver-opt network=host \
+ --bootstrap --use; \
+ else \
+ echo "Using existing buildx builder $(BUILDX_BUILDER)"; \
+ docker buildx use $(BUILDX_BUILDER); \
+ fi
+
.buildinfo:
@mkdir -p $(dir $(BUILDINFO_FILE))
@printf '%s\n' \
@@ -28,6 +45,14 @@ build: .buildinfo
mkdir -p "$(OUT_DIR)" "$(BIN_DIR)"
go build -o "$(BIN_DIR)/flatgit" ./cmd/flatgit
+push: .buildinfo
+ docker buildx build \
+ --platform linux/amd64,linux/arm64 \
+ --build-arg APT_PROXY=$(APT_PROXY) \
+ -f dockerfiles/runtime.Dockerfile \
+ -t $(IMAGE_NAME):$(IMAGE_TAG) \
+ --push .
+
test:
go test ./...
@@ -44,4 +69,4 @@ clean:
rm -f "$(BIN_DIR)/flatgit"
rm -rf dist
-.PHONY: all build test fmt vet clean run
+.PHONY: all build test fmt vet clean run push ensure-buildx
diff --git a/build.env b/build.env
index 4663905..05dcac8 100644
--- a/build.env
+++ b/build.env
@@ -1 +1,4 @@
+IMAGE_NAME=penguinade/flatgit
+IMAGE_TAG=dev
+
APT_PROXY=
diff --git a/dockerfiles/dev.Dockerfile b/dockerfiles/dev.Dockerfile
deleted file mode 100644
index e0e141b..0000000
--- a/dockerfiles/dev.Dockerfile
+++ /dev/null
@@ -1,4 +0,0 @@
-FROM golang:1.26-alpine
-RUN apk add --no-cache git make
-WORKDIR /src
-CMD ["sh"]
diff --git a/dockerfiles/runtime.Dockerfile b/dockerfiles/runtime.Dockerfile
new file mode 100644
index 0000000..0364b34
--- /dev/null
+++ b/dockerfiles/runtime.Dockerfile
@@ -0,0 +1,41 @@
+FROM golang:1.26-trixie AS build
+
+ARG TARGETOS
+ARG TARGETARCH
+
+WORKDIR /src
+
+COPY go.mod go.sum ./
+
+RUN --mount=type=cache,target=/go/pkg/mod \
+ go mod download
+
+COPY "internal" ./internal
+COPY "cmd" ./cmd
+
+RUN --mount=type=cache,target=/go/pkg/mod \
+ --mount=type=cache,target=/root/.cache/go-build \
+ mkdir bin && \
+ CGO_ENABLED=0 \
+ GOOS=$TARGETOS \
+ GOARCH=$TARGETARCH \
+ go build -trimpath -o "bin/flatgit" ./cmd/flatgit
+
+RUN mkdir -p /out/tmp && chmod 1777 /out/tmp
+
+FROM debian:trixie-slim AS runtime
+
+ARG TARGETOS
+ARG TARGETARCH
+ARG APT_PROXY
+
+RUN if [ -n "${APT_PROXY}" ]; then \
+ echo "Acquire::http::Proxy \"http://${APT_PROXY}\";" > /etc/apt/apt.conf.d/01proxy; \
+ fi
+
+COPY --from=build /src/bin/flatgit /usr/local/bin/flatgit
+COPY --from=build /out/tmp /tmp
+
+RUN flatgit version
+
+ENTRYPOINT ["/usr/local/bin/flatgit"]
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..e69de29
diff --git a/internal/buildinfo/buildinfo_gen.go b/internal/buildinfo/buildinfo_gen.go
index ecb2443..f11f874 100644
--- a/internal/buildinfo/buildinfo_gen.go
+++ b/internal/buildinfo/buildinfo_gen.go
@@ -2,6 +2,6 @@ package buildinfo
const (
Version = "dev"
- GitRevision = "e9ca3ccc17250e570d1f9ba87f5c98acbb761637"
- Timestamp = "20260618.200301"
+ GitRevision = "b5be7ec12ae5b4b0075f0f9bea40aca17fa904ff"
+ Timestamp = "20260618.203511"
)