-
Notifications
You must be signed in to change notification settings - Fork 32
Open
Description
Move CLI (cli + pkcs11) into KMS; Merge Docs; Adapt CI (forward-proxy); Publish & Packages
Summary
Consolidate the CLI from Cosmian/cli (both cli and pkcs11 crates) into the Cosmian/kms repository as workspace members, merge CLI documentation into documentation, and adapt KMS CI to take back the forward-proxy tests. Additionally, publish the cli crate to crates.io (reusing ckms as previously), deliver signed Linux packages plus Windows/macOS packages, and introduce Nix derivations for CLI and server packaging.
Goals
- Unify cargo workspace to include server, CLI, and pkcs11 crates (rename KMS current crate cli to clap)
- Centralize documentation under documentation.
- Restore
forward-proxytest coverage in KMS CI. - Publish cli to crates.io, reusing
ckmscrate integration. - Deliver signed Linux packages (Deb/RPM) and Windows/macOS packages.
- Add
cli.nix(cli crate),cli_pkcs11.nix(for pkcs11 crate provider) and makekms-server.nixdepend oncli.nix(server packaging depends onckmsbinary). - cli.nix and cli_pkcs11.nix must depend at most of glibc 2.28
Scope
- Move crates:
Cosmian/cli/crate/cli→Cosmian/kms/crate/cliCosmian/cli/crate/pkcs11/provider→Cosmian/kms/crate/pkcs11/providerCosmian/cli/crate/pkcs11/module→Cosmian/kms/crate/pkcs11/module
- Update Cargo.toml to include new
[workspace] members. - Merge
Cosmian/cli/documentation/**intoCosmian/kms/documentation/**. - Update KMS CI to include a
forward-proxyjob analogous to CLI’s (seeforward-proxyinmain_base.yml). - Add crates.io publishing and packaging pipelines (Linux signed Deb/RPM, Windows/macOS via cargo packager).
- Create
cli.nixand modifykms-server.nixto depend oncli.nix, usingckmsbinary where required.
Plan
- Workspace integration:
- Add CLI and pkcs11 crates as
membersin Cargo.toml. - Adjust path dependencies and features to KMS workspace conventions.
- Ensure rust-toolchain.toml alignment (KMS uses
1.90.0) and OpenSSL env compatibility.
- Add CLI and pkcs11 crates as
- Documentation merge:
- Copy
cli/documentationinto documentation. - Merge
mkdocs.ymlandincludes.ymlnavigation. - De-duplicate overlapping topics; fix links and images.
- Copy
- CI changes (forward-proxy):
- Create
forward-proxyjob inkms/.github/workflows/*mirroring CLI (forward_proxy.yml). - Reference
forward-proxyinneedsfor release where applicable. - Keep other CLI CI jobs (e.g., CLI docker image build) out of KMS.
- Create
- Publishing (crates.io):
- Configure Cargo.toml with publish-ready metadata (name, description, license, repository, categories, keywords).
- Ensure
clicontinues to reuse theckmscrate as previously; validate semver and features. - Add CI job to publish
clito crates.io using repository secret (e.g.,CRATES_IOtoken).
- Packaging:
- Linux:
- Build Debian and RPM packages for CLI and server artifacts.
- Sign packages using existing CI GPG key via
nix.sh(import key, sign artifacts). - Ensure server Linux packages include the
ckmsbinary (do not referencecosmian).
- Windows/macOS:
- Use cargo packager configuration modeled on
crate/server/Cargo.toml(targets, bundle metadata, icons). - Produce Windows (
.zip/installer) and macOS (.dmg/.pkg) artifacts.
- Use cargo packager configuration modeled on
- Linux:
- Nix derivations:
- Create
cli.nixto build/package the CLI, exposing theckmsbinary and the DLL/SO libcosmian_pkcs11.so. The cli.nix must also builds the pkcs11 provider crate. - Update
kms-server.nixso it depends oncli.nix(server packaging relies onckmsbinary).
- Create
Work Items
- Move cli and register in Cargo.toml workspace.
- Move PKCS11 provider and module; register in workspace.
- Update inter-crate dependencies, features, and path imports; keep
ckmsintegration unchanged. - Merge
Cosmian/cli/documentation/**→Cosmian/kms/documentation/**. - Update mkdocs.yml and
includes.ymlwith CLI topics. - Add
forward-proxyjob tokms/.github/workflows/*; wire intoneeds. - Configure Cargo.toml for crates.io publishing; add CI job using
CRATES_IOtoken. - Add Linux packaging pipeline (Deb/RPM) with GPG signing via
nix.sh. - Ensure server Linux packages include
ckmsbinary (notcosmian). - Add Windows/macOS packaging via cargo packager (follow
crate/server/Cargo.tomlpattern). - Create
cli.nixand integrate in CI; exposeckmsbinary for server packaging. - Update
kms-server.nixto depend oncli.nix(ckms binary dependency). - Validate builds, docs, CI, publish, Nix derivations, and multi-OS packaging.
CI Notes (forward-proxy)
- CLI’s
main_base.ymlincludes aforward-proxyjob used inrelease.needs(seeforward-proxy). - KMS CI should:
- Add an equivalent
forward-proxyjob in KMS. - Include it in the release
needsgraph where artifacts require it. - Keep non-forward-proxy CLI CI outside of KMS.
- Add an equivalent
Packaging & Signing Notes
- Linux:
- The new CLI Deb/RPM packages must be signed with existing CI GPG key.
- Attach signed packages as release assets; verify signatures in pipeline.
- Windows/macOS:
- Configure CLI cargo packager entries (bundle identifier, version, resources) modeled on
crate/server/Cargo.toml. - Produce platform-appropriate installers and archives.
- Configure CLI cargo packager entries (bundle identifier, version, resources) modeled on
References
Cosmian/cli: https://github.com/Cosmian/cliCosmian/kms: https://github.com/Cosmian/kms- CLI CI reference: main_base.yml (job
forward-proxy)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels