--- name: Release on: push: tags: - "*" # triggers only if push new tag version workflow_dispatch: jobs: goreleaser: if: github.repository == 'juanfont/headscale' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - name: Pin Docker to v28 (avoid v29 breaking changes) run: | # Docker 29 breaks docker build via Go client libraries and # docker load/save with certain tarball formats. # Pin to Docker 28.x until our tooling is updated. # https://github.com/actions/runner-images/issues/13474 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update -qq VERSION=$(apt-cache madison docker-ce | grep '28\.5' | head -1 | awk '{print $3}') sudo apt-get install -y --allow-downgrades \ "docker-ce=${VERSION}" "docker-ce-cli=${VERSION}" sudo systemctl restart docker docker version - name: Login to DockerHub uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GHCR uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - uses: nixbuild/nix-quick-install-action@2c9db80fb984ceb1bcaa77cdda3fdf8cfba92035 # v34 - uses: nix-community/cache-nix-action@135667ec418502fa5a3598af6fb9eb733888ce6a # v6.1.3 with: primary-key: nix-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} restore-prefixes-first-match: nix-${{ runner.os }}-${{ runner.arch }} - name: Run goreleaser run: nix develop --command -- goreleaser release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}