Commit Graph

1185 Commits

Author SHA1 Message Date
dependabot[bot] 43a5afe56e build(deps): bump urllib3 from 2.6.3 to 2.7.0 in /docs
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.7.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 17:56:30 +00:00
Christian Schwarz d916c93cf9 Update supporters (#935) 2026-03-17 09:41:45 +01:00
Andrew Gunnerson 46d9be415c rpm: Use %config(noreplace) for the config file (#932)
Currently, when upgrading the RPM, if the upstream `zrepl.yml` is
changed in the update, the user's `zrepl.yml` will be renamed to
`zrepl.yml.rpmsave` and the new `zrepl.yml` is installed in its place.

This commit changes the behavior so that the user's config remains in
place and the new upstream config is installed to `zrepl.yml.rpmnew`
instead.

---

This was never a problem before because
`packaging/systemd-default-zrepl.yml` was the same since the initial
release. RPM leaves edited config files alone with the upstream config
file doesn't change. However, v0.7.0 changed the file with:
9c63736489. So with this update, RPM
detects an upstream config change during the update and moves the user's
config according to `%config`'s rules
(https://www.cl.cam.ac.uk/~jw35/docs/rpm_config.html).
`%config(noreplace)` prevents this from happening.

Signed-off-by: Andrew Gunnerson <accounts+github@chiller3.com>
2026-02-27 09:13:28 +01:00
Christian Schwarz b93a06d237 docs: v0.7.0 GH release link (#929) 2026-02-15 23:42:47 +01:00
Christian Schwarz 2c780b4d4e Merge pull request #927 from zrepl/post-v0.7.0-docs-and-automation
post-v0.7.0 docs changes & release automation
2026-02-15 23:17:51 +01:00
Christian Schwarz d75fe80edb /draft-release: add artifact upload with pre-flight checks
Extends the draft-release command to automatically upload release
artifacts after creating the draft release. Adds sanity checks to
verify that artifacts have been downloaded and signed before proceeding.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 22:13:44 +00:00
Christian Schwarz 05d4563f00 docs: supporters & changelog: credit all v0.6.1..v0.7.0 contributors
Added 11 code contributors from v0.6.1..v0.7.0 to supporters.rst:
- Direct committers: @bakhtiyarneyman, @ZeyadTamimi, @findesgh,
  @Malvineous, @wxiaoguang, @lpulley, @Raupinger, @fermino, @dsh2dsh
- Co-authors: @deajan, @alorimer

Added missing changelog entries for:
- @dsh2dsh: last_n keep rule fix, root_fs fix
- @lpulley: Bountysource link removal
- @Raupinger: docs newline fix
- @fermino: apt repo snippet fix

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 22:13:44 +00:00
Christian Schwarz f81f66315a add /update-supporters: claude command to maintain contributor list
- Creates new skill to automatically update docs/supporters.rst
- Extracts contributors from git history and changelog.rst
- Supports time ranges (--since) and commit ranges (v0.6.0..v0.7.0)
- Handles new contributors and recurring contributors (moves them up)
- Records processed range in RST comment
- Integrated into release workflow in README.md

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 22:13:17 +00:00
Christian Schwarz 5ea0a48224 add claude command to create github draft release 2026-02-15 22:13:17 +00:00
Christian Schwarz efdef1e8b3 add checksum verification and signature step 2026-02-15 22:13:17 +00:00
Christian Schwarz 79118ada70 release: details on how to get right number for artifact download script 2026-02-15 22:13:17 +00:00
Christian Schwarz b1ea121d53 release: artifact download: source from circleci 2026-02-15 22:13:17 +00:00
Christian Schwarz d7ee92f213 release: improvements: README 2026-02-15 22:13:17 +00:00
Christian Schwarz 2c12675ee1 docs: 0.7 release notes
- compile release notes since 0.6.1
- move 'Next Release' from 'Changelog' to a new section
v0.7.0
2026-02-15 14:09:05 +01:00
Christian Schwarz 76981d2037 docs: refactor: shorter expansion of :commit: 2026-02-15 14:09:05 +01:00
Christian Schwarz 075ecdac5b circleci: run platformtests against well-defined ZFS releases (#921)
Before this PR we platformtests in CI only against the ZFS version that
shipped with the CircleCI machine image (ZFS 2.2).

Changes in this PR:
- add an `command` for building OpenZFS `.deb`'s from a Git checkout,
and for caching those `.deb`s in CircleCI
- use that command in the platform test build matrix. ZFS versions:
**2.2.9**, **2.3.5**, and **2.4.0**

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 22:47:25 +01:00
Christian Schwarz 1dfae6829b zfs: fix platformtest compat with ZFS 2.3 & 2.4 (#922)
The error message when destroying a held snapshot no longer is `dataset
is busy` but `it's being held. Run 'zfs holds -r <snapshot>' to see
holders.`

The existing `destroySnapshotsErrorRegexp` parses both formats
correctly, but downstream test assertions in platformtest were checking
for the literal `dataset is busy` string.

refs
- the PR that adds ZFS 2.3 & 2.4 to CI:
https://github.com/zrepl/zrepl/pull/921

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 22:39:07 +01:00
Christian Schwarz c393f35453 circleci: run platformtest on both Ubuntu 22.04 and 24.04 (#919)
- Add `image` matrix parameter to the `platformtest` job so it runs on
both `ubuntu-2204:current` and `ubuntu-2404:current`
- Covers both current Ubuntu LTS releases for platform testing
2026-02-10 20:54:43 +01:00
Christian Schwarz ed4547166a build: fix make release-docker (#918)
PR
- https://github.com/zrepl/zrepl/pull/913

didn't update the `release-docker` flow to use `uv`, thereby breaking
it.

## Changes

- Create `.uv-version` file to centralize UV version between Dockerfile
and CircleCI
- Update build container to use `uv`

While at it, make life with the build container better:
- Create `zrepl_build` user in the build container as same UID/GID as
the caller of `make release-docker`
- Allow Ctrl-C to cancel `make release-docker` in interactive shells
2026-02-10 19:13:03 +01:00
Christian Schwarz 888283c06f deps: upgrade Go 1.24.13/1.25.7, protoc 33.5, and module dependencies (#917)
- Go minimum 1.24.12 → 1.24.13, toolchain go1.25.6 → go1.25.7 (Feb 4
security fixes)
- protoc 33.4 → 33.5, protoc-gen-go-grpc 1.6.0 → 1.6.1
- Update all Go module dependencies (go get -u -t ./...)
- Regenerate protobuf/grpc code

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-08 18:59:42 +01:00
Christian Schwarz 9e5f5e1ec9 docs: fix GitHub pages rendering (#916)
We need the `.nojekyll` file to render `zrepl.github.io` properly.

Before 4f950bb , `sphinx-multiversion` rendered `.nojekyll`.
2026-02-06 01:10:28 +01:00
Christian Schwarz 17805e32c2 circleci: DRY docs jobs + update image (#915)
Consolidate `quickcheck-docs` and `publish-zrepl-github-io` jobs into a
single parameterized `run-docs-publish-sh` job with a `push` boolean.
Don't run `make docs` anymore, it's run by `publish.sh` internally
anyway.

The cimg includes `make`, and we don't need Go to build the docs.

Drive-by update to `cimg/base:current` - we pinned all important build
inputs for docs using `uv`, and the inputs we use from the `cimg`
(git, make) are stable.
2026-02-06 00:56:40 +01:00
Christian Schwarz 2aff1e45a4 circleci: fix docs push auth (#914)
In commit 4f950bb60 we switched the publish workflow to use HTTPS and
changed CircleCI config accordingly. However, that wasn't working. The
error we get after merge to `master`, when we run the job, is: `The key
you are authenticating with has been marked as read only.`

The reason is that CircleCI configures SSH URL rewriting, which takes
precedence.

Fix by using git's `url.<base>.insteadOf` config to rewrite both HTTPS
and SSH URLs to use HTTPS with the GitHub token. This ensures the token
is used regardless of any SSH configuration.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 00:32:59 +01:00
Christian Schwarz 4f950bb60a docs: simplify build + zrepl.github.io publishing (#913)
This PR simplifies how we build and publish docs:

- **Publish from `master` branch, retire `stable` branch.** The `stable`
branch was a manual step in the release process and often out of date.
Docs are now built and published directly from `master`.
Release-specific docs are available in the `zrepl-noarch.tar` asset on
each GitHub release.

- **build dependencies**: use `uv` for dependency management

- **zrepl.github.io: retire multi-version docs**: before this PR we used
`sphinx-multiversion` to publish multiple docs versions to
`zrepl.github.io`. This was never worth the pain, so, this PR removes it
in order to simplify stuff. Old docs are available in the GitHub
releases, and the docs now have a version dropdown that links there for
a hand-curated set of versions.

- **GitHub pages repo checkout**: use HTTPS because that's what I use
these days for all things GitHub. Switch CircleCI to a fine-grained PAT.

Refs
- docs bug https://github.com/zrepl/zrepl/issues/895
  - links to config examples should work again after this PR

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 23:49:26 +01:00
Christian Schwarz e5704d518f README: some instructions on how to update various dependencies (#911)
Informed by
- https://github.com/zrepl/zrepl/pull/910
2026-01-22 02:12:56 +01:00
Christian Schwarz e3aca655c1 deps & Go update: Go 1.25; go dependencies to latest; golangci-lint; protoc 2026-01-22 02:09:14 +01:00
Bakhtiyar Neyman d3b229562c zfscmd: avoid word "error" in info-level log lines (#873)
A number of tools including `lnav` do a crude string matching against
the word "error". For zrepl this results in benign lines being colored
red. It would be better if the logged message was something like
"command ran successfully".

refs
- #872

---------

Co-authored-by: Christian Schwarz <me@cschwarz.com>
2026-01-22 01:48:06 +01:00
Christian Schwarz 6e6a3454de upgrade protoc to 33.4 2026-01-22 00:43:18 +00:00
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