
Move files for packaging outside the docs directory into its own packaging directory. Replace the existing postinstall and postremove scripts with Debian maintainerscripts to behave more like a typical Debian package: * Start and enable the headscale systemd service by default * Does not print informational messages * No longer stop and disable the service on updates This package also performs migrations for all changes done in previous package versions on upgrade: * Set login shell to /usr/sbin/nologin * Set home directory to /var/lib/headscale * Migrate to system UID/GID The package is lintian-clean with a few exceptions that are documented as excludes and it passes puipars (both tested on Debian 12). The following scenarious were tested on Ubuntu 22.04, Ubuntu 24.04, Debian 11, Debian 12: * Install * Install same version again * Install -> Remove -> Install * Install -> Purge -> Install * Purge * Update from 0.22.0 * Update from 0.26.0 See: #2278 See: #2133 Fixes: #2311
170 lines
5 KiB
YAML
170 lines
5 KiB
YAML
---
|
|
version: 2
|
|
before:
|
|
hooks:
|
|
- go mod tidy -compat=1.24
|
|
- go mod vendor
|
|
|
|
release:
|
|
prerelease: auto
|
|
draft: true
|
|
|
|
builds:
|
|
- id: headscale
|
|
main: ./cmd/headscale
|
|
mod_timestamp: "{{ .CommitTimestamp }}"
|
|
env:
|
|
- CGO_ENABLED=0
|
|
targets:
|
|
- darwin_amd64
|
|
- darwin_arm64
|
|
- freebsd_amd64
|
|
- linux_386
|
|
- linux_amd64
|
|
- linux_arm64
|
|
- linux_arm_5
|
|
- linux_arm_6
|
|
- linux_arm_7
|
|
flags:
|
|
- -mod=readonly
|
|
ldflags:
|
|
- -s -w
|
|
- -X github.com/juanfont/headscale/hscontrol/types.Version={{ .Version }}
|
|
- -X github.com/juanfont/headscale/hscontrol/types.GitCommitHash={{ .Commit }}
|
|
tags:
|
|
- ts2019
|
|
|
|
archives:
|
|
- id: golang-cross
|
|
name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ with .Arm }}v{{ . }}{{ end }}{{ with .Mips }}_{{ . }}{{ end }}{{ if not (eq .Amd64 "v1") }}{{ .Amd64 }}{{ end }}'
|
|
formats:
|
|
- binary
|
|
|
|
source:
|
|
enabled: true
|
|
name_template: "{{ .ProjectName }}_{{ .Version }}"
|
|
format: tar.gz
|
|
files:
|
|
- "vendor/"
|
|
|
|
nfpms:
|
|
# Configure nFPM for .deb and .rpm releases
|
|
#
|
|
# See https://nfpm.goreleaser.com/configuration/
|
|
# and https://goreleaser.com/customization/nfpm/
|
|
#
|
|
# Useful tools for debugging .debs:
|
|
# List file contents: dpkg -c dist/headscale...deb
|
|
# Package metadata: dpkg --info dist/headscale....deb
|
|
#
|
|
- ids:
|
|
- headscale
|
|
package_name: headscale
|
|
priority: optional
|
|
vendor: headscale
|
|
maintainer: Kristoffer Dalby <kristoffer@dalby.cc>
|
|
homepage: https://github.com/juanfont/headscale
|
|
description: |-
|
|
Open source implementation of the Tailscale control server.
|
|
Headscale aims to implement a self-hosted, open source alternative to the
|
|
Tailscale control server. Headscale's goal is to provide self-hosters and
|
|
hobbyists with an open-source server they can use for their projects and
|
|
labs. It implements a narrow scope, a single Tailscale network (tailnet),
|
|
suitable for a personal use, or a small open-source organisation.
|
|
bindir: /usr/bin
|
|
section: net
|
|
formats:
|
|
- deb
|
|
contents:
|
|
- src: ./config-example.yaml
|
|
dst: /etc/headscale/config.yaml
|
|
type: config|noreplace
|
|
file_info:
|
|
mode: 0644
|
|
- src: ./packaging/systemd/headscale.service
|
|
dst: /usr/lib/systemd/system/headscale.service
|
|
- dst: /var/lib/headscale
|
|
type: dir
|
|
- src: LICENSE
|
|
dst: /usr/share/doc/headscale/copyright
|
|
scripts:
|
|
postinstall: ./packaging/deb/postinst
|
|
postremove: ./packaging/deb/postrm
|
|
preremove: ./packaging/deb/prerm
|
|
deb:
|
|
lintian_overrides:
|
|
- no-changelog # Our CHANGELOG.md uses a different formatting
|
|
- no-manual-page
|
|
- statically-linked-binary
|
|
|
|
kos:
|
|
- id: ghcr
|
|
repositories:
|
|
- ghcr.io/juanfont/headscale
|
|
- headscale/headscale
|
|
|
|
# bare tells KO to only use the repository
|
|
# for tagging and naming the container.
|
|
bare: true
|
|
base_image: gcr.io/distroless/base-debian12
|
|
build: headscale
|
|
main: ./cmd/headscale
|
|
env:
|
|
- CGO_ENABLED=0
|
|
platforms:
|
|
- linux/amd64
|
|
- linux/386
|
|
- linux/arm64
|
|
- linux/arm/v7
|
|
tags:
|
|
- "{{ if not .Prerelease }}latest{{ end }}"
|
|
- "{{ if not .Prerelease }}{{ .Major }}.{{ .Minor }}.{{ .Patch }}{{ end }}"
|
|
- "{{ if not .Prerelease }}{{ .Major }}.{{ .Minor }}{{ end }}"
|
|
- "{{ if not .Prerelease }}{{ .Major }}{{ end }}"
|
|
- "{{ if not .Prerelease }}v{{ .Major }}.{{ .Minor }}.{{ .Patch }}{{ end }}"
|
|
- "{{ if not .Prerelease }}v{{ .Major }}.{{ .Minor }}{{ end }}"
|
|
- "{{ if not .Prerelease }}v{{ .Major }}{{ end }}"
|
|
- "{{ if not .Prerelease }}stable{{ else }}unstable{{ end }}"
|
|
- "{{ .Tag }}"
|
|
- '{{ trimprefix .Tag "v" }}'
|
|
- "sha-{{ .ShortCommit }}"
|
|
|
|
- id: ghcr-debug
|
|
repositories:
|
|
- ghcr.io/juanfont/headscale
|
|
- headscale/headscale
|
|
|
|
bare: true
|
|
base_image: gcr.io/distroless/base-debian12:debug
|
|
build: headscale
|
|
main: ./cmd/headscale
|
|
env:
|
|
- CGO_ENABLED=0
|
|
platforms:
|
|
- linux/amd64
|
|
- linux/386
|
|
- linux/arm64
|
|
- linux/arm/v7
|
|
tags:
|
|
- "{{ if not .Prerelease }}latest-debug{{ end }}"
|
|
- "{{ if not .Prerelease }}{{ .Major }}.{{ .Minor }}.{{ .Patch }}-debug{{ end }}"
|
|
- "{{ if not .Prerelease }}{{ .Major }}.{{ .Minor }}-debug{{ end }}"
|
|
- "{{ if not .Prerelease }}{{ .Major }}-debug{{ end }}"
|
|
- "{{ if not .Prerelease }}v{{ .Major }}.{{ .Minor }}.{{ .Patch }}-debug{{ end }}"
|
|
- "{{ if not .Prerelease }}v{{ .Major }}.{{ .Minor }}-debug{{ end }}"
|
|
- "{{ if not .Prerelease }}v{{ .Major }}-debug{{ end }}"
|
|
- "{{ if not .Prerelease }}stable-debug{{ else }}unstable-debug{{ end }}"
|
|
- "{{ .Tag }}-debug"
|
|
- '{{ trimprefix .Tag "v" }}-debug'
|
|
- "sha-{{ .ShortCommit }}-debug"
|
|
|
|
checksum:
|
|
name_template: "checksums.txt"
|
|
snapshot:
|
|
version_template: "{{ .Tag }}-next"
|
|
changelog:
|
|
sort: asc
|
|
filters:
|
|
exclude:
|
|
- "^docs:"
|
|
- "^test:"
|