Skip to content

Commit

Permalink
Release 1.0.0-dev.20230907
Browse files Browse the repository at this point in the history
  • Loading branch information
rnijveld committed Sep 7, 2023
1 parent 6fc27f7 commit b620997
Show file tree
Hide file tree
Showing 27 changed files with 206 additions and 122 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ on:
push:
branches:
- main
- 'release/**'
pull_request:
branches-ignore:
- 'release/**'
schedule:
- cron: '0 4 * * *'

Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/pkg.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: packaging

on:
push:
branches:
- 'release/**'
workflow_dispatch:

jobs:
Expand Down
129 changes: 62 additions & 67 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,71 @@
Master
======
# Changelog

Major Changes
-----
- Reworked configuration options for peers (see the documentation for new
instructions on how to configure peers).
- Removed support for rfc5905 algorithm.
## [1.0.0-dev.20230907] - 2023-09-07

Minor Changes
-----
### Added
- Man pages have been added to the built packages.
- `ntp-ctl` now has human-friendly output

### Changed
- Peers have been renamed to sources.
- The configuration has been completely reworked, please check the documentation
for details. Configuration will not automatically migrate.
- The metrics for observation have been completely reworked.
- Several changes have been made to reduce the number of dependencies.
- Send software timestamping is now enabled by default.
- Hardware timestamping can now only be configured if ntpd-rs is built with the
`hardware-timestamping` feature (off by default).
- The default observation socket path was changed to `/var/run/ntpd-rs/observe`.
- Upgraded dependencies.

Bug fixes
-----
### Fixed
- Fix bug around handling of leap second indicators.
- Fixed bug around handling of accumulated step thresholds.

Version 0.3.7
======
### Removed
- Removed support for the RFC5905 algorithm.
- Sources and servers can no longer be configured via the command line.
- Logging can now only be configured via a log level, no other filtering is
possible.
- The daemon control socket has been removed, the daemon can no longer be
reconfigured at runtime.

Minor Changes
-----
- Removed sentry support
- Upgraded dependencies
## [0.3.7] - 2023-08-23

### Changed
- Upgraded dependencies.

Bug fixes
-----
### Removed
- Removed sentry support.

### Fixed
- Upgraded webpki to deal with denial of service security issue during startup.

Version 0.3.6
======
## [0.3.6] - 2023-06-30

Major Changes
-----
### Major Changes
- Restructured configuration. See CONFIGURATION.md.

Minor Changes
-----
### Minor Changes
- Additional example configuration for freeBSD.
- Slight improvements to clock algorithm.
- Upgraded dependencies.
- Clock now synchronizes faster on startup.
- Added support for listening for NTS-KE on multiple ip/port combinations.

Bug fixes
-----
### Bug fixes
- Fixed bug that caused ntp-ctl validate to not print warnings on the
configuration, only parsing errors.
- Fixed bug in nts parsing that caused NTS to be entirely inoperable.

Version 0.3.5
======
## [0.3.5] - 2023-06-15

No changes compared with 0.3.4, needed due to technical difficulties in release
process.

Version 0.3.4
======
## [0.3.4] - 2023-06-15

Minor Changes
-----
### Minor Changes
- Fixed bug that caused nts-providing servers to fail after key rotation (which
by default happens daily).
- Upgraded dependencies.
Expand All @@ -73,36 +76,29 @@ Minor Changes
clock.
- Removed some spurious warnings around server strata.

Version 0.3.3
======
## [0.3.3] - 2023-05-25

Major Changes
-----
### Major Changes
- Compilation with musl libc on linux (thanks @sanmai-NL)
- Compilation support for macos (thanks @andrewaylett)
- Compilation support for freebsd (thanks @valpackett)

Minor Changes
------
### Minor Changes
- Fix for invalid NTS cookie decoding that could cause a server panic
- Improved mechanism for waiting on timestamps arriving the error queue
- Added security policy
- Upgraded dependencies
- Remove exitcode dependency
- Remove direct prometheus dependency from ntp-daemon

Version 0.3.2
======
## [0.3.2] - 2023-04-17

Minor Changes
------
### Minor Changes
- Updated readme and documentation

Version 0.3.1
======
## [0.3.1] - 2023-04-17

Major Changes
-----
### Major Changes
- Our new and improved clock algorithm is now the default
- Implemented (de)serialization of NTP extension fields
- Implemented NTS Key Exchange
Expand All @@ -111,46 +107,45 @@ Major Changes
- Changed format of timedata reported for peers to ensure compatibility with
different algorithms.

Minor Changes
-----
### Minor Changes
- Upgraded dependencies
- Refactored internal structure of the code.

Version 0.3.0
======
Unreleased

Version 0.2.1
======
## [0.2.1] - 2022-12-01

Major Changes
-----
### Major Changes
- Pool support.
- Prometheus exporter.

Minor Changes
-----
### Minor Changes
- Upgraded dependencies
- Refactored internal structure of the code.

Version 0.2.0
======
## [0.2.0] - 2022-07-29

Major Changes
-----
### Major Changes
- Implemented support for running an NTP server.
- Renamed `ntp-client` binary to `ntp-ctl`.

Minor Changes
-----
### Minor Changes
- Made poll interval range and initial value configurable.
- Minor improvements to timestamping of received and sent packets.
- Minor improvements to log output, particularly around attribution of events to
specific peers.
- Upgraded dependencies

Bugfixes
-----
### Bugfixes
- Fixed a number of bugs around poll interval adjustment.
- Fixed a bug in peer dispersion calculation which resulted in overly
pessimistic dispersion estimates.

[1.0.0-dev.20230907]: https://github.com/pendulum-project/ntpd-rs/compare/v0.3.7...v1.0.0-dev.20230907
[0.3.7]: https://github.com/pendulum-project/ntpd-rs/compare/v0.3.6...v0.3.7
[0.3.6]: https://github.com/pendulum-project/ntpd-rs/compare/v0.3.5...v0.3.6
[0.3.5]: https://github.com/pendulum-project/ntpd-rs/compare/v0.3.3...v0.3.5
[0.3.4]: https://github.com/pendulum-project/ntpd-rs/compare/v0.3.3...v0.3.4
[0.3.3]: https://github.com/pendulum-project/ntpd-rs/compare/v0.3.2...v0.3.3
[0.3.2]: https://github.com/pendulum-project/ntpd-rs/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/pendulum-project/ntpd-rs/compare/v0.2.1...v0.3.1
[0.2.1]: https://github.com/pendulum-project/ntpd-rs/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/pendulum-project/ntpd-rs/releases/tag/v0.2.0
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ resolver = "2"

# Global settings for our crates
[workspace.package]
version = "0.3.6"
version = "1.0.0-dev.20230907"
edition = "2021"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/pendulum-project/ntpd-rs"
Expand Down Expand Up @@ -65,7 +65,7 @@ zeroize = "1.5"

# our own crates used as dependencies, same version as the workspace version
# NOTE: keep this part at the bottom of the file, do not change this line
ntp-os-clock = { version = "0.3.6", path = "./ntp-os-clock" }
ntp-proto = { version = "0.3.6", path = "./ntp-proto", features = ["__internal-api"] }
ntp-udp = { version = "0.3.6", path = "./ntp-udp" }
ntpd = { version = "0.3.6", path = "./ntpd" }
ntp-os-clock = { version = "1.0.0-dev.20230907", path = "./ntp-os-clock" }
ntp-proto = { version = "1.0.0-dev.20230907", path = "./ntp-proto", features = ["__internal-api"] }
ntp-udp = { version = "1.0.0-dev.20230907", path = "./ntp-udp" }
ntpd = { version = "1.0.0-dev.20230907", path = "./ntpd" }
2 changes: 1 addition & 1 deletion config/nts.client.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[observability]
# Other values include trace, debug, warn and error
log-level = "info"
observation-path = "/run/ntpd-rs/observe"
observation-path = "/var/run/ntpd-rs/observe"

# See CONFIGURATION.md for how to set up certificates
[[source]]
Expand Down
72 changes: 49 additions & 23 deletions docs/development-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,56 @@

## Releasing

Before creating a release make sure that the changelog is up to date and that
any changes in the readme and other documentation were made.
New releases are created by starting at either the most recent commit on main,
or by backporting fixes on top of an existing tag. Some things to take note of
before starting the release process:

New releases are created by using `cargo-release`. To create a new release make
sure you have it installed and then run `cargo release [level]` with level being
one of `alpha`, `beta`, `rc`, `patch`, `minor` or `major`. To make a new release
make sure you have access to publish new releases and make sure that you are on
the `main` branch and have access to push new commits to that branch. Make sure
to pick the correct release level depending on the contents of the release. Also
make sure that the changelog is up-to-date with the most recent changes. By
default `cargo release` will run in dry-run mode and run some checks to make
sure that things probably work as expected. You are required to sign the commit
and tag you will make, so make sure that gpg is working as intended. Once ready,
you can run `cargo release [level] --execute` to actually build and commit.
- Have all dependencies recently been updated using `cargo update`?
- Does the changelog contain all recent additions, removals, changes and fixes?
- Are there still any open issues in any related milestone on GitHub?

Once this command completes, new releases should have been published to
crates.io, but please verify manually that everything is where it is supposed to
be. A new commit and tag will also have been pushed to the repository. This
should also trigger a release build on github.
To determine what version to release we keep to semantic versioning:

Once a release build finished, go to the `Actions` tab in GitHub and find the
run of the pkg workflow for the release commit. At the bottom of the page you
can download the release artifacts to upload them to a new release.
- If there are any (major) breaking changes, we always release a new major
version.
- Patch versions are generally only released for tiny fix-only releases.
- Minor versions are released when large fixes or new features are introduced.
- At any time a new dev release can be made, if unknown what version the next
release will be you should always assume a patch version change and only
increase minor or major versions if any new features or breaking changes are
happening respectively.
- Before big releases or if testing is required, a beta or release candidate
can be released.

Next, go to the releases page on GitHub and create a new release from the tag
previously uploaded by `cargo release`. Make sure to include the release notes
and the binaries you previously downloaded from the `Actions` page.
### Checklist

- [ ] Run `utils/update-version.sh [version]`
- [ ] Update `CHANGELOG.md` with the new version, remove any `Unreleased`
section in the changelog.
- [ ] `git switch -c release/[version]`
- [ ] `git commit -a -S -m "Release [version]"`
- [ ] `git push -u origin release/[version]`
- [ ] Wait for all actions to finish and succeed, make sure both the checks and
the packaging workflow succeed.
- [ ] Either create a PR and let someone review the release, or directly merge
into the target branch (for most releases this will be `main`).
- [ ] On the merged commit, create a new (signed) tag:
`git tag -a -s -m "Version [version]" v[version]`
- [ ] Push the tag to GitHub: `git push origin v[version]`
- [ ] Release on crates.io by running `utils/release.sh`
- [ ] Download the artifacts by running `utils/download-artifacts.sh [github-api-token] [run-id]`
The run id can be extracted from the URL by going to the `Actions` page on
GitHub and clicking through to the specific packaging run. A GitHub API
token can be generated by going to your personal settings (via your
profile picture), clicking on `Developer settings` (at the bottom) and
generating a new 'Fine grained personal access token'. Easiest way here
is to select 'All repositories' and then enabling the Actions 'Read-only'
permission.
- [ ] Create a new release on GitHub: https://github.com/pendulum-project/ntpd-rs/releases/new
- [ ] Pick the tag just pushed.
- [ ] Set the title to `Version [version]`.
- [ ] Add the contents of the changelog specific to this version to the body
of the release. You may add any additional text at the top of the release
text.
- [ ] Upload all the files in the `target/pkg` directory.
- [ ] Publish the release.
2 changes: 1 addition & 1 deletion docs/guide/exporting-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Ntpd-rs comes with support for exporting key operational metrics to an external
Enabling the observability socket requires the following to be present in the configuration:
```toml
[observability]
observation-path = "/run/ntpd-rs/observe"
observation-path = "/var/run/ntpd-rs/observe"
```
This line is already present in the default configuration if nptd-rs was installed from our packages.

Expand Down
Loading

0 comments on commit b620997

Please sign in to comment.