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>
- 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>
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>
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>
- 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
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
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.
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>
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>
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>
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.
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>
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
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>
**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>
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)
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