* 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.
Various Debian packaging fixes and improvements: (note: depends on a fork of cargo deb as some cargo deb PRs are still pending)
- Fix: Krill will now be restarted when the package is upgraded (also when upgrading from v0.7.0/v0.7.1/v0.7.2/v0.7.3 packages) (fixes#280).
- Fix: systemd warning after apt remove (fixes#275).
- Fix: Lintian error "manpage-not-compressed" (via cargo deb PR 133).
- Fix: Lintian error "debian-changelog-file-missing" (via cargo deb PR 137). Note: the changelog is only a minimal pointer to the GitHub release notes, attributed to the user doing the pull requestor or merge to master.
- Fix: Lintian error "copyright-without-copyright-notice".
- Fix: Cargo Deb "warning: extended-description field missing" (via cargo deb PR 138).
- Fix: Incorrect systemd unit "vendor preset: enabled" (via PR 276).
- Fix: Remove unused /etc/krill directory created by the "ConfigurationDirectory" systemd unit key.
Also:
- Use debhelper dh_installsystemd style support for systemd unit installation (based on official Debian debhelper dh_installsystemd autoscripts & logic) instead of incomplete/erroneous hand crafted maintainer scripts (via cargo deb PR 135).
- Uses systemd unit masking on package removal as recommended (see PR 276).
- Enables bash echo output for pkg workflow run steps.
- Verfies built deb packages with Lintian.
- Less repetition in Cargo.toml.
Correctly handle dashes in the Krill version number so that 'pre-release' 'tags' appended to the version number do not cause the package to be considered newer than a final untagged version number. Treat `-plus` as an exception denoting a build that is indeed newer.
- Assumes that the target system has ca-certificates installed already.
- Vendor OpenSSL to support Ubuntu 16.04 which only has OpenSSL 1.0.0.
- Use GH caching to avoid repeat compilation of unchanging cargo deb and krill dependencies.
- Build in Docker containers as GH runners have too many non-standard packages and libraries pre-installed.
- Sanity check the created DEB in targeted O/S versions via LXC/LXD containers (for systemd support).
- Assumes that the target system has ca-certificates installed already.
- Vendor OpenSSL to support Ubuntu 16.04 which only has OpenSSL 1.0.0.
- Use an Ubuntu 16.04 compatible version of libgcc1 (don't use cargo-deb $auto
depends as the GH 16.04 runner has a much newer libgcc1 package than stock
Ubuntu 16.04).
- Use GH caching to avoid repeat compilation of unchanging cargo deb and krill
dependencies.
- Sanity check the created DEB in targeted O/S versions.