mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-30 18:41:37 -07:00
Prepares the repository for the release-branch process agreed internally: one long-lived release-0.N branch per minor, with fixes backported by cherry-pick and patch releases tagged from the branch. Pushes to release-* branches now run the Release workflow and publish immutable sha-* container images, the way pushes to main already do, so a release branch can be tested before it is tagged. Release branches never publish the floating "main" image tag. The push-to-main CI workflows (Go tests on all platforms, frontend UI, install script, mobile/wasm validation, infrastructure files, license check) also run on release-* pushes; pull request triggers were already unfiltered, so backport PRs were covered — this closes the post-merge gap. Releases are no longer marked latest before signing: make_latest is now false in all four goreleaser configs, so a release stays published but not latest until the signing pipeline uploads the signed Windows and macOS artifacts and marks it latest itself. Previously the release became GitHub's "Latest release" at publish time, and the download endpoints that resolve through the latest-release API could serve a release whose signed installers did not exist yet. prerelease: auto additionally labels rc tags as prereleases, so a release candidate can never take the latest slot. The trigger_sync_tag job is removed: it dispatched a downstream image build on every v* tag (release candidates included), which would race the deliberate release-branch build on every release. The android and ios submodule bumps are unchanged. Also sets perennial-regex = "^release-" so git-town never syncs or ships a release branch into main.
145 lines
4.8 KiB
YAML
145 lines
4.8 KiB
YAML
version: 2
|
|
env:
|
|
- SKIP_PUBLISH={{ if index .Env "SKIP_PUBLISH" }}{{ .Env.SKIP_PUBLISH }}{{ else }}true{{ end }}
|
|
project_name: netbird-ui
|
|
|
|
before:
|
|
hooks:
|
|
# Bindings are gitignored; regenerate before the frontend build so
|
|
# the @wailsio/runtime Vite plugin can resolve them (vite refuses to
|
|
# build without them).
|
|
# -f '-tags gtk3': the generator type-checks client/ui, whose cgo imports
|
|
# would otherwise resolve gtk4/webkitgtk-6.0 pkg-config entries that do
|
|
# not exist on ubuntu-22.04.
|
|
- sh -c 'cd client/ui && wails3 generate bindings -clean=true -ts -f "-tags gtk3"'
|
|
- sh -c 'cd client/ui/frontend && pnpm install --frozen-lockfile && pnpm build'
|
|
|
|
builds:
|
|
# Legacy GTK3 / WebKit2GTK 4.1 build for distros without WebKitGTK 6.0
|
|
# (Ubuntu 22.04, Debian 12, RHEL 9, Fedora <=39). The gtk3 tag flips the
|
|
# Wails Linux backend to the GTK3 stack and swaps our GTK4-only XEmbed
|
|
# tray host for the pure-Go stub (client/ui/xembed_host_gtk3_linux.go).
|
|
# Must be built on the oldest supported glibc (ubuntu-22.04 runner).
|
|
- id: netbird-ui-gtk3
|
|
dir: client/ui
|
|
binary: netbird-ui
|
|
env:
|
|
- CGO_ENABLED=1
|
|
goos:
|
|
- linux
|
|
goarch:
|
|
- amd64
|
|
ldflags:
|
|
- -s -w -X github.com/netbirdio/netbird/version.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.CommitDate}} -X main.builtBy=goreleaser
|
|
mod_timestamp: "{{ .CommitTimestamp }}"
|
|
tags:
|
|
- production
|
|
- gtk3
|
|
|
|
archives:
|
|
- id: linux-gtk3-arch
|
|
name_template: "{{ .ProjectName }}-linux-gtk3_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
|
|
builds:
|
|
- netbird-ui-gtk3
|
|
|
|
nfpms:
|
|
# Mutually-exclusive alternative to the GTK4 netbird-ui package -- both
|
|
# ship the same /usr/bin/netbird-ui from the shared stable/yum repos, so
|
|
# this one carries its own name and conflicts with the GTK4 package.
|
|
- maintainer: Netbird <dev@netbird.io>
|
|
description: Netbird client UI.
|
|
homepage: https://netbird.io/
|
|
license: BSD-3-Clause
|
|
vendor: NetBird
|
|
id: netbird_ui_deb_gtk3
|
|
package_name: netbird-ui-gtk3
|
|
file_name_template: "{{ .PackageName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
|
|
builds:
|
|
- netbird-ui-gtk3
|
|
formats:
|
|
- deb
|
|
scripts:
|
|
postinstall: "release_files/ui-post-install.sh"
|
|
contents:
|
|
- src: client/ui/build/linux/netbird.desktop
|
|
dst: /usr/share/applications/org.wails.netbird.desktop
|
|
- src: client/ui/build/appicon.png
|
|
dst: /usr/share/pixmaps/netbird.png
|
|
conflicts:
|
|
- netbird-ui
|
|
replaces:
|
|
- netbird-ui
|
|
dependencies:
|
|
- netbird (>= 0.75.0)
|
|
- libgtk-3-0
|
|
- libwebkit2gtk-4.1-0
|
|
- xdg-utils
|
|
|
|
- maintainer: Netbird <dev@netbird.io>
|
|
description: Netbird client UI.
|
|
homepage: https://netbird.io/
|
|
license: BSD-3-Clause
|
|
vendor: NetBird
|
|
id: netbird_ui_rpm_gtk3
|
|
package_name: netbird-ui-gtk3
|
|
file_name_template: "{{ .PackageName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
|
|
builds:
|
|
- netbird-ui-gtk3
|
|
formats:
|
|
- rpm
|
|
scripts:
|
|
postinstall: "release_files/ui-post-install.sh"
|
|
contents:
|
|
- src: client/ui/build/linux/netbird.desktop
|
|
dst: /usr/share/applications/org.wails.netbird.desktop
|
|
- src: client/ui/build/appicon.png
|
|
dst: /usr/share/pixmaps/netbird.png
|
|
# No `replaces` here: nfpm maps it to rpm Obsoletes, which would make
|
|
# dnf swap installed GTK4 netbird-ui packages for this one on upgrade.
|
|
conflicts:
|
|
- netbird-ui
|
|
dependencies:
|
|
- netbird >= 0.75.0
|
|
- (gtk3 or libgtk-3-0)
|
|
- (webkit2gtk4.1 or libwebkit2gtk-4_1-0)
|
|
- xdg-utils
|
|
|
|
rpm:
|
|
signature:
|
|
key_file: '{{ if index .Env "GPG_RPM_KEY_FILE" }}{{ .Env.GPG_RPM_KEY_FILE }}{{ end }}'
|
|
|
|
# The GTK4 UI job shares project_name, so the default checksum file name would
|
|
# collide with it on the shared GitHub release.
|
|
checksum:
|
|
name_template: "{{ .ProjectName }}_gtk3_checksums.txt"
|
|
|
|
changelog:
|
|
disable: true
|
|
|
|
uploads:
|
|
- name: debian
|
|
skip: "{{ .Env.SKIP_PUBLISH }}"
|
|
ids:
|
|
- netbird_ui_deb_gtk3
|
|
mode: archive
|
|
target: https://pkgs.wiretrustee.com/debian/pool/{{ .ArtifactName }};deb.distribution=stable;deb.component=main;deb.architecture={{ if .Arm }}armhf{{ else }}{{ .Arch }}{{ end }};deb.package=
|
|
username: dev@wiretrustee.com
|
|
method: PUT
|
|
|
|
- name: yum
|
|
skip: "{{ .Env.SKIP_PUBLISH }}"
|
|
ids:
|
|
- netbird_ui_rpm_gtk3
|
|
mode: archive
|
|
target: https://pkgs.wiretrustee.com/yum/{{ .Arch }}{{ if .Arm }}{{ .Arm }}{{ end }}
|
|
username: dev@wiretrustee.com
|
|
method: PUT
|
|
|
|
release:
|
|
# Uploads into the release created by the main .goreleaser.yaml run.
|
|
# make_latest stays false everywhere: the signing pipeline
|
|
# (netbirdio/sign-pipelines) marks the release latest after the Windows
|
|
# and macOS artifacts are signed.
|
|
make_latest: false
|
|
prerelease: auto
|