From 6940507f167b90d92799c6edcee26fc0e5314575 Mon Sep 17 00:00:00 2001 From: d0p1 <contact@d0p1.eu> Date: Fri, 29 Nov 2024 17:53:03 +0100 Subject: [PATCH] Packaging rpm (#260) (nodes/rust/duniter-v2s!292) * ci: fix build_rpm * packaging: rpm add duniter.sysusers file * ci: build rpm * packaging: build rpm with cargo-generate-rpm --- .gitlab-ci.yml | 20 ++++++++++++++++++++ docs/packaging/build-rpm.md | 20 ++++++++++++++++++++ node/Cargo.toml | 11 +++++++++++ resources/debian/duniter.sysusers | 2 ++ 4 files changed, 53 insertions(+) create mode 100644 docs/packaging/build-rpm.md create mode 100644 resources/debian/duniter.sysusers diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 88dbca5ae..6fdbebf62 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -136,6 +136,26 @@ build_deb: paths: - target/debian/duniter*.deb +build_rpm: + stage: deploy + extends: .env + rules: + - if: $CI_COMMIT_REF_NAME =~ /^wip*$/ + when: manual + - if: $CI_COMMIT_TAG + when: never + - <<: *is_network_branch + when: never + - if: '$CI_MERGE_REQUEST_ID || $CI_COMMIT_BRANCH == "master"' + - when: manual + script: + - cargo install cargo-generate-rpm + - cargo build -Zgit=shallow-deps --release + - cargo generate-rpm -p node + artifacts: + paths: + - target/generate-rpm/duniter*.rpm + tests: stage: tests extends: .env diff --git a/docs/packaging/build-rpm.md b/docs/packaging/build-rpm.md new file mode 100644 index 000000000..eb461f7fd --- /dev/null +++ b/docs/packaging/build-rpm.md @@ -0,0 +1,20 @@ +# How to Build the Duniter RPM Package + +1. Install dependencies: + ```sh + # Fedora + sudo dnf install clang cmake protobuf-compiler openssl-devel + ``` +2. Compile the project: + ```sh + cargo build --release + ``` +3. Install `cargo-generate-rpm`: + ```sh + cargo install cargo-generate-rpm + ``` +4. Build the package: + ```sh + cargo generate-rpm -p node + ``` +5. The `.rpm` package will be located in the `target/generate-rpm` folder. diff --git a/node/Cargo.toml b/node/Cargo.toml index 7e853ef8b..9f69ecf44 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -212,3 +212,14 @@ assets = [ "755", ], ] + +[package.metadata.generate-rpm] +assets = [ + { source = "../target/release/duniter", dest = "/usr/bin/duniter2", mode = "755" }, + { source = "../resources/debian/duniter.sysusers", dest = "/usr/lib/sysusers.d/duniter.conf", mode = "0644" }, + { source = "../resources/debian/env_file", dest = "/etc/duniter/env_file", config = true, mode = "0640" }, + { source = "../LICENSE", dest = "/usr/share/licenses/duniter/LICENSE" }, + { source = "../resources/debian/duniter-mirror.service", dest = "/usr/lib/systemd/system/duniter-mirror.service", mode = "0644" }, + { source = "../resources/debian/duniter-smith.service", dest = "/usr/lib/systemd/system/duniter-smith.service", mode = "0644" }, + { source = "../resources/debian/duniter-smith.service", dest = "/usr/lib/systemd/system/distance-oracle.service", mode = "0644" }, +] diff --git a/resources/debian/duniter.sysusers b/resources/debian/duniter.sysusers new file mode 100644 index 000000000..53040c301 --- /dev/null +++ b/resources/debian/duniter.sysusers @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u duniter - "Duniter user" /var/lib/duniter /sbin/nologin -- GitLab