summaryrefslogtreecommitdiffhomepage
path: root/release
AgeCommit message (Collapse)AuthorFilesLines
2026-03-26release/dist/unixpkgs: include tailscale-online.target in packagesBrad Fitzpatrick1-0/+26
The tailscale-online.target and tailscale-wait-online.service systemd units were added in 30e12310f1 but never included in the release packaging (tarballs, debs, rpms). Updates #11504 Change-Id: I93e03e1330a7ff8facf845c7ca062ed2f0d35eaa Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2026-01-23all: remove AUTHORS file and references to itWill Norris10-10/+10
This file was never truly necessary and has never actually been used in the history of Tailscale's open source releases. A Brief History of AUTHORS files --- The AUTHORS file was a pattern developed at Google, originally for Chromium, then adopted by Go and a bunch of other projects. The problem was that Chromium originally had a copyright line only recognizing Google as the copyright holder. Because Google (and most open source projects) do not require copyright assignemnt for contributions, each contributor maintains their copyright. Some large corporate contributors then tried to add their own name to the copyright line in the LICENSE file or in file headers. This quickly becomes unwieldy, and puts a tremendous burden on anyone building on top of Chromium, since the license requires that they keep all copyright lines intact. The compromise was to create an AUTHORS file that would list all of the copyright holders. The LICENSE file and source file headers would then include that list by reference, listing the copyright holder as "The Chromium Authors". This also become cumbersome to simply keep the file up to date with a high rate of new contributors. Plus it's not always obvious who the copyright holder is. Sometimes it is the individual making the contribution, but many times it may be their employer. There is no way for the proejct maintainer to know. Eventually, Google changed their policy to no longer recommend trying to keep the AUTHORS file up to date proactively, and instead to only add to it when requested: https://opensource.google/docs/releasing/authors. They are also clear that: > Adding contributors to the AUTHORS file is entirely within the > project's discretion and has no implications for copyright ownership. It was primarily added to appease a small number of large contributors that insisted that they be recognized as copyright holders (which was entirely their right to do). But it's not truly necessary, and not even the most accurate way of identifying contributors and/or copyright holders. In practice, we've never added anyone to our AUTHORS file. It only lists Tailscale, so it's not really serving any purpose. It also causes confusion because Tailscalars put the "Tailscale Inc & AUTHORS" header in other open source repos which don't actually have an AUTHORS file, so it's ambiguous what that means. Instead, we just acknowledge that the contributors to Tailscale (whoever they are) are copyright holders for their individual contributions. We also have the benefit of using the DCO (developercertificate.org) which provides some additional certification of their right to make the contribution. The source file changes were purely mechanical with: git ls-files | xargs sed -i -e 's/\(Tailscale Inc &\) AUTHORS/\1 contributors/g' Updates #cleanup Change-Id: Ia101a4a3005adb9118051b3416f5a64a4a45987d Signed-off-by: Will Norris <will@tailscale.com>
2025-10-01all: use Go 1.20's errors.Join instead of our multierr packageBrad Fitzpatrick1-2/+1
Updates #7123 Change-Id: Ie9be6814831f661ad5636afcd51d063a0d7a907d Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2025-08-15{cmd/dist,release/dist}: add support for intermediary QNAP signing certificatesPercy Wegmann3-14/+20
Updates #23528 Signed-off-by: Percy Wegmann <percy@tailscale.com>
2025-08-15release/dist/qnap: verify code signingPercy Wegmann2-7/+7
This pulls in a change from github.com/tailscale/QDK to verify code signing when using QNAP_SIGNING_SCRIPT. It also upgrades to the latest Google Cloud PKCS#11 library, and reorders the Dockerfile to allow for more efficient future upgrades to the included QDK. Updates tailscale/corp#23528 Signed-off-by: Percy Wegmann <percy@tailscale.com>
2025-06-24release/dist/qnap: upgrade to Ubuntu 24.04 Docker imagePercy Wegmann1-2/+2
20.04 is no longer supported. This pulls in changes to the QDK package that were required to make build succeed on 24.04. Updates https://github.com/tailscale/corp/issues/29849 Signed-off-by: Percy Wegmann <percy@tailscale.com>
2025-06-23release/dist: switch back to Ubuntu 20.04 for building QNAP packagesPercy Wegmann1-1/+1
After the switch to 24.04, unsigned packages did not build correctly (came out as only a few KBs). Fixes tailscale/tailscale-qpkg#148 Signed-off-by: Percy Wegmann <percy@tailscale.com>
2025-04-17cmd/dist,release/dist: sign QNAP builds with a Google Cloud hosted keyPercy Wegmann4-39/+102
QNAP now requires builds to be signed with an HSM. This removes support for signing with a local keypair. This adds support for signing with a Google Cloud hosted key. The key should be an RSA key with protection level `HSM` and that uses PSS padding and a SHA256 digest. The GCloud project, keyring and key name are passed in as command-line arguments. The GCloud credentials and the PEM signing certificate are passed in as Base64-encoded command-line arguments. Updates tailscale/corp#23528 Signed-off-by: Percy Wegmann <percy@tailscale.com>
2025-04-14release/dist/cli: add option to override out pathKristoffer Dalby1-1/+7
Allow builds to be outputted to a specific directory. By default, or if unset, artifacts are written to PWD/dist. Updates tailscale/corp#27638 Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
2024-10-18release/dist: clamp min / max version for synology package centre (#13857)Mario Minardi1-2/+16
Clamp the min and max version for DSM 7.0 and DSM 7.2 packages when we are building packages for the synology package centre. This change leaves packages destined for pkgs.tailscale.com with just the min version set to not break packages in the wild / our update flow. Updates https://github.com/tailscale/corp/issues/22908 Signed-off-by: Mario Minardi <mario@tailscale.com>
2024-09-24{release,version}: add DSM7.2 specific synology builds (#13405)Mario Minardi2-10/+48
Add separate builds for DSM7.2 for synology so that we can encode separate versioning information in the INFO file to distinguish between the two. Fixes https://github.com/tailscale/corp/issues/22908 Signed-off-by: Mario Minardi <mario@tailscale.com>
2024-04-25release/dist/qnap: omit .qpkg.codesigning filesSonia Appasamy1-0/+8
Updates tailscale/tailscale-qpkg#135 Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2024-04-24release/dist/qnap: update perms for tmpDir filesSonia Appasamy1-4/+5
Allows all users to read all files, and .sh/.cgi files to be executable. Updates tailscale/tailscale-qpkg#135 Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2024-04-23release/dist/qnap: use tmp file directory for qpkg buildingSonia Appasamy14-48/+97
This change allows for the release/dist/qnap package to be used outside of the tailscale repo (notably, will be used from corp), by using an embedded file system for build files which gets temporarily written to a new folder during qnap build runs. Without this change, when used from corp, the release/dist/qnap folder will fail to be found within the corp repo, causing various steps of the build to fail. The file renames in this change are to combine the build files into a /files folder, separated into /scripts and /Tailscale. Updates tailscale/tailscale-qpkg#135 Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2024-04-22release/dist/qnap: add qnap target builderSonia Appasamy16-2/+646
Creates new QNAP builder target, which builds go binaries then uses docker to build into QNAP packages. Much of the docker/script code here is pulled over from https://github.com/tailscale/tailscale-qpkg, with adaptation into our builder structures. The qnap/Tailscale folder contains static resources needed to build Tailscale qpkg packages, and is an exact copy of the existing folder in the tailscale-qpkg repo. Builds can be run with: ``` sudo ./tool/go run ./cmd/dist build qnap ``` Updates tailscale/tailscale-qpkg#135 Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2024-03-08version/mkversion: enforce synology versions within int32 rangeSonia Appasamy1-1/+11
Synology requires version numbers are within int32 range. This change updates the version logic to keep things closer within the range, and errors on building when the range is exceeded. Updates #cleanup Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2024-02-08cmd/dist: update logs for synology buildsSonia Appasamy1-1/+5
Update logs for synology builds to more clearly callout which variant is being built. The two existing variants are: 1. Sideloaded (can be manual installed on a device by anyone) 2. Package center distribution (by the tailscale team) Updates #cleanup Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2024-01-03release: add shebang to the debian postinst scriptAnton Tolchanov1-0/+1
Seems like an omission, since we have it in postrm and prerm. Fixes #10705 Signed-off-by: Anton Tolchanov <anton@tailscale.com>
2023-12-20all: cleanup unused code, part 1 (#10661)Andrew Lytvynov1-21/+0
Run `staticcheck` with `U1000` to find unused code. This cleans up about a half of it. I'll do the other half separately to keep PRs manageable. Updates #cleanup Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-10-04release/dist/unixpkgs: revert iptables move to Recommends, make it DependsBrad Fitzpatrick1-6/+13
Partially reverts 1bd3edbb46 (but keeps part of it) iptables is almost always required but not strictly needed. Even if you can technically run Tailscale without it (by manually configuring nftables or userspace mode), we still now mark this as "Depends" because our previous experiment in https://github.com/tailscale/tailscale/issues/9236 of making it only Recommends caused too many problems. Until our nftables table is more mature, we'd rather err on the side of wasting a little disk by including iptables for people who might not need it rather than handle reports of it being missing. Updates #9236 Change-Id: I86cc8aa3f78dafa0b4b729f55fb82eef6066be1c Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2023-09-21release/dist, tool/gocross: add fake "windowsdll" GOOS to gocrossAaron Klotz1-1/+8
We're going to need to build a DLL containing custom actions for the installer. This patch adds the foundations of that capability to dist and gocross. Updates https://github.com/tailscale/corp/issues/13998 Signed-off-by: Aaron Klotz <aaron@tailscale.com>
2023-09-07release/dist/unixpkgs: demote deb iptables+iproute2 packages to recommendedBrad Fitzpatrick1-4/+19
Fixes #9236 Change-Id: Idbad2edb0262ef842afd6b40ae47f46e685b112d Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2023-09-01client/web,cmd/tailscale: add prefix flag for web commandWill Norris1-1/+1
We already had a path on the web client server struct, but hadn't plumbed it through to the CLI. Add that now and use it for Synology and QNAP instead of hard-coding the path. (Adding flag for QNAP is tailscale/tailscale-qpkg#112) This will allow supporting other environments (like unraid) without additional changes to the client/web package. Also fix a small bug in unraid handling to only include the csrf token on POST requests. Updates tailscale/corp#13775 Signed-off-by: Will Norris <will@tailscale.com>
2023-08-28client/web: always use new web client; remove old clientWill Norris1-1/+1
This uses the new react-based web client for all builds, not just with the --dev flag. If the web client assets have not been built, the client will serve a message that Tailscale was built without the web client, and link to build instructions. Because we will include the web client in all of our builds, this should only be seen by developers or users building from source. (And eventually this will be replaced by attempting to download needed assets as runtime.) We do now checkin the build/index.html file, which serves the error message when assets are unavailable. This will also eventually be used to trigger in CI when new assets should be built and uploaded to a well-known location. Updates tailscale/corp#13775 Signed-off-by: Will Norris <will@tailscale.com>
2023-08-28release/dist/cli: add verify-package-signature command (#9110)Andrew Lytvynov1-4/+59
Helper command to verify package signatures, mainly for debugging. Also fix a copy-paste mistake in error message in distsign. Updates #8760 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-08-25release/dist: remove extra Close on a signed file (#9094)Andrew Lytvynov1-3/+0
We pass the file as an io.Reader to http.Post under the hood as request body. Post, helpfully, detects that the body is an io.Closer and closes it. So when we try to explicitly close it again, we get "file already closed" error. The Close there is not load-bearing, we have a defer for it anyway. Remove the explicit close and error check. Updates #cleanup Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-08-24cmd/dist,release/dist: add distsign signing hooks (#9070)Andrew Lytvynov6-46/+59
Add `dist.Signer` hook which can arbitrarily sign linux/synology artifacts. Plumb it through in `cmd/dist` and remove existing tarball signing key. Distsign signing will happen on a remote machine, not using a local key. Updates #755 Updates #8760 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-08-24release/dist/cli: add sign-key and verify-key-signature commands (#9041)Andrew Lytvynov1-0/+92
Now we have all the commands to generate the key hierarchy and verify that signing keys were signed correctly: ``` $ ./tool/go run ./cmd/dist gen-key --priv-path root-priv.pem --pub-path root-pub.pem --root wrote private key to root-priv.pem wrote public key to root-pub.pem $ ./tool/go run ./cmd/dist gen-key --priv-path signing-priv.pem --pub-path signing-pub.pem --signing wrote private key to signing-priv.pem wrote public key to signing-pub.pem $ ./tool/go run ./cmd/dist sign-key --root-priv-path root-priv.pem --sign-pub-path signing-pub.pem wrote signature to signature.bin $ ./tool/go run ./cmd/dist verify-key-signature --root-pub-path root-pub.pem --sign-pub-path signing-pub.pem --sig-path signature.bin signature ok ``` Updates #8760 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-08-23clientupdate/distsign: use distinct PEM types for root/signing keys (#9045)Andrew Lytvynov1-1/+16
To make key management less error-prone, use different PEM block types for root and signing keys. As a result, separate out most of the Go code between root/signing keys too. Updates #8760 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-08-23release: add empty embed.FS for release filesWill Norris1-0/+15
This ensures that `go mod vendor` includes these files, which are needed for client builds run in corp. Updates tailscale/corp#13775 Signed-off-by: Will Norris <will@tailscale.com>
2023-08-22release/dist/cli: add gen-key command (#9023)Andrew Lytvynov1-0/+36
Add a new subcommand to generate a Ed25519 key pair for release signing. The same command can be used to generate both root and signing keys. Updates #8760 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-08-22release/dist: run yarn build before building CLIWill Norris4-7/+56
This builds the assets for the new web client as part of our release process. The path to the web client source is specified by the -web-client-root flag. This allows corp builds to first vendor the tailscale.com module, and then build the web client assets in the vendor directory. The default value for the -web-client-root flag is empty, so no assets are built by default. This is an update of the previously reverted 0fb95ec Updates tailscale/corp#13775 Signed-off-by: Will Norris <will@tailscale.com>
2023-08-21Revert "release/dist: run yarn build before building CLI"Will Norris3-47/+7
This caused breakages on the build server: synology/dsm7/x86_64: chdir /home/ubuntu/builds/2023-08-21T21-47-38Z-unstable-main-tagged-devices/0/client/web: no such file or directory synology/dsm7/i686: chdir /home/ubuntu/builds/2023-08-21T21-47-38Z-unstable-main-tagged-devices/0/client/web: no such file or directory synology/dsm7/armv8: chdir /home/ubuntu/builds/2023-08-21T21-47-38Z-unstable-main-tagged-devices/0/client/web: no such file or directory ... Reverting while I investigate. This reverts commit 0fb95ec07daa81d2a30a44af7d969249cec5bdc8. Signed-off-by: Will Norris <will@tailscale.com>
2023-08-21release/dist: run yarn build before building CLIWill Norris3-7/+47
This builds the assets for the new web client as part of our release process. These assets will soon be embedded into the cmd/tailscale binary, but are not actually done so yet. Updates tailscale/corp#13775 Signed-off-by: Will Norris <will@tailscale.com>
2023-08-03cmd/dist,release/dist: expose RPM signing hook (#8789)Andrew Lytvynov3-28/+42
Plumb a signing callback function to `unixpkgs.rpmTarget` to allow signing RPMs. This callback is optional and RPMs will build unsigned if not set, just as before. Updates https://github.com/tailscale/tailscale/issues/1882 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-08-03go.mod: upgrade nfpm to v2 (#8786)Andrew Lytvynov2-22/+62
Upgrade the nfpm package to the latest version to pick up https://github.com/goreleaser/nfpm/commit/24a43c5ad7cfc549e8a4ec930521a97a30f26cc8. The upgrade is from v0 to v2, so there was some breakage to fix. Generated packages should have the same contents as before. Updates https://github.com/tailscale/tailscale/issues/1882 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-07-31cmd/dist,release/dist: sign release tarballs with an ECDSA key (#8759)Andrew Lytvynov3-8/+60
Pass an optional PEM-encoded ECDSA key to `cmd/dist` to sign all built tarballs. The signature is stored next to the tarball with a `.sig` extension. Tested this with an `openssl`-generated key pair and verified the resulting signature. Updates #8760 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-06-30release/dist: add helper to build Go binaries with custom tagsDavid Anderson1-3/+22
Updates tailscale/corp#12861 Signed-off-by: David Anderson <danderson@tailscale.com>
2023-06-23release/dist/synology: remove 'version' field from ui/configDavid Anderson2-2/+1
As far as I can tell from the DSM documentation and known undocumented fields, there is no 'version' field in this config file that DSM cares about. Updates #8232 Signed-off-by: David Anderson <danderson@tailscale.com>
2023-05-29release/dist/synology: build hi3535 as armv5, not armv7David Anderson1-2/+23
This platform is technically an armv7, but has no hardware floating point unit. armv5 is the only target Go understands to lack floating point, so use that. Updates #6860 Signed-off-by: David Anderson <danderson@tailscale.com>
2023-05-29release/dist/synology: build synology packages with cmd/distDavid Anderson18-4/+593
Updates #8217 Signed-off-by: David Anderson <danderson@tailscale.com>
2023-05-25release/dist/cli: correctly handle absolute build outputs in manifestDavid Anderson1-3/+4
Some builders return absolute paths to build products already. When that happens, the manifest writing logic shouldn't tack on another absolute prefix. Signed-off-by: David Anderson <danderson@tailscale.com>
2023-05-09release/dist: add deb/rpm arch mappings for mipsessalman2-19/+27
According to https://wiki.debian.org/SupportedArchitectures Debian does not support big-endian mips64, so that one remains disabled. According to https://fedoraproject.org/wiki/Architectures Fedora only supports little-endian mips, so leaving both big-endian ones out too. Updates #8005. Signed-off-by: salman <salman@tailscale.com>
2023-03-01release/dist/cli: add --verbose to print subcommand outputDavid Anderson2-5/+17
By default, cmd/dist only prints the output of failed commands. With this, you can turn all the noisy output back on. Updates tailscale/corp#9045 Signed-off-by: David Anderson <danderson@tailscale.com>
2023-03-01release/dist: add a helper to run commandsDavid Anderson1-10/+46
The helper suppresses output if the command runs successfully. If the command fails, it dumps the buffered output to stdout before returning the error. This means the happy path isn't swamped by debug noise or xcode being intensely verbose about what kind of day it's having, but you still get debug output when something goes wrong. Updates tailscale/corp#9045 Signed-off-by: David Anderson <danderson@tailscale.com>
2023-02-24release/dist/cli: default to "all" for list if no filters givenDavid Anderson1-0/+3
Signed-off-by: David Anderson <danderson@tailscale.com>
2023-02-24release/dist: add forgotten license headersDavid Anderson5-0/+15
Signed-off-by: David Anderson <danderson@tailscale.com>
2023-02-24release/dist/cli: factor out the CLI boilerplace from cmd/distDavid Anderson1-0/+134
Signed-off-by: David Anderson <danderson@tailscale.com>
2023-02-24release: open-source release build logic for unix packagesDavid Anderson10-0/+936
Updates tailscale/corp#9221 Signed-off-by: David Anderson <danderson@tailscale.com>