This PR refactors how requests are processed in Krill. It creates a
clear distinction between the HTTP server running async on a Tokio
runtime and the core of Krill running as regular sync code on a thread
pool.
This means that those portions of the core that were previously async,
notable the HTTP requests to remote parents and publishers, end up
blocking a thread now. For most things this should be fine. For
potentially long-running tasks, we have a separate thread pool so they
won’t block all of Krill.
This PR removes the static-openssl feature. If necessary, this features can
be invoked by selecting openssl/vendored directly.
The PR also removes building and testing with default features from the CI
workflow. The only difference between default and all features currently is
rta which is deprecated and will be removed, anyway.
This PR now also fixes a few issues in krillc config simple and the post
install scripts for Debian and RPM packages.
In no particular order:
* Generalize references to Krill where they are not Krill specific.
* Make argument order consistent with Routinator.
* Various comment tidying and harmless changes for consistency with (e.g. argument order) the Routinator pkg workflow.
* Trigger the pkg workflow for all v* tags as this is simpler than matching specific version patterns and is consistent with the Routinator pkg workflow.
* Don't use ubuntu-latest as we unexpected changes may be introduced when latest moves up to the next Ubuntu release.
* Use the same latest DEB/RPM tool versions and features as the Routinator pkg workflow.
* Parameterize the Docker repo to push to. Don't assume it matches the GH repo name.
* Docker repo name must be lowercase.
* Ensure executables copied into the Docker image have the executable permission.
* Let the compiler choose the right target in the Dockerfile.
* Work around GitHub misapplication of secret protection to the dockerbasetag workflow job output.
* Upgrade to actions/cache@3
* Move the Docker workflow into the main Packaging workflow.
* Extend the Dockerfile to support building from precompiled externally supplied binaries as well as building from sources (to support the cross-compilation case).
* Extend the workflow to support cross-compilation for both Docker images and traditional packages. (#764)
* Extend the workflow to publish a multi-arch Docker manifest.
* Prefix tmp artifact names with 'tmp-' so that packages.nlnetlabs.nl scripts can easily ignore them.
* Use latest upload/download artifact action versions.
* Upload built Docker images as GitHub Actions artifacts.
* Switch to the vault package repository for CentOS 8 now that it is EOL.
* Don't delete cross compiled binaries during pkg job as multiple invocations of the matrix need to access the same artifact.
* Support "prepare-upgrade" through "krillup" binary.
* Package the new `krillup` binary and man page into a separate DEB/RPM.
* Also switches to building in a Rocky Linux container due to repeated CentOS 8 vault repo timeouts.
* Mention correct config file location on CLI help.
* Remove incorrect reference to non-existent help subcommand for krillup.
* Add locking to upgrade process.
Co-authored-by: Ximon Eighteen <3304436+ximon18@users.noreply.github.com>
Cross compile DEB packages for armhf/ARMv7 and aarch64/ARM64 using the Rust Tools team cargo cross tool.
Tested on Raspbian 11/Debian Bullseye on a Raspberry Pi 4b (armhf) and Armbian/Debian Buster on a Rock64 (aarch64).
Doesn't yet support stripping of cross compiled binaries (revisit this when Cargo supports the Rust 1.58.0 strip feature) or automated determination of DEB dependencies for cross compiled binaries.
Also removes a duplicate `--system` argument to `useradd` in the RPM `postinst` script.
- Switch to O/S name based jobs instead of O/S numeric version to support Debian bullseye (which doesn't yet have a numeric Docker image tag and so cannot be run in a container by number, only by name).
- Switch to official cargo-deb release that has the required systemd unit functionality.
- Drop usage of empty 'job.container.image' cache key component.
- Work around lack of support for `date --rfc-email` in older O/S versions.
- Use a simpler and more consistent approach for waiting for network up in LXC containers.
- Ensure sudo is available.