Commit Graph

1157 Commits

Author SHA1 Message Date
Christian Schwarz 9d895da41e without golangci-lint, we can once again simplify build/go.mod 2026-01-22 00:43:18 +00:00
Christian Schwarz 8cb9eaf32f golangci-lint: install via pre-built packages 2026-01-22 00:43:18 +00:00
Christian Schwarz ac9785fabb protoc: safer pinning 2026-01-22 00:26:34 +00:00
Christian Schwarz 899e23762a golangci-lint: minimal changes to make make lint pass again 2026-01-20 22:01:44 +00:00
Christian Schwarz b4b16f7bca upgrade to golangci-lint/v2; golangci-lint migrate; go mod tidy; (make lint fails now) 2026-01-20 22:00:22 +00:00
Christian Schwarz cf3dda5a65 go mod tidy 2026-01-20 21:59:36 +00:00
Christian Schwarz 3ade4bebc8 go1.24 language compat 2026-01-20 21:58:48 +00:00
Christian Schwarz e8662c2427 make generate after updates 2026-01-20 21:57:25 +00:00
Christian Schwarz 0718602634 fixup(9ef7c8b16): circleci configs 2026-01-20 21:56:37 +00:00
Christian Schwarz 0bfb286a0e fixup(908807b): zreplVersion was not set / zrepl version version=
This got broken in `908807b move implementation to `internal/` directory (#828)`.
2026-01-20 21:55:18 +00:00
Christian Schwarz f113f0564f downgrade github.com/gitchander/permutation back to v0.0.0-20181107151852-9e56b92e9909
It changed API and it's a testing dep only.
2026-01-20 21:52:22 +00:00
Christian Schwarz 6ad4e708cd go get -tags tools -u golang.org/x/tools ; go mod tidy 2026-01-20 21:48:12 +00:00
Christian Schwarz 020a5bc4c1 go get -tags tools -u google.golang.org/grpc/cmd/protoc-gen-go-grpc google.golang.org/protobuf ; go mod tidy 2026-01-20 21:47:30 +00:00
Christian Schwarz 3e59f5ffa3 go get -tags tools -u github.com/golangci/golangci-lint ; go mod tidy 2026-01-20 21:46:39 +00:00
Christian Schwarz da854f929a go get -u -t ./... ; go mod tidy 2026-01-20 21:39:17 +00:00
Christian Schwarz 799f07d8bb go get -u google.golang.org/genproto google.golang.org/grpc google.golang.org/protobuf; go mod tidy 2026-01-20 21:37:46 +00:00
Christian Schwarz 9ef7c8b16d bump to go 1.25.6; go mod tidy; builds but linters fail 2026-01-20 21:30:26 +00:00
Christian Schwarz 860a9be37f config: detect duplicate & internal job names at parse time (#908)
Before this PR, config parsing would accept duplicate job names. `zrepl
daemon` would later fail to start with a panic. But tools like `zrepl
configcheck` would pass.

This PR adds a check to ensure job names are unique.

Similarly, internal job names were not being rejected by config parsing
Move that check to parse-time as well.

Last, drive-by change: remove `internal/config/config_include_test.go`
introduced in #856 . These aren't necessary because there is already a
wildcard test for all valid configs.
This PR adds the complimentary "invalid config" wildcard test.
2026-01-19 09:38:43 +01:00
Zeyad Tamimi 4d6583ea5f config: support for including files & directories (conf.d) (#856)
This PR allows for the distribution of zrepl job definitions across
multiple YAML files that are included from the main config.

```
global: ...
include:
- ./zrepl.yml.d
- /opt/zrepl.yml
- ...
```

Refer to the docs changes for details.

Co-authored-by: Christian Schwarz <me@cschwarz.com>
2026-01-19 09:19:54 +01:00
Christian Schwarz 3f751277c2 grafana: multiple improvements to the dashboard (#864)
Co-authored-by:  Orsiris de Jong <ozy@netpower.fr>

This PR obsoletes https://github.com/zrepl/zrepl/pull/847.

Changes:

* Rearrange dashboard into sections sections: About, Top, Replication,
Internals.
* consistently force selection of a single prom_job_name (no more
multi-value)
* Replace the repeated Gauge panel for failed replications with a
'status history' panel.
* Use `zrepl_start_time` as the metric underlying the `prom_job_name`
variable.
* Replace `zrepl_job_name` with internal dashboard variable
`zrepl_replication_jobid` and use that _only_ in the `Replication`
section of the dashboard
* Update to Grafana v12.4
2026-01-18 19:18:45 +01:00
Martin Glatzle 40c4827897 docs: add installation instructions for openSUSE (#776) (#869)
Added installation instructions for openSUSE as discussed in #776. Sorry
for the delay.

I decided against a solution involving lsb_release, since openSUSE
MicroOS, being a minimal OS, ships without it. Hope the edit is OK.

---------

Co-authored-by: Christian Schwarz <me@cschwarz.com>
2026-01-18 15:21:21 +01:00
Christian Schwarz e524b60f24 docs(transport/tls): improve EasyRSA instructions (#907)
**Problem 1**: Users following the EasyRSA script in the docs with their
more recent distro version of EasyRSA find that the generated certs no
longer include a subject-alternative-name (SAN), which is required as of
Go 1.15 / zrepl 0.3.0.

**Problem 2**: Newer openssl versions with the old EasyRSA prompt the
user for a CA password in `init-pki` and depending on EasyRSA version
there are other interactive prompts at later commands in the script.

**Changes**:
- upgrade the pinned EasyRSA version to the latest release
- use `--auto-san` option to make EasyRSA set the SAN. This has the
benefit of also working for IP addresses.

I checked the easy-rsa git history and `--subject-alt-name` appears to
have been present in all 3.X releases, so, adding the flag shouldn't
break users of older EasyRSA 3.X.
(And these are exemplary instructions anyway.)

refs
- fixes https://github.com/zrepl/zrepl/issues/900
- obsoletes https://github.com/zrepl/zrepl/pull/906
- obsoletes https://github.com/zrepl/zrepl/pull/877

Co-authored-by: Andrew Lorimer <andrew@lorimer.id.au>
2026-01-18 13:48:49 +01:00
Christian Schwarz 27f4ad1f53 build: rpm: build with almalinux:8 image instead of fedora:latest, fixing make rpm-build (#879)
The `make rpm-build` started failing with

```
find-debuginfo: starting
Extracting debug info from 1 files
*** ERROR: No build ID note found in /build/src/artifacts/rpmbuild/BUILD/zrepl-v0.6.1.47.gbae2bd2-build/BUILDROOT/usr/bin/zrepl
error: Bad exit status from /var/tmp/rpm-tmp.bYHLzG (%install)
```

This must be a change in Fedora (prob new Fedora major release).

Seize the opportunity to
1. stop building from `:latest`, and
2. build with an LTS RPM distro to improve zrepl RPM compatibility (no
problems so far AFAIK but this seems sensible)
2025-03-23 10:23:40 +01:00
Christian Schwarz bae2bd2601 docs: update supporters (#871) 2025-02-25 23:50:12 +01:00
Adam Nielsen b5d853885b docs: rename properties to send_properties & add note on nfs/smb props (#859) 2025-01-06 15:36:02 +01:00
Christian Schwarz 3755c97a86 fixup d7ede3f: make format (#851) 2024-11-20 21:49:10 +01:00
Christian Schwarz d7ede3f82c zrepl status: switch back to tview from cview & upgrade to latest (#846)
While investigating https://github.com/zrepl/zrepl/issues/700
I checked in on `zrepl status` dependencies and found that
`cview`, which was/is a fork of tview, appears to be unmaintained.

We switched to it 4.5 years ago in a58ce74.

Checking now, `github.com/rivo/tview` seems to be somewhat maintained
again.
I also checked what k9s uses because that tool came to mind as a Go
terminal UI app.
It does use `tview`, but, a fork that has diverged substantially.

Maybe in another 4.5 years stuff the ecosystem has consolidated...

refs https://github.com/zrepl/zrepl/issues/700
2024-11-05 21:35:30 +01:00
Christian Schwarz bca37c741c README: document patch release procedure (#845)
fixes https://github.com/zrepl/zrepl/issues/374
2024-11-04 11:26:17 +01:00
Christian Schwarz 98073c7dca build: simplify make format, remove make formatcheck (#843) 2024-11-04 11:25:30 +01:00
Christian Schwarz f1608aba15 hearbeatconn: convert dead integration test into Go test (#842)
fixes https://github.com/zrepl/zrepl/issues/417
2024-11-04 11:10:04 +01:00
Christian Schwarz dc05cd00f2 lint: add lint checking for time.Equal (#841)
No issues found, tested that the lint works by changing code locally.

fixes https://github.com/zrepl/zrepl/issues/5
2024-11-02 15:45:09 +01:00
Christian Schwarz 2923009689 deb: place bash completion at correct path, using debhelper (#839)
fixes https://github.com/zrepl/zrepl/issues/794
2024-10-28 00:46:23 +01:00
Christian Schwarz cc0f3b1f13 dist/systemd: remove various Protect* settings (#831)
It pains me to do it, but, especially with hooks, the Protect
settings are too restrictive.

I wish there were a systemd API that allowed us to self-sandbox,
using these settings, _after_ parsing the config.

fixes https://github.com/zrepl/zrepl/issues/735
2024-10-27 21:43:50 +01:00
Christian Schwarz 20abaa2e7f devex: manage devtools in a project-local subdirectory + cleanup README (#829) 2024-10-21 21:36:34 +02:00
Christian Schwarz 908807bd59 move implementation to internal/ directory (#828) 2024-10-18 19:21:17 +02:00
Christian Schwarz b9b9ad10cf snapshotting: ability to specify timestamp location != UTC (#801)
This PR adds a new field optional field `timestamp_location` that allows
the user to specify a timezone different than the default UTC for use in
the snapshot suffix.

I took @mjasnik 's PR https://github.com/zrepl/zrepl/pull/785 and
refactored+extended it as follows:
* move all formatting logic into its own package
* disallow `dense` and `human` with formats != UTC to protect users from
stupidity
* document behavior more clearly
* regression test for existing users
2024-10-18 15:12:41 +02:00
Christian Schwarz 904c1512a3 Merge pull request #819 from zrepl/problame/dependency-upgrades
dependency upgrades
2024-10-18 15:00:40 +02:00
Christian Schwarz 3df5e223be take notes for changelog 2024-09-08 23:19:45 +00:00
Christian Schwarz b8f55a97ba build: circleci: use large class for release-build job 2024-09-08 23:19:45 +00:00
Christian Schwarz 82adb2b9f5 build: circleci: remove obsolete script
The binary packaging workflow has long since
been moved to this repo (I don't think the external
workflow work ever completed).
2024-09-08 23:19:45 +00:00
Christian Schwarz 7b6adab6b1 build: circleci: only archive artifacts/release 2024-09-08 23:19:45 +00:00
Christian Schwarz e390aa0c5a build: circleci: update VM image used for release builds
Doesn't matter much because everything happens inside Docker.
2024-09-08 23:19:45 +00:00
Christian Schwarz 5a8f0b9a24 build: make release: check toolchain GOVERSION matches expecations (and refactor/extend Makefile a bit) 2024-09-08 23:19:45 +00:00
Christian Schwarz 3cb1865909 chore: trace spans: use crypto/rand for generating them
math/rand.Read is deprecated in newer Go versions.

Also, it appears that crypto/rand is faster when used from multiple
goroutines: https://gist.github.com/problame/0699acd6f99db4163f26f0b8a61569f3
2024-09-08 23:19:45 +00:00
Christian Schwarz 0ab92d4861 build: avoid compiling platformtest test list generator
This also fixes a deprecation warning.
2024-09-08 23:19:45 +00:00
Christian Schwarz 740ab4b1b2 chore: io/ioutil has been deprecated 2024-09-08 23:19:45 +00:00
Christian Schwarz 48c5b60024 chore: grpc.DialContext has been deprecated 2024-09-08 23:19:45 +00:00
Christian Schwarz 40fd700855 chore: newer staticcheck complains about useless fmt.Sprintf 2024-09-08 20:57:09 +00:00
Christian Schwarz def510abfd chore: require go 1.22/1.23, upgrade protobuf, upgrade all deps
Go upgrade:
- Go 1.23 is current => use that for release builds
- Go 1.22 is less than one year old, it's desirable to support it.
- The [`Go Toolchains`](https://go.dev/doc/toolchain) stuff is available
  in both of these (would also be in Go 1.21). That is quite nice stuff,
  but required some changes to how we versions we use in CircleCI and
  the `release-docker` Makefile target.

Protobuf upgrade:
- Go to protobuf GH release website
- Download latest locally
- run `sha256sum`
- replace existing pinned hashes
- `make generate`

Deps upgrade:
- `go get -t -u all`
- repository moves aren't handled well automatically, fix manually
- repeat until no changes
2024-09-08 20:49:09 +00:00
Christian Schwarz 08769a8752 fix: accidental use of wrong logging package 2024-09-08 12:57:58 +00:00