From 3416950f5551d275bb63ed9d390b849b3f34772c Mon Sep 17 00:00:00 2001 From: gearnode Date: Sun, 26 Jan 2025 10:50:36 +0100 Subject: [PATCH] Add docker build workflow Signed-off-by: gearnode --- .dockerignore | 3 +++ .github/workflows/make.yaml | 21 ++++++++++++++++++--- Dockerfile | 3 +++ GNUmakefile | 14 ++++++++++++-- 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..3614d94ee --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.git +bin/ +tmp/ diff --git a/.github/workflows/make.yaml b/.github/workflows/make.yaml index affc68ff3..48a25fbc8 100644 --- a/.github/workflows/make.yaml +++ b/.github/workflows/make.yaml @@ -8,13 +8,28 @@ on: - "main" jobs: - build: - name: "build" + docker-build: + name: "docker-build" + runs-on: "ubuntu-22:04" + steps: + - uses: "actions/checkout@v4" + - uses: "docker/setup-qemu-action@v2" + - uses: "docker/setup-buildx-action@v2" + - uses: "docker/login-action@v2" + with: + registry: "ghcr.io" + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - run: "make docker-build" + env: + DOCKER_BUILD_FLAGS: "--platform linux/amd64,linux/arm64 --push" + bin/probod: + name: "bin/probod" runs-on: "ubuntu-22.04" steps: - uses: "actions/checkout@v4" - uses: "actions/setup-node@v4" - - run: "make build" + - run: "make bin/probod" fmt-check: name: "fmt-check" runs-on: "ubuntu-22.04" diff --git a/Dockerfile b/Dockerfile index 4d20964cd..419f9b1a2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,9 @@ RUN --mount=type=cache,target=/root/.cache/go-build \ make bin/probod FROM ubuntu:22.04 +LABEL org.opencontainers.image.source="https://github.com/getprobo/probo" +LABEL org.opencontainers.image.licenses="MIT" +LABEL org.opencontainers.image.vendor="Probo Inc" WORKDIR /app RUN useradd -m probo && \ apt-get update && \ diff --git a/GNUmakefile b/GNUmakefile index 5c3ab50d1..56e89e1dc 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -3,6 +3,9 @@ PRETTIER?= $(NPX) prettier GO?= go DOCKER?= docker +DOCKER_BUILD_FLAGS?= +DOCKER_BUILD= DOCKER_BUILDKIT=1 $(DOCKER) build $(DOCKER_BUILD_FLAGS) + DOCKER_COMPOSE= $(DOCKER) compose -f compose.yaml $(DOCKER_COMPOSE_FLAGS) VERSION= unknown @@ -14,6 +17,9 @@ GO_GENERATE= $(GO) generate CONTROL_SRC:= $(shell find ./controls -type f -name "*.md") +DOCKER_IMAGE_NAME= ghcr.io/getprobo/probo +DOCKER_TAG_NAME?= latest + PROBOD_BIN= bin/probod PROBOD_SRC= cmd/probod/main.go @@ -28,10 +34,14 @@ vet: $(GO) vet ./... .PHONY: build -build: vet bin/probod +build: bin/probod docker-build + +.PHONY: docker-build +docker-build: + $(DOCKER_BUILD) --tag $(DOCKER_IMAGE_NAME):$(DOCKER_TAG_NAME) --file Dockerfile . .PHONY: bin/probod -bin/probod: pkg/api/console/v1/schema/schema.go pkg/api/console/v1/types/types.go pkg/api/console/v1/v1_resolver.go +bin/probod: pkg/api/console/v1/schema/schema.go pkg/api/console/v1/types/types.go pkg/api/console/v1/v1_resolver.go vet $(GO_BUILD) -o $(PROBOD_BIN) $(PROBOD_SRC) pkg/api/console/v1/schema/schema.go \