Build docker images with ko (goreleaser) (#1716)
* make dockerfiles testing only note Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> * setup ko image builder for goreleaser Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> * remove release-docker Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> * remove non-debug Dockerfile Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> * Comments and lint Signed-off-by: Kristoffer Dalby <kristoffer@dalby.cc> * build debug images based on debian Signed-off-by: Kristoffer Dalby <kristoffer@dalby.cc> * remove debug flag for goreleaser Signed-off-by: Kristoffer Dalby <kristoffer@dalby.cc> --------- Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> Signed-off-by: Kristoffer Dalby <kristoffer@dalby.cc>pull/1741/head
parent
e3553aae50
commit
0333e97630
7 changed files with 90 additions and 172 deletions
@ -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 |
@ -1,30 +0,0 @@ |
||||
# Builder image |
||||
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"] |
Loading…
Reference in new issue