From b1b90d165da468201c34ace992810ce61d4b4da6 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Fri, 28 Apr 2023 11:32:28 +0200 Subject: [PATCH 1/8] make dockerfiles testing only note Signed-off-by: Kristoffer Dalby --- Dockerfile | 5 ++++- Dockerfile.debug | 5 ++++- Dockerfile.tailscale-HEAD | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 367afe94..aa52b13d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,7 @@ -# Builder image +# This Dockerfile and the images produced are for testing headscale, +# and are in no way endorsed by Headscale's maintainers as an +# official nor supported release or distribution. + FROM docker.io/golang:1.21-bookworm AS build ARG VERSION=dev ENV GOPATH /go diff --git a/Dockerfile.debug b/Dockerfile.debug index 8f49d2bc..7a603b05 100644 --- a/Dockerfile.debug +++ b/Dockerfile.debug @@ -1,4 +1,7 @@ -# Builder image +# This Dockerfile and the images produced are for testing headscale, +# and are in no way endorsed by Headscale's maintainers as an +# official nor supported release or distribution. + FROM docker.io/golang:1.21-bookworm AS build ARG VERSION=dev ENV GOPATH /go diff --git a/Dockerfile.tailscale-HEAD b/Dockerfile.tailscale-HEAD index 2a3aac76..83ff9fe5 100644 --- a/Dockerfile.tailscale-HEAD +++ b/Dockerfile.tailscale-HEAD @@ -1,3 +1,7 @@ +# This Dockerfile and the images produced are for testing headscale, +# and are in no way endorsed by Headscale's maintainers as an +# official nor supported release or distribution. + FROM golang:latest RUN apt-get update \ From 8f6e269bac5de1464b921297a2e68bd3102163d5 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Fri, 28 Apr 2023 11:59:19 +0200 Subject: [PATCH 2/8] setup ko image builder for goreleaser Signed-off-by: Kristoffer Dalby --- .goreleaser.yml | 45 +++++++++++++++++++++++++++++++++++++++++++-- flake.nix | 1 + 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 07efe6f7..44955c82 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -9,7 +9,7 @@ release: builds: - id: headscale - main: ./cmd/headscale/headscale.go + main: ./cmd/headscale mod_timestamp: "{{ .CommitTimestamp }}" env: - CGO_ENABLED=0 @@ -63,7 +63,6 @@ nfpms: bindir: /usr/bin formats: - deb - # - rpm contents: - src: ./config-example.yaml dst: /etc/headscale/config.yaml @@ -80,6 +79,48 @@ nfpms: postinstall: ./docs/packaging/postinstall.sh postremove: ./docs/packaging/postremove.sh +kos: + - id: ghcr + repository: ghcr.io/juanfont/headscale + base_image: gcr.io/distroless/base-debian11 + build: headscale + main: ./cmd/headscale + env: + - CGO_ENABLED=0 + platforms: + - linux/amd64 + - linux/386 + - linux/arm64 + - linux/arm/v7 + - linux/arm/v6 + - linux/arm/v5 + tags: + - latest + - '{{ .Tag }}' + - '{{ .Major }}.{{ .Minor }}.{{ .Patch }}' + - '{{ .Major }}.{{ .Minor }}' + - '{{ .Major }}' + - '{{ if not .Prerelease }}stable{{ end }}' + + - id: dockerhub + build: headscale + base_image: gcr.io/distroless/base-debian11 + repository: headscale/headscale + platforms: + - linux/amd64 + - linux/386 + - linux/arm64 + - linux/arm/v7 + - linux/arm/v6 + - linux/arm/v5 + tags: + - latest + - '{{ .Tag }}' + - '{{ .Major }}.{{ .Minor }}.{{ .Patch }}' + - '{{ .Major }}.{{ .Minor }}' + - '{{ .Major }}' + - '{{ if not .Prerelease }}stable{{ end }}' + checksum: name_template: "checksums.txt" snapshot: diff --git a/flake.nix b/flake.nix index 3576e3a0..c3fc64bc 100644 --- a/flake.nix +++ b/flake.nix @@ -95,6 +95,7 @@ gotestsum gotests ksh + ko # 'dot' is needed for pprof graphs # go tool pprof -http=: From b752038402e94047f47a8d898fc36ea4e9a04423 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Sat, 3 Feb 2024 17:10:21 +0100 Subject: [PATCH 3/8] remove release-docker Signed-off-by: Kristoffer Dalby --- .github/workflows/release-docker.yml | 138 --------------------------- 1 file changed, 138 deletions(-) delete mode 100644 .github/workflows/release-docker.yml diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml deleted file mode 100644 index d82f3268..00000000 --- a/.github/workflows/release-docker.yml +++ /dev/null @@ -1,138 +0,0 @@ ---- -name: Release Docker - -on: - push: - tags: - - "*" # triggers only if push new tag version - workflow_dispatch: - -jobs: - docker-release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Set up QEMU for multiple platforms - uses: docker/setup-qemu-action@master - with: - platforms: arm64,amd64 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Docker meta - id: meta - uses: docker/metadata-action@v3 - with: - # list of Docker images to use as base name for tags - images: | - ${{ secrets.DOCKERHUB_USERNAME }}/headscale - ghcr.io/${{ github.repository_owner }}/headscale - tags: | - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - type=raw,value=develop - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push - id: docker_build - uses: docker/build-push-action@v2 - with: - push: true - context: . - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64,linux/arm64 - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache-new - build-args: | - VERSION=${{ steps.meta.outputs.version }} - - name: Prepare cache for next build - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache - - docker-debug-release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Set up QEMU for multiple platforms - uses: docker/setup-qemu-action@master - with: - platforms: arm64,amd64 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache-debug - key: ${{ runner.os }}-buildx-debug-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx-debug- - - name: Docker meta - id: meta-debug - uses: docker/metadata-action@v3 - with: - # list of Docker images to use as base name for tags - images: | - ${{ secrets.DOCKERHUB_USERNAME }}/headscale - ghcr.io/${{ github.repository_owner }}/headscale - flavor: | - suffix=-debug,onlatest=true - tags: | - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - type=raw,value=develop - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push - id: docker_build - uses: docker/build-push-action@v2 - with: - push: true - context: . - file: Dockerfile.debug - tags: ${{ steps.meta-debug.outputs.tags }} - labels: ${{ steps.meta-debug.outputs.labels }} - platforms: linux/amd64,linux/arm64 - cache-from: type=local,src=/tmp/.buildx-cache-debug - cache-to: type=local,dest=/tmp/.buildx-cache-debug-new - build-args: | - VERSION=${{ steps.meta-debug.outputs.version }} - - name: Prepare cache for next build - run: | - rm -rf /tmp/.buildx-cache-debug - mv /tmp/.buildx-cache-debug-new /tmp/.buildx-cache-debug From 3448a96b3b8df848b15e10b06d3dc68d79c0b8e1 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Sat, 3 Feb 2024 17:17:40 +0100 Subject: [PATCH 4/8] remove non-debug Dockerfile Signed-off-by: Kristoffer Dalby --- .goreleaser.yml | 20 ++++++++++---------- Dockerfile | 33 --------------------------------- 2 files changed, 10 insertions(+), 43 deletions(-) delete mode 100644 Dockerfile diff --git a/.goreleaser.yml b/.goreleaser.yml index 44955c82..ee74265a 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -96,11 +96,11 @@ kos: - linux/arm/v5 tags: - latest - - '{{ .Tag }}' - - '{{ .Major }}.{{ .Minor }}.{{ .Patch }}' - - '{{ .Major }}.{{ .Minor }}' - - '{{ .Major }}' - - '{{ if not .Prerelease }}stable{{ end }}' + - "{{ .Tag }}" + - "{{ .Major }}.{{ .Minor }}.{{ .Patch }}" + - "{{ .Major }}.{{ .Minor }}" + - "{{ .Major }}" + - "{{ if not .Prerelease }}stable{{ end }}" - id: dockerhub build: headscale @@ -115,11 +115,11 @@ kos: - linux/arm/v5 tags: - latest - - '{{ .Tag }}' - - '{{ .Major }}.{{ .Minor }}.{{ .Patch }}' - - '{{ .Major }}.{{ .Minor }}' - - '{{ .Major }}' - - '{{ if not .Prerelease }}stable{{ end }}' + - "{{ .Tag }}" + - "{{ .Major }}.{{ .Minor }}.{{ .Patch }}" + - "{{ .Major }}.{{ .Minor }}" + - "{{ .Major }}" + - "{{ if not .Prerelease }}stable{{ end }}" checksum: name_template: "checksums.txt" diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index aa52b13d..00000000 --- a/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -# This Dockerfile and the images produced are for testing headscale, -# and are in no way endorsed by Headscale's maintainers as an -# official nor supported release or distribution. - -FROM docker.io/golang:1.21-bookworm AS build -ARG VERSION=dev -ENV GOPATH /go -WORKDIR /go/src/headscale - -COPY go.mod go.sum /go/src/headscale/ -RUN go mod download - -COPY . . - -RUN CGO_ENABLED=0 GOOS=linux go install -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale -RUN strip /go/bin/headscale -RUN test -e /go/bin/headscale - -# Production image -FROM docker.io/debian:bookworm-slim - -RUN apt-get update \ - && apt-get install -y ca-certificates \ - && rm -rf /var/lib/apt/lists/* \ - && apt-get clean - -COPY --from=build /go/bin/headscale /bin/headscale -ENV TZ UTC - -RUN mkdir -p /var/run/headscale - -EXPOSE 8080/tcp -CMD ["headscale"] From d3ca64acd59fc399319e3450515b291ee4bc8489 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Fri, 28 Apr 2023 10:55:39 +0000 Subject: [PATCH 5/8] Comments and lint Signed-off-by: Kristoffer Dalby --- .github/workflows/release.yml | 2 +- .goreleaser.yml | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 72eddbcb..7b473d9e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,6 +20,6 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@main - name: Run goreleaser - run: nix develop --command -- goreleaser release --clean + run: nix develop --command -- "goreleaser release --clean --debug" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yml b/.goreleaser.yml index ee74265a..0ba94543 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -82,7 +82,7 @@ nfpms: kos: - id: ghcr repository: ghcr.io/juanfont/headscale - base_image: gcr.io/distroless/base-debian11 + base_image: gcr.io/distroless/base-debian12 build: headscale main: ./cmd/headscale env: @@ -92,33 +92,31 @@ kos: - linux/386 - linux/arm64 - linux/arm/v7 - - linux/arm/v6 - - linux/arm/v5 tags: - latest - "{{ .Tag }}" - "{{ .Major }}.{{ .Minor }}.{{ .Patch }}" - "{{ .Major }}.{{ .Minor }}" - "{{ .Major }}" + - "sha-{{ .ShortCommit }}" - "{{ if not .Prerelease }}stable{{ end }}" - id: dockerhub build: headscale - base_image: gcr.io/distroless/base-debian11 + base_image: gcr.io/distroless/base-debian12 repository: headscale/headscale platforms: - linux/amd64 - linux/386 - linux/arm64 - linux/arm/v7 - - linux/arm/v6 - - linux/arm/v5 tags: - latest - "{{ .Tag }}" - "{{ .Major }}.{{ .Minor }}.{{ .Patch }}" - "{{ .Major }}.{{ .Minor }}" - "{{ .Major }}" + - "sha-{{ .ShortCommit }}" - "{{ if not .Prerelease }}stable{{ end }}" checksum: From 67a1d0755ec1f89f7f602f10ef7e74930c54c032 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Sat, 10 Feb 2024 17:49:38 +0100 Subject: [PATCH 6/8] build debug images based on debian Signed-off-by: Kristoffer Dalby --- .goreleaser.yml | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/.goreleaser.yml b/.goreleaser.yml index 0ba94543..885ba3b9 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -119,6 +119,45 @@ kos: - "sha-{{ .ShortCommit }}" - "{{ if not .Prerelease }}stable{{ end }}" + - id: ghcr-debug + repository: ghcr.io/juanfont/headscale + base_image: "debian:12" + build: headscale + main: ./cmd/headscale + env: + - CGO_ENABLED=0 + platforms: + - linux/amd64 + - linux/386 + - linux/arm64 + - linux/arm/v7 + tags: + - latest + - "{{ .Tag }}-debug" + - "{{ .Major }}.{{ .Minor }}.{{ .Patch }}-debug" + - "{{ .Major }}.{{ .Minor }}-debug" + - "{{ .Major }}-debug" + - "sha-{{ .ShortCommit }}-debug" + - "{{ if not .Prerelease }}stable{{ end }}-debug" + + - id: dockerhub-debug + build: headscale + base_image: "debian:12" + repository: headscale/headscale + platforms: + - linux/amd64 + - linux/386 + - linux/arm64 + - linux/arm/v7 + tags: + - latest + - "{{ .Tag }}-debug" + - "{{ .Major }}.{{ .Minor }}.{{ .Patch }}-debug" + - "{{ .Major }}.{{ .Minor }}-debug" + - "{{ .Major }}-debug" + - "sha-{{ .ShortCommit }}-debug" + - "{{ if not .Prerelease }}stable{{ end }}-debug" + checksum: name_template: "checksums.txt" snapshot: From cd66d1fff7b4d6b2f46387747ee0019559322495 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Sat, 10 Feb 2024 17:52:40 +0100 Subject: [PATCH 7/8] test Signed-off-by: Kristoffer Dalby --- .goreleaser.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 885ba3b9..3a887588 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -81,7 +81,7 @@ nfpms: kos: - id: ghcr - repository: ghcr.io/juanfont/headscale + repository: ghcr.io/kradalby/headscale base_image: gcr.io/distroless/base-debian12 build: headscale main: ./cmd/headscale @@ -120,7 +120,7 @@ kos: - "{{ if not .Prerelease }}stable{{ end }}" - id: ghcr-debug - repository: ghcr.io/juanfont/headscale + repository: ghcr.io/kradalby/headscale base_image: "debian:12" build: headscale main: ./cmd/headscale From 4192705a7cbb021f2f2a2a90f7ef4e5d6787a39e Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Sat, 10 Feb 2024 17:55:31 +0100 Subject: [PATCH 8/8] remove debug flag for goreleaser Signed-off-by: Kristoffer Dalby --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7b473d9e..7e5ecb60 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,6 +20,6 @@ jobs: - uses: DeterminateSystems/magic-nix-cache-action@main - name: Run goreleaser - run: nix develop --command -- "goreleaser release --clean --debug" + run: nix develop --command -- "goreleaser release --clean" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}