Skip to content

Conversation

ausias-armesto
Copy link
Contributor

@ausias-armesto ausias-armesto commented Jun 30, 2025

Improves package pipeline by adding support to ArchLinux and also provides testing mechanisms.

@Copilot Copilot AI review requested due to automatic review settings June 30, 2025 13:51
Copy link
Contributor

coderabbitai bot commented Jun 30, 2025

📝 Walkthrough

Walkthrough

The version string in the hopr-lib package manifest was changed from "3.0.0" to "3.0.0-rc.1", marking a transition from a stable release to a release candidate. Multiple GitHub Actions workflows were updated to change their event trigger condition from pull_request to pull_request_target. The armv7l-linux target was removed from build and packaging workflows. The merge workflow's failure notification message was updated to link to the workflow runs page instead of the PR page. The README was updated to add installation options for Red Hat and Archlinux package managers, replacing Alpine instructions. The post-install script was modified to pass an identity password environment variable when reading identity information and conditionally start the service based on systemd presence. New scripts and documentation were added for package installation and testing on various Linux distributions using Google Cloud VMs. The package configuration was simplified by unifying dependencies and service file installation paths.

Changes

File(s) Change Summary
hopr/hopr-lib/Cargo.toml Updated version from "3.0.0" to "3.0.0-rc.1".
.github/workflows/bencher.yaml Changed event condition from pull_request to pull_request_target for workflow triggering logic.
.github/workflows/build-binaries.yaml, Removed armv7l-linux target; changed event condition to pull_request_target.
.github/workflows/build.yaml Removed armv7l-linux target from build matrix and runner configuration.
.github/workflows/build-dappnode.yaml Updated event condition check from pull_request to pull_request_target.
.github/workflows/close-release.yaml Removed label binary:armv7l-linux from PR labels.
.github/workflows/package.yaml Added GCP setup step; added package testing steps for Debian, CentOS, Arch; renamed Alpine artifact to Arch Linux.
.github/workflows/merge.yaml Modified failure notification message to link to workflow runs page filtered by failures instead of PR page.
README.md Added installation instructions for Red Hat and Archlinux package managers; replaced Alpine instructions with Archlinux.
deploy/nfpm/package-post-install.sh Added IDENTITY_PASSWORD env var to hopli identity read; conditionally start service based on systemd presence; moved node address display earlier.
deploy/nfpm/install-hoprd-package.sh New script to install hoprd package on Debian, RPM, and Archlinux distros with service status checks.
deploy/nfpm/nfpm.yaml Simplified package dependencies to unified list; consolidated service file installation path for all packages.
deploy/nfpm/README.md New documentation added describing OS packages, supported platforms, and local package generation/testing instructions.
deploy/nfpm/test-package-tool.sh New script to create, copy, install, and delete GCP VMs for testing package deployments across distros and architectures.
justfile Removed armv7l-linux architecture support; replaced Alpine package calls with Archlinux; added test-package recipe for automated package testing.
deploy/nfpm/hoprd.initd Removed OpenRC init script for hoprd service management.

Possibly related PRs

Suggested labels

toolchain, package:DAppNodePackage-Hopr-testnet, binary:x86_64-linux

Suggested reviewers

  • Teebor-Choka
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR bumps the hopr-lib package version to a release candidate to test the close release pipelines.

  • Updated version in Cargo.toml from 3.0.0 to 3.0.0-rc.1

@ausias-armesto ausias-armesto added the binary:x86_64-linux Build x86_64-linux binary label Jun 30, 2025
@github-actions github-actions bot added dependencies Pull requests that update a dependency file crate:hopr-lib labels Jun 30, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
README.md (3)

25-26: Typos & grammar in new TOC entries

Consider capitalizing “Debian” for consistency and fixing minor grammar:

-  - [Install via debian package manager](#install-via-debian-package-manager)
+  - [Install via Debian package manager](#install-via-debian-package-manager)

147-152: Fix wording & misspellings in the RPM instructions

The sentence is currently broken and “addres” is miss-spelled. A quick patch:

-# You can the Safe address and the Module addres from https://hub.hoprnet.org
+# You can find the Safe address and the Module address at https://hub.hoprnet.org

168-172: Repeat the wording fix for the Alpine section

Same typo / grammar issue as above:

-# You can the Safe address and the Module addres from https://hub.hoprnet.org
+# You can find the Safe address and the Module address at https://hub.hoprnet.org
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 265c3dd and 6ef3681.

📒 Files selected for processing (5)
  • .github/workflows/bencher.yaml (1 hunks)
  • .github/workflows/build-binaries.yaml (1 hunks)
  • .github/workflows/build-dappnode.yaml (1 hunks)
  • .github/workflows/merge.yaml (1 hunks)
  • README.md (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .github/workflows/build-dappnode.yaml
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.702Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/build-dappnode.yaml:40-40
Timestamp: 2025-05-27T16:23:08.868Z
Learning: In the hoprnet repository's GitHub workflows, labels are passed from build.yaml to build-dappnode.yaml with a trailing comma using `format('{0},', join(github.event.pull_request.labels.*.name, ','))`. Therefore, the condition checks in build-dappnode.yaml correctly use `format('package:{0},', inputs.dappnode_repository)` with a trailing comma to match the exact label format and prevent false positives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.974Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
README.md (1)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.643Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
.github/workflows/build-binaries.yaml (10)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:07:29.649Z
Learning: In GitHub Actions reusable workflows, the github.event_name context may inherit from the parent workflow rather than being set to 'workflow_call', allowing conditions like 'github.event_name == 'pull_request'' to work correctly when the parent workflow was triggered by a pull_request event.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:08:43.091Z
Learning: In GitHub Actions reusable workflows, the github context from the caller workflow is inherited by the called workflow, so github.event_name reflects the original triggering event (e.g., 'pull_request') rather than being set to 'workflow_call'. Conditions like 'github.event_name == 'pull_request'' work correctly in reusable workflows when the parent workflow was triggered by that event type.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:07:29.649Z
Learning: In GitHub Actions reusable workflows, the github context from the caller workflow is inherited by the called workflow, so github.event_name reflects the original triggering event (e.g., 'pull_request') rather than being set to 'workflow_call'. Conditions like 'github.event_name == 'pull_request'' work correctly in reusable workflows when the parent workflow was triggered by that event type.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:08:43.091Z
Learning: In GitHub Actions reusable workflows, the github context from the caller workflow is inherited by the called workflow, so github.event_name reflects the original triggering event (e.g., 'pull_request') rather than being set to 'workflow_call'. Conditions like 'github.event_name == 'pull_request'' work correctly in reusable workflows when the parent workflow was triggered by that event type.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/build-dappnode.yaml:40-40
Timestamp: 2025-05-27T16:23:08.868Z
Learning: In the hoprnet repository's GitHub workflows, labels are passed from build.yaml to build-dappnode.yaml with a trailing comma using `format('{0},', join(github.event.pull_request.labels.*.name, ','))`. Therefore, the condition checks in build-dappnode.yaml correctly use `format('package:{0},', inputs.dappnode_repository)` with a trailing comma to match the exact label format and prevent false positives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:0-0
Timestamp: 2024-11-26T17:47:21.777Z
Learning: In `.github/workflows/build-binaries.yaml`, when writing shell scripts in GitHub Actions workflows, the user prefers to set environment variables individually rather than grouping them together.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/add-labels.yaml:49-57
Timestamp: 2025-05-27T16:21:03.705Z
Learning: GitHub CLI (gh) accepts GITHUB_TOKEN as an environment variable for authentication in GitHub Actions workflows, not just GH_TOKEN. The environment variable GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} works correctly with gh commands like "gh pr edit".
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.702Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
.github/workflows/merge.yaml (5)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:07:29.649Z
Learning: In GitHub Actions reusable workflows, the github.event_name context may inherit from the parent workflow rather than being set to 'workflow_call', allowing conditions like 'github.event_name == 'pull_request'' to work correctly when the parent workflow was triggered by a pull_request event.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/build-dappnode.yaml:40-40
Timestamp: 2025-05-27T16:23:08.868Z
Learning: In the hoprnet repository's GitHub workflows, labels are passed from build.yaml to build-dappnode.yaml with a trailing comma using `format('{0},', join(github.event.pull_request.labels.*.name, ','))`. Therefore, the condition checks in build-dappnode.yaml correctly use `format('package:{0},', inputs.dappnode_repository)` with a trailing comma to match the exact label format and prevent false positives.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6545
File: transport/p2p/src/swarm.rs:491-494
Timestamp: 2024-10-11T10:43:34.869Z
Learning: When reviewing revert pull requests in the `hoprnet/hoprnet` repository, avoid making code recommendations or suggestions.
.github/workflows/bencher.yaml (8)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:07:29.649Z
Learning: In GitHub Actions reusable workflows, the github.event_name context may inherit from the parent workflow rather than being set to 'workflow_call', allowing conditions like 'github.event_name == 'pull_request'' to work correctly when the parent workflow was triggered by a pull_request event.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:08:43.091Z
Learning: In GitHub Actions reusable workflows, the github context from the caller workflow is inherited by the called workflow, so github.event_name reflects the original triggering event (e.g., 'pull_request') rather than being set to 'workflow_call'. Conditions like 'github.event_name == 'pull_request'' work correctly in reusable workflows when the parent workflow was triggered by that event type.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:07:29.649Z
Learning: In GitHub Actions reusable workflows, the github context from the caller workflow is inherited by the called workflow, so github.event_name reflects the original triggering event (e.g., 'pull_request') rather than being set to 'workflow_call'. Conditions like 'github.event_name == 'pull_request'' work correctly in reusable workflows when the parent workflow was triggered by that event type.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:08:43.091Z
Learning: In GitHub Actions reusable workflows, the github context from the caller workflow is inherited by the called workflow, so github.event_name reflects the original triggering event (e.g., 'pull_request') rather than being set to 'workflow_call'. Conditions like 'github.event_name == 'pull_request'' work correctly in reusable workflows when the parent workflow was triggered by that event type.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/build-dappnode.yaml:40-40
Timestamp: 2025-05-27T16:23:08.868Z
Learning: In the hoprnet repository's GitHub workflows, labels are passed from build.yaml to build-dappnode.yaml with a trailing comma using `format('{0},', join(github.event.pull_request.labels.*.name, ','))`. Therefore, the condition checks in build-dappnode.yaml correctly use `format('package:{0},', inputs.dappnode_repository)` with a trailing comma to match the exact label format and prevent false positives.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.974Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
⏰ Context from checks skipped due to timeout of 90000ms (10)
  • GitHub Check: hoprd / docker
  • GitHub Check: hopli / docker
  • GitHub Check: Docs / Rust
  • GitHub Check: Audit / Audit
  • GitHub Check: Zizmor / Zizmor
  • GitHub Check: Lint / Lint
  • GitHub Check: tests-unit-nightly
  • GitHub Check: Build Candidate Binaries (hopli)
  • GitHub Check: tests-unit
  • GitHub Check: Build Candidate Binaries (hoprd)
🔇 Additional comments (3)
.github/workflows/merge.yaml (1)

194-195: LGTM – better failure link

The updated Zulip message now points directly to failed merge.yaml runs, which is more actionable for maintainers.

.github/workflows/build-binaries.yaml (1)

64-78: Event-name switch looks correct

Changing the guard from pull_request to pull_request_target keeps the workflow consistent with the caller. No further issues spotted.

.github/workflows/bencher.yaml (1)

44-49: Consistent event handling

The script now checks for pull_request_target, matching other workflows. Logic remains intact.

@ausias-armesto ausias-armesto removed the binary:x86_64-linux Build x86_64-linux binary label Jun 30, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
deploy/nfpm/package-post-install.sh (1)

256-256: Quote the password to avoid unintended word-splitting / globbing

HOPRD_PASSWORD is unlikely to contain spaces, but quoting it costs nothing and prevents subtle bugs if that assumption ever changes.

-  node_address=$(IDENTITY_PASSWORD=${HOPRD_PASSWORD} hopli identity read -d /etc/hoprd/ | grep "Identity addresses:" | awk -F '[\\[\\]]' '{print $2}')
+  node_address=$(IDENTITY_PASSWORD="${HOPRD_PASSWORD}" hopli identity read -d /etc/hoprd/ | grep "Identity addresses:" | awk -F '[\\[\\]]' '{print $2}')

Minor, yet improves robustness.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6ef3681 and 1f057f8.

📒 Files selected for processing (1)
  • deploy/nfpm/package-post-install.sh (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: tolbrino
PR: hoprnet/hoprnet#6366
File: hoprd/rest-api/src/token_authentication.rs:48-51
Timestamp: 2024-07-11T20:14:37.286Z
Learning: The TODO comment in the `authenticate` function in `hoprd/rest-api/src/token_authentication.rs` regarding the JavaScript workaround for authentication headers will be addressed in future releases.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6366
File: hoprd/rest-api/src/token_authentication.rs:48-51
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The TODO comment in the `authenticate` function in `hoprd/rest-api/src/token_authentication.rs` regarding the JavaScript workaround for authentication headers will be addressed in future releases.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.702Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
deploy/nfpm/package-post-install.sh (2)
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6511
File: tests/test_integration.py:204-225
Timestamp: 2024-10-09T06:16:18.170Z
Learning: In test code, it's acceptable to use sensitive environment variables like `PRIVATE_KEY` and `IDENTITY_PASSWORD` without additional security measures, as they are testing values.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6511
File: tests/test_integration.py:204-225
Timestamp: 2024-09-30T22:09:43.172Z
Learning: In test code, it's acceptable to use sensitive environment variables like `PRIVATE_KEY` and `IDENTITY_PASSWORD` without additional security measures, as they are testing values.
⏰ Context from checks skipped due to timeout of 90000ms (10)
  • GitHub Check: hoprd / docker
  • GitHub Check: hopli / docker
  • GitHub Check: Docs / Rust
  • GitHub Check: Zizmor / Zizmor
  • GitHub Check: Audit / Audit
  • GitHub Check: Lint / Lint
  • GitHub Check: Build Candidate Binaries (hopli)
  • GitHub Check: Build Candidate Binaries (hoprd)
  • GitHub Check: tests-unit-nightly
  • GitHub Check: tests-unit

@ausias-armesto ausias-armesto changed the title feat(ci): Bump version to test close release pipelines feat(ci): Add package support to archlinux variant Jul 2, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (7)
deploy/nfpm/README.md (1)

4-6: Fix typos in supported lists.

operativaoperating, readhatredhat. Small but glaring and can confuse readers using copy-paste searches.

- - Supported operativa systems: `linux` and `darwin`
- - Supported linux distributions: `debian`, `readhat` and `archlinux`
+ - Supported operating systems: `linux` and `darwin`
+ - Supported Linux distributions: `debian`, `redhat` and `archlinux`
README.md (1)

147-153: Minor wording / grammar fixes in Red Hat section.

# You can the Safe address …# You can get the Safe address …
Also “Module addres” → “Module address”.

deploy/nfpm/install-hoprd-package.sh (2)

11-27: Non-uniform privilege escalation & Debian install command.

  • apt install is not recommended in scripts; use apt-get install for stability.
  • Only the rpm branch uses sudo; the others assume root. Pick one strategy to avoid surprises.
-  deb)
-    apt-get update
-    apt install -y "/tmp/hoprd.${DISTRIBUTION}"
+  deb)
+    sudo apt-get update
+    sudo apt-get install -y "/tmp/hoprd.${DISTRIBUTION}"

Repeat sudo (or drop it everywhere if the script always runs as root).


29-35: Early failure visibility.

If systemctl is unavailable (e.g. minimal container), the script exits with false negative. Consider checking command -v systemctl first and skipping the health check when absent.

deploy/nfpm/test-package-tool.sh (3)

5-10: Consider making GCP configuration more flexible.

The hard-coded GCP project and network settings may limit reusability across different environments. Consider making these configurable via environment variables or parameters.

-PROJECT_ID="hopr-staging"
-ZONE="europe-west3-a"
-MACHINE_TYPE_x86="e2-medium"
-MACHINE_TYPE_ARM="t2a-standard-2"
-NETWORK="vpc-network"
-SUBNET="private-subnet"
+PROJECT_ID="${HOPRD_GCP_PROJECT_ID:-hopr-staging}"
+ZONE="${HOPRD_GCP_ZONE:-europe-west3-a}"
+MACHINE_TYPE_x86="${HOPRD_GCP_MACHINE_TYPE_X86:-e2-medium}"
+MACHINE_TYPE_ARM="${HOPRD_GCP_MACHINE_TYPE_ARM:-t2a-standard-2}"
+NETWORK="${HOPRD_GCP_NETWORK:-vpc-network}"
+SUBNET="${HOPRD_GCP_SUBNET:-private-subnet}"

34-38: Improve architecture handling logic.

The architecture comparison logic could be more robust and clearer. Consider using a case statement for better maintainability.

-  if [ "${ARCHITECTURE}" == "aarch64" ]; then
-    machine_type="$MACHINE_TYPE_ARM"
-  else
-    machine_type="$MACHINE_TYPE_x86"
-  fi
+  case "${ARCHITECTURE}" in
+    aarch64-linux)
+      machine_type="$MACHINE_TYPE_ARM"
+      ;;
+    x86_64-linux)
+      machine_type="$MACHINE_TYPE_x86"
+      ;;
+    *)
+      echo "Unsupported architecture: ${ARCHITECTURE}"
+      exit 1
+      ;;
+  esac

128-129: Update error message to include all supported actions.

The error message only mentions 'create' and 'delete' but the script supports 'copy' and 'install' actions as well.

-      echo "Invalid action specified. Use 'create' or 'delete'."
+      echo "Invalid action specified. Use 'create', 'copy', 'install', or 'delete'."
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1f057f8 and 97803a2.

📒 Files selected for processing (11)
  • .github/workflows/build-binaries.yaml (1 hunks)
  • .github/workflows/build.yaml (0 hunks)
  • .github/workflows/close-release.yaml (1 hunks)
  • .github/workflows/package.yaml (3 hunks)
  • README.md (2 hunks)
  • deploy/nfpm/README.md (1 hunks)
  • deploy/nfpm/install-hoprd-package.sh (1 hunks)
  • deploy/nfpm/nfpm.yaml (2 hunks)
  • deploy/nfpm/package-post-install.sh (2 hunks)
  • deploy/nfpm/test-package-tool.sh (1 hunks)
  • justfile (1 hunks)
💤 Files with no reviewable changes (1)
  • .github/workflows/build.yaml
✅ Files skipped from review due to trivial changes (1)
  • .github/workflows/close-release.yaml
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/build-binaries.yaml
  • deploy/nfpm/package-post-install.sh
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6630
File: crypto/packet/src/por.rs:84-84
Timestamp: 2024-11-13T17:56:37.536Z
Learning: In PR #6630, the changes include the removal of ticket validation from the last hop and fixes for Index Offset handling as specified in the PR objectives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
.github/workflows/package.yaml (10)
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7280
File: .github/workflows/checks-pre-commit.yaml:30-36
Timestamp: 2025-07-01T13:09:08.718Z
Learning: In the hoprnet repository's GitHub Actions workflow architecture, ausias-armesto prefers to centralize input resolution and fallback logic in the main checks.yaml workflow, which then calls individual reusable workflows like checks-pre-commit.yaml. The individual workflows are designed to be called primarily through the main workflow rather than directly, so fallback values in the individual workflows may be considered redundant.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6502
File: flake.nix:12-14
Timestamp: 2024-09-30T08:27:16.849Z
Learning: The project already has CI workflows that automatically check for compatibility issues when updating dependencies, including compiling smart contracts with new Solidity versions, running the test suite, checking for compiler warnings or deprecation notices, and reviewing changelogs for breaking changes.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6502
File: flake.nix:12-14
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The project already has CI workflows that automatically check for compatibility issues when updating dependencies, including compiling smart contracts with new Solidity versions, running the test suite, checking for compiler warnings or deprecation notices, and reviewing changelogs for breaking changes.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/build-dappnode.yaml:40-40
Timestamp: 2025-05-27T16:23:08.868Z
Learning: In the hoprnet repository's GitHub workflows, labels are passed from build.yaml to build-dappnode.yaml with a trailing comma using `format('{0},', join(github.event.pull_request.labels.*.name, ','))`. Therefore, the condition checks in build-dappnode.yaml correctly use `format('package:{0},', inputs.dappnode_repository)` with a trailing comma to match the exact label format and prevent false positives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:28-28
Timestamp: 2025-06-19T10:07:29.649Z
Learning: In GitHub Actions reusable workflows, the github.event_name context may inherit from the parent workflow rather than being set to 'workflow_call', allowing conditions like 'github.event_name == 'pull_request'' to work correctly when the parent workflow was triggered by a pull_request event.
justfile (2)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
deploy/nfpm/install-hoprd-package.sh (5)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: tolbrino
PR: hoprnet/hoprnet#7070
File: nix/testShell.nix:22-23
Timestamp: 2025-04-15T19:24:23.570Z
Learning: In the HOPR project, the `autoPatchelf` command from Nix can handle the case where the target directory (like ./.venv) doesn't exist, so no additional directory existence check is needed before running it.
deploy/nfpm/nfpm.yaml (11)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: common/primitive-types/Cargo.toml:24-24
Timestamp: 2024-11-01T09:32:55.651Z
Learning: In the hoprnet project, dependency versions are defined in the workspace Cargo.toml, so it's not necessary to specify them in individual package Cargo.toml files.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6576
File: hoprd/rest-api/src/lib.rs:251-251
Timestamp: 2024-10-28T14:29:25.598Z
Learning: In the HOPRd project, the path `/api-docs2/openapi.json` is used instead of `/api-docs/openapi.json` to avoid conflicts.
deploy/nfpm/test-package-tool.sh (2)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
README.md (11)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.666Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
deploy/nfpm/README.md (8)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: tolbrino
PR: hoprnet/hoprnet#7070
File: nix/testShell.nix:22-23
Timestamp: 2025-04-15T19:24:23.570Z
Learning: In the HOPR project, the `autoPatchelf` command from Nix can handle the case where the target directory (like ./.venv) doesn't exist, so no additional directory existence check is needed before running it.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.666Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
🪛 Shellcheck (0.10.0)
deploy/nfpm/test-package-tool.sh

[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)

🪛 markdownlint-cli2 (0.17.2)
README.md

163-163: Bare URL used

(MD034, no-bare-urls)

🪛 LanguageTool
deploy/nfpm/README.md

[uncategorized] ~11-~11: Possible missing comma found.
Context: ... ## Generate package ### Development Locally the package can be generated by executi...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: hoprd / docker
  • GitHub Check: Lint / Lint
  • GitHub Check: Zizmor / Zizmor
  • GitHub Check: Build Candidate Binaries (hoprd)
  • GitHub Check: tests-unit-nightly
  • GitHub Check: tests-unit
🔇 Additional comments (6)
.github/workflows/package.yaml (1)

117-122: Upload path uses non-standard extension .archlinux.

Unless just package purposely renames the file, this path will not exist and the upload will silently upload an empty artefact. Confirm the real filename produced by nfpm.

README.md (1)

161-174: Incorrect Arch Linux uninstall command & bare URL.

  1. pacman del hoprd is not valid. Use pacman -Rns hoprd (or -R for simple remove).
  2. Consider wrapping the bare URL (line 163) in <> to silence markdownlint MD034.
- pacman del hoprd
+ sudo pacman -Rns hoprd
⛔ Skipped due to learnings
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
deploy/nfpm/nfpm.yaml (1)

30-32: Service file destination may break on Debian/Ubuntu.

Systemd searches /lib/systemd/system (Debian/Ubuntu) and /usr/lib/systemd/system (Arch/Fedora). nfpm does not relocate automatically for deb packages, so the service might not be enabled on Debian.

Would it be safer to install to /lib/systemd/system (works everywhere) or add a deb-specific override?

justfile (2)

52-52: LGTM: ArchLinux support added correctly.

The change from apk to archlinux packager aligns perfectly with the PR objective to add ArchLinux package support.


54-61: Well-implemented package testing automation.

The new test-package recipe provides comprehensive automated testing with:

  • Proper cleanup via EXIT trap
  • Complete logging to distribution-specific files
  • Sequential execution of create, copy, install operations
  • Clear success messaging

This integrates well with the new GCP VM testing infrastructure.

deploy/nfpm/test-package-tool.sh (1)

12-28: Well-structured distribution mapping.

The get_vm_image function correctly maps package formats to appropriate GCP VM image families for Debian, CentOS, and ArchLinux.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (3)
deploy/nfpm/test-package-tool.sh (2)

31-33: SC2155: split declaration & assignment for image
ShellCheck warns that combining declaration and command substitution can mask the command’s exit status. Declare first, assign next.

(Identical to a previous comment you acknowledged.)


81-83: Remote install command vulnerable to word-splitting & needs env-var validation

  1. Parameters (${HOPRD_PASSWORD} …) are expanded locally and transmitted unquoted, so spaces or special chars will break the SSH command line.
  2. The script never checks that these env vars are set (raised in an earlier review).
-gcloud compute ssh --tunnel-through-iap --project=${PROJECT_ID} --zone=${ZONE} "${INSTANCE_NAME}" --command="sudo bash /tmp/install-hoprd-package.sh ${DISTRIBUTION} ${HOPRD_PASSWORD} ${HOPRD_SAFE_ADDRESS} ${HOPRD_MODULE_ADDRESS} ${HOPRD_PROVIDER}"
+required_vars=(HOPRD_PASSWORD HOPRD_SAFE_ADDRESS HOPRD_MODULE_ADDRESS HOPRD_PROVIDER)
+for v in "${required_vars[@]}"; do
+  [ -z "${!v:-}" ] && { echo "Error: \$${v} not set"; exit 1; }
+done
+gcloud compute ssh --tunnel-through-iap --project="${PROJECT_ID}" --zone="${ZONE}" "${INSTANCE_NAME}" \
+  --command="sudo bash /tmp/install-hoprd-package.sh '${DISTRIBUTION}' '${HOPRD_PASSWORD}' '${HOPRD_SAFE_ADDRESS}' '${HOPRD_MODULE_ADDRESS}' '${HOPRD_PROVIDER}'"
deploy/nfpm/README.md (1)

19-20: Typo: holi should be hopli

Same issue was flagged previously; replace holi with hopli in both blocks.

-nix build -L .#holi-x86_64-linux
+nin build -L .#hopli-x86_64-linux
-nix build -L .#holi-aarch64-linux
+nin build -L .#hopli-aarch64-linux

Also applies to: 29-30

🧹 Nitpick comments (4)
deploy/nfpm/test-package-tool.sh (2)

41-52: Quote variable expansions in gcloud call to prevent word-splitting

Several unquoted expansions (${PROJECT_ID}, ${ZONE}, ${machine_type} …) may break if any variable ever contains spaces (e.g., a network name like “vpc prod”).
Wrap them in double quotes; gcloud options are safe with quotes.


126-128: Help text out-of-sync with supported actions

Default branch says “Use 'create' or 'delete'” but the script also supports copy and install. Update to avoid misleading users.

-      echo "Invalid action specified. Use 'create' or 'delete'."
+      echo "Invalid action specified. Use 'create', 'copy', 'install', or 'delete'."
deploy/nfpm/README.md (2)

6-7: Spelling & distro name errors

  • “operativa systems” → “operating systems”
  • “readhat” → “redhat”
-- Supported operativa systems: `linux` and `darwin`
-- Supported linux distributions: `debian`, `readhat` and `archlinux`
+- Supported operating systems: `linux` and `darwin`
+- Supported Linux distributions: `debian`, `redhat` and `archlinux`

13-14: Missing comma after introductory clause

LanguageTool points out a minor punctuation nit:

-Locally the package can be generated by executing just commands:
+Locally, the package can be generated by executing just commands:
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97803a2 and 9730276.

📒 Files selected for processing (2)
  • deploy/nfpm/README.md (1 hunks)
  • deploy/nfpm/test-package-tool.sh (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6630
File: crypto/packet/src/por.rs:84-84
Timestamp: 2024-11-13T17:56:37.536Z
Learning: In PR #6630, the changes include the removal of ticket validation from the last hop and fixes for Index Offset handling as specified in the PR objectives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
deploy/nfpm/test-package-tool.sh (10)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:0-0
Timestamp: 2024-11-26T17:47:21.777Z
Learning: In `.github/workflows/build-binaries.yaml`, when writing shell scripts in GitHub Actions workflows, the user prefers to set environment variables individually rather than grouping them together.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.666Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6511
File: tests/test_integration.py:204-225
Timestamp: 2024-10-09T06:16:18.170Z
Learning: In test code, it's acceptable to use sensitive environment variables like `PRIVATE_KEY` and `IDENTITY_PASSWORD` without additional security measures, as they are testing values.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6511
File: tests/test_integration.py:204-225
Timestamp: 2024-09-30T22:09:43.172Z
Learning: In test code, it's acceptable to use sensitive environment variables like `PRIVATE_KEY` and `IDENTITY_PASSWORD` without additional security measures, as they are testing values.
Learnt from: tolbrino
PR: hoprnet/hoprnet#7070
File: nix/testShell.nix:22-23
Timestamp: 2025-04-15T19:24:23.570Z
Learning: In the HOPR project, the `autoPatchelf` command from Nix can handle the case where the target directory (like ./.venv) doesn't exist, so no additional directory existence check is needed before running it.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
deploy/nfpm/README.md (8)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: tolbrino
PR: hoprnet/hoprnet#7070
File: nix/testShell.nix:22-23
Timestamp: 2025-04-15T19:24:23.570Z
Learning: In the HOPR project, the `autoPatchelf` command from Nix can handle the case where the target directory (like ./.venv) doesn't exist, so no additional directory existence check is needed before running it.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6651
File: nix/rust-package.nix:35-39
Timestamp: 2024-11-20T08:43:53.099Z
Learning: In the `nix/rust-package.nix` file, replacing hardcoded interpreter paths with `${stdenv.hostPlatform.platform.dynamicLinker}` doesn't work as intended, so hardcoded interpreter paths are necessary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
🪛 LanguageTool
deploy/nfpm/README.md

[uncategorized] ~12-~12: Possible missing comma found.
Context: ... ## Generate package ### Development Locally the package can be generated by executi...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (9)
  • GitHub Check: tests-unit-nightly
  • GitHub Check: Build Candidate Binaries (hoprd)
  • GitHub Check: tests-unit
  • GitHub Check: Build Candidate Binaries (hopli)
  • GitHub Check: Zizmor / Zizmor
  • GitHub Check: Lint / Lint
  • GitHub Check: Audit / Audit
  • GitHub Check: hoprd / docker
  • GitHub Check: hopli / docker

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
deploy/nfpm/README.md (2)

5-7: Fix typos and pluralisation in the feature-matrix list

operativa systemsoperating systems
readhatredhat (or the official “Red Hat”)
Architecture supported:Architectures supported:

-- Architecture supported: `x86_64` and `aarch64`
-- Supported operativa systems: `linux` and `darwin`
-- Supported linux distributions: `debian`, `readhat` and `archlinux`
+- Architectures supported: `x86_64` and `aarch64`
+- Supported operating systems: `linux` and `darwin`
+- Supported Linux distributions: `debian`, `redhat` and `archlinux`

13-14: Add a comma after the leading adverb

The sentence reads smoother (and satisfies the linter hint) with a comma after “Locally”.

-Locally the package can be generated by executing just commands:
+Locally, the package can be generated by executing `just` commands:
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9730276 and 1c8ff39.

📒 Files selected for processing (4)
  • .github/workflows/package.yaml (3 hunks)
  • deploy/nfpm/README.md (1 hunks)
  • deploy/nfpm/install-hoprd-package.sh (1 hunks)
  • deploy/nfpm/test-package-tool.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • .github/workflows/package.yaml
  • deploy/nfpm/install-hoprd-package.sh
  • deploy/nfpm/test-package-tool.sh
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6630
File: crypto/packet/src/por.rs:84-84
Timestamp: 2024-11-13T17:56:37.536Z
Learning: In PR #6630, the changes include the removal of ticket validation from the last hop and fixes for Index Offset handling as specified in the PR objectives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
deploy/nfpm/README.md (15)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: tolbrino
PR: hoprnet/hoprnet#7070
File: nix/testShell.nix:22-23
Timestamp: 2025-04-15T19:24:23.570Z
Learning: In the HOPR project, the `autoPatchelf` command from Nix can handle the case where the target directory (like ./.venv) doesn't exist, so no additional directory existence check is needed before running it.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6651
File: nix/rust-package.nix:35-39
Timestamp: 2024-11-20T08:43:53.099Z
Learning: In the `nix/rust-package.nix` file, replacing hardcoded interpreter paths with `${stdenv.hostPlatform.platform.dynamicLinker}` doesn't work as intended, so hardcoded interpreter paths are necessary.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6545
File: transport/p2p/src/swarm.rs:491-494
Timestamp: 2024-10-11T10:43:34.869Z
Learning: When reviewing revert pull requests in the `hoprnet/hoprnet` repository, avoid making code recommendations or suggestions.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
🪛 LanguageTool
deploy/nfpm/README.md

[uncategorized] ~12-~12: Possible missing comma found.
Context: ... ## Generate package ### Development Locally the package can be generated by executi...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (10)
  • GitHub Check: hoprd / docker
  • GitHub Check: hopli / docker
  • GitHub Check: tests-unit-nightly
  • GitHub Check: Build Candidate Binaries (hopli)
  • GitHub Check: Build Candidate Binaries (hoprd)
  • GitHub Check: tests-unit
  • GitHub Check: Lint / Lint
  • GitHub Check: Audit / Audit
  • GitHub Check: Zizmor / Zizmor
  • GitHub Check: Pre-commit / Pre-commit

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
README.md (2)

25-26: Minor ToC polishing for consistency
Both new bullets use title-case (“Red Hat”, “Archlinux”), while the existing Debian item is lowercase (“debian”). Consider normalising the casing (or placing them alphabetically) to keep the table of contents tidy.


148-151: Typos in explanatory comment
The sentence is missing words and has a typo (“addres”). It should read “You can get the Safe address and the Module address …”.

-# You can the Safe address and the Module addres from https://hub.hoprnet.org
+# You can get the Safe address and the Module address from https://hub.hoprnet.org
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0f006cb and 13357c5.

📒 Files selected for processing (3)
  • README.md (2 hunks)
  • deploy/nfpm/hoprd.initd (0 hunks)
  • justfile (1 hunks)
💤 Files with no reviewable changes (1)
  • deploy/nfpm/hoprd.initd
🚧 Files skipped from review as they are similar to previous changes (1)
  • justfile
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6630
File: crypto/packet/src/por.rs:84-84
Timestamp: 2024-11-13T17:56:37.536Z
Learning: In PR #6630, the changes include the removal of ticket validation from the last hop and fixes for Index Offset handling as specified in the PR objectives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
README.md (11)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.666Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
🪛 markdownlint-cli2 (0.17.2)
README.md

164-164: Bare URL used

(MD034, no-bare-urls)

⏰ Context from checks skipped due to timeout of 90000ms (5)
  • GitHub Check: tests-smart-contracts
  • GitHub Check: tests-unit-nightly
  • GitHub Check: hoprd / docker
  • GitHub Check: hopli / docker
  • GitHub Check: Lint / Lint

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
README.md (1)

179-181: Uninstall command still uses invalid pacman sub-command
The previous review already flagged this; the line is still unchanged.

-sudo pacman del hoprd
+sudo pacman -Rns hoprd

pacman del is not a valid operation and will fail. Replace it with -Rns (remove, include orphans & configs).

🧹 Nitpick comments (1)
README.md (1)

147-152: Fix grammar & typos in environment-setup comments

Two issues repeat in both the Red Hat and Arch Linux snippets:

  1. “You can the Safe address and the Module addres …” – missing verb and misspelled address.
  2. “addres” → “address”.
-# You can the Safe address and the Module addres from https://hub.hoprnet.org
+# You can get the Safe address and the Module address from https://hub.hoprnet.org

Please apply the same correction in both blocks to keep the installation docs professional and clear.

Also applies to: 169-173

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1f33da2 and aca980c.

📒 Files selected for processing (2)
  • README.md (2 hunks)
  • deploy/nfpm/install-hoprd-package.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • deploy/nfpm/install-hoprd-package.sh
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6630
File: crypto/packet/src/por.rs:84-84
Timestamp: 2024-11-13T17:56:37.536Z
Learning: In PR #6630, the changes include the removal of ticket validation from the last hop and fixes for Index Offset handling as specified in the PR objectives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
README.md (16)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.666Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6545
File: transport/p2p/src/swarm.rs:491-494
Timestamp: 2024-10-11T10:43:34.869Z
Learning: When reviewing revert pull requests in the `hoprnet/hoprnet` repository, avoid making code recommendations or suggestions.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
🪛 markdownlint-cli2 (0.17.2)
README.md

164-164: Bare URL used

(MD034, no-bare-urls)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (5)
deploy/nfpm/test-package-tool.sh (1)

60-62: Stale comment – automatic deletion was removed

The header still claims “Automatically delete the VM after 1 hour” but no code
implements this anymore. Update or drop the comment to avoid confusion.

README.md (1)

124-126: Minor grammar & linter nit

“on specific distribution” → “on a specific distribution”.
Also consider wrapping the bare URL in angle brackets or markdown link to satisfy MD034.

deploy/nfpm/README.md (3)

5-8: Typos in capability list

  • “operativa” → “operating”
  • “readhat” → “redhat”

These appear in user-visible documentation.


51-57: Wrong variable name: “addres”

Module addres is missing an “s”. Same typo appears in CentOS block above.


82-88: Spelling & clarity

“identifiy file” → “identity file”.

Also applies to: 103-109

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 62c632a and 9af0145.

📒 Files selected for processing (8)
  • .github/workflows/package.yaml (2 hunks)
  • README.md (2 hunks)
  • deploy/compose/prometheus/metricspusher.sh (1 hunks)
  • deploy/nfpm/README.md (1 hunks)
  • deploy/nfpm/install-hoprd-package.sh (1 hunks)
  • deploy/nfpm/test-package-tool.sh (1 hunks)
  • justfile (1 hunks)
  • scripts/notify-matrix.sh (0 hunks)
💤 Files with no reviewable changes (1)
  • scripts/notify-matrix.sh
✅ Files skipped from review due to trivial changes (1)
  • deploy/compose/prometheus/metricspusher.sh
🚧 Files skipped from review as they are similar to previous changes (3)
  • justfile
  • deploy/nfpm/install-hoprd-package.sh
  • .github/workflows/package.yaml
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6630
File: crypto/packet/src/por.rs:84-84
Timestamp: 2024-11-13T17:56:37.536Z
Learning: In PR #6630, the changes include the removal of ticket validation from the last hop and fixes for Index Offset handling as specified in the PR objectives.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6886
File: nix/rust-package.nix:84-84
Timestamp: 2025-02-25T00:35:33.437Z
Learning: When transitioning from vendored dependencies to a private proxy registry in Rust projects, GitHub Actions workflows need to be refactored to accommodate the new update strategy, particularly workflows handling dependency updates like renovate-cargo-update.yaml.
deploy/nfpm/test-package-tool.sh (21)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:0-0
Timestamp: 2024-11-26T17:47:21.777Z
Learning: In `.github/workflows/build-binaries.yaml`, when writing shell scripts in GitHub Actions workflows, the user prefers to set environment variables individually rather than grouping them together.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.666Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6511
File: tests/test_integration.py:204-225
Timestamp: 2024-10-09T06:16:18.170Z
Learning: In test code, it's acceptable to use sensitive environment variables like `PRIVATE_KEY` and `IDENTITY_PASSWORD` without additional security measures, as they are testing values.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6511
File: tests/test_integration.py:204-225
Timestamp: 2024-09-30T22:09:43.172Z
Learning: In test code, it's acceptable to use sensitive environment variables like `PRIVATE_KEY` and `IDENTITY_PASSWORD` without additional security measures, as they are testing values.
Learnt from: tolbrino
PR: hoprnet/hoprnet#7070
File: nix/testShell.nix:22-23
Timestamp: 2025-04-15T19:24:23.570Z
Learning: In the HOPR project, the `autoPatchelf` command from Nix can handle the case where the target directory (like ./.venv) doesn't exist, so no additional directory existence check is needed before running it.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6772
File: scripts/generate-python-sdk.sh:1-10
Timestamp: 2025-01-15T16:14:10.492Z
Learning: In shell scripts, make paths configurable by using environment variables with default values using parameter expansion (e.g., `${VAR:-default}`). This allows users to override the default behavior without modifying the script.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7280
File: .github/workflows/checks-pre-commit.yaml:30-36
Timestamp: 2025-07-01T13:09:08.718Z
Learning: In the hoprnet repository's GitHub Actions workflow architecture, ausias-armesto prefers to centralize input resolution and fallback logic in the main checks.yaml workflow, which then calls individual reusable workflows like checks-pre-commit.yaml. The individual workflows are designed to be called primarily through the main workflow rather than directly, so fallback values in the individual workflows may be considered redundant.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6545
File: transport/p2p/src/swarm.rs:491-494
Timestamp: 2024-10-11T10:43:34.869Z
Learning: When reviewing revert pull requests in the `hoprnet/hoprnet` repository, avoid making code recommendations or suggestions.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/build-dappnode.yaml:40-40
Timestamp: 2025-05-27T16:23:08.868Z
Learning: In the hoprnet repository's GitHub workflows, labels are passed from build.yaml to build-dappnode.yaml with a trailing comma using `format('{0},', join(github.event.pull_request.labels.*.name, ','))`. Therefore, the condition checks in build-dappnode.yaml correctly use `format('package:{0},', inputs.dappnode_repository)` with a trailing comma to match the exact label format and prevent false positives.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7231
File: flake.nix:599-608
Timestamp: 2025-06-11T13:34:45.385Z
Learning: The repository intentionally relies on Commitizen’s default configuration; absence of a `.cz.*` file or `[tool.commitizen]` section is expected and should not be flagged in future reviews.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6366
File: ethereum/contracts/contracts-addresses.json:0-0
Timestamp: 2024-07-11T10:39:11.293Z
Learning: The user has asked to add a Git pre-commit hook to the PR to prevent changes to the `contracts-addresses.json` file.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6366
File: ethereum/contracts/contracts-addresses.json:0-0
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The user has asked to add a Git pre-commit hook to the PR to prevent changes to the `contracts-addresses.json` file.
README.md (17)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: README.md:166-171
Timestamp: 2025-06-30T10:14:33.666Z
Learning: The maintainer ausias-armesto prefers to keep environment variable configuration steps directly within installation instructions rather than separating them into different sections, as demonstrated with the Alpine package manager installation section in the README.md.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6545
File: transport/p2p/src/swarm.rs:491-494
Timestamp: 2024-10-11T10:43:34.869Z
Learning: When reviewing revert pull requests in the `hoprnet/hoprnet` repository, avoid making code recommendations or suggestions.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#7142
File: README.md:154-157
Timestamp: 2025-05-22T21:00:05.773Z
Learning: The HOPR codebase follows a specific naming convention where CLI flags use camelCase (e.g., --noKeepLogs), Rust struct fields use snake_case (e.g., no_keep_logs), and environment variables use uppercase with underscores (e.g., HOPRD_INDEXER_DISABLE_KEEP_LOGS).
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6576
File: hoprd/rest-api/src/lib.rs:251-251
Timestamp: 2024-10-28T14:29:25.598Z
Learning: In the HOPRd project, the path `/api-docs2/openapi.json` is used instead of `/api-docs/openapi.json` to avoid conflicts.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6307
File: deploy/compose/.env.example:13-17
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The HOPR admin service functions as a proxy nginx service and does not require a high memory limit.
deploy/nfpm/README.md (18)
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:66-68
Timestamp: 2025-06-19T10:10:00.368Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), the `just package` command creates a single distribution package that includes all binaries (hoprd and hopli) for the target architecture. The workflow downloads both hoprd and hopli artifacts, extracts them to ./dist/bin, and nfpm packages both binaries together into one .deb, .rpm, or .apk file per target.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: .github/workflows/package.yaml:0-0
Timestamp: 2025-06-19T11:37:27.410Z
Learning: In the HOPR packaging workflow (.github/workflows/package.yaml), both hoprd and hopli binaries are downloaded and used together in a single package creation process. The `just package` command creates one distribution package (.deb, .rpm, or .apk) per target that contains both binaries, which is why the workflow only uploads one package per format rather than separate packages for each binary.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6576
File: hoprd/rest-api/src/lib.rs:251-251
Timestamp: 2024-10-28T14:29:25.598Z
Learning: In the HOPRd project, the path `/api-docs2/openapi.json` is used instead of `/api-docs/openapi.json` to avoid conflicts.
Learnt from: tolbrino
PR: hoprnet/hoprnet#7070
File: nix/testShell.nix:22-23
Timestamp: 2025-04-15T19:24:23.570Z
Learning: In the HOPR project, the `autoPatchelf` command from Nix can handle the case where the target directory (like ./.venv) doesn't exist, so no additional directory existence check is needed before running it.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6972
File: .github/workflows/audit-pr.yaml:25-32
Timestamp: 2025-04-02T11:36:56.281Z
Learning: For HOPR projects, auditing tools like cargo-audit should be managed through the Nix environment rather than installed separately to ensure consistency and reproducibility.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6651
File: nix/rust-package.nix:35-39
Timestamp: 2024-11-20T08:43:53.099Z
Learning: In the `nix/rust-package.nix` file, replacing hardcoded interpreter paths with `${stdenv.hostPlatform.platform.dynamicLinker}` doesn't work as intended, so hardcoded interpreter paths are necessary.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6545
File: transport/p2p/src/swarm.rs:491-494
Timestamp: 2024-10-11T10:43:34.869Z
Learning: When reviewing revert pull requests in the `hoprnet/hoprnet` repository, avoid making code recommendations or suggestions.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:34-43
Timestamp: 2025-06-30T08:33:20.991Z
Learning: In the hoprnet repository, the maintainer ausias-armesto prefers to add commit types to the semantic PR validation workflow incrementally as needed, rather than preemptively adding all possible types. This conservative approach keeps the workflow configuration lean.
Learnt from: mjadach-iv
PR: hoprnet/hoprnet#6663
File: deploy/compose/.env.sample:57-57
Timestamp: 2024-11-21T13:58:22.345Z
Learning: In code reviews for this project, focus comments on the changes made in the PR, and avoid discussing unrelated code.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7251
File: deploy/nfpm/install.sh:68-68
Timestamp: 2025-06-19T10:11:36.259Z
Learning: In the HOPR project, the user ausias-armesto prefers interactive installation prompts that give users full control over configuration rather than automated defaults, especially for initial versions of installation scripts.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#6681
File: .github/workflows/build-binaries.yaml:61-97
Timestamp: 2024-11-26T17:47:32.384Z
Learning: The code in the 'Set environment variables' step in `.github/workflows/build-binaries.yaml` is obsolete and should not be reviewed in future code reviews.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-10-09T06:16:18.170Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: NumberFour8
PR: hoprnet/hoprnet#6244
File: transport/protocol/src/ack/processor.rs:31-32
Timestamp: 2024-07-28T07:26:06.634Z
Learning: The GitHub issue to standardize the usage of `METRIC_TICKETS_COUNT` across the codebase was successfully created and can be tracked at https://github.com/hoprnet/hoprnet/issues/6245.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7277
File: .github/workflows/package.yaml:91-102
Timestamp: 2025-07-02T15:47:44.111Z
Learning: In the hoprnet repository packaging workflow (.github/workflows/package.yaml), the "Test Package centos" step correctly uses `just test-package rpm` because CentOS is Red Hat-based and uses RPM package format. Additionally, ArchLinux packages are built with a `.archlinux` file extension but uploaded as artifacts with `.pkg.tar.zst` naming convention - this is the intended design and not a mismatch.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6345
File: hopr-socks/hopr-socks-server/Cargo.toml:20-20
Timestamp: 2024-06-21T20:51:35.871Z
Learning: All code and packages in the `hoprnet` project should use the workspace level dependency of `reqwest`.
Learnt from: tolbrino
PR: hoprnet/hoprnet#6399
File: db/entity/Cargo.toml:4-4
Timestamp: 2024-10-21T14:58:45.665Z
Learning: In the HOPR project, crate versions are intentionally kept separate and do not need to be aligned across related packages.
Learnt from: Teebor-Choka
PR: hoprnet/hoprnet#6546
File: transport/p2p/src/lib.rs:224-228
Timestamp: 2024-10-11T13:09:01.392Z
Learning: In the HOPR project, basic libp2p transport configurations should be configurable via environment variables.
Learnt from: ausias-armesto
PR: hoprnet/hoprnet#7191
File: .github/workflows/open-pr.yaml:83-95
Timestamp: 2025-06-30T08:36:01.731Z
Learning: The self-hosted-hoprnet-small runners in the hoprnet repository have GitHub CLI (gh) pre-installed and available for use in workflows.
🪛 LanguageTool
README.md

[uncategorized] ~126-~126: You might be missing the article “a” here.
Context: ...t/hoprnet/releases/latest To install on specific distribution, see [detailed information...

(AI_EN_LECTOR_MISSING_DETERMINER_A)

deploy/nfpm/README.md

[uncategorized] ~68-~68: Possible missing comma found.
Context: ...o pacman del hoprd ``` ## Development Locally the package can be generated by executi...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 markdownlint-cli2 (0.17.2)
README.md

125-125: Bare URL used

(MD034, no-bare-urls)

deploy/nfpm/README.md

11-11: Bare URL used

(MD034, no-bare-urls)


27-27: Bare URL used

(MD034, no-bare-urls)


48-48: Bare URL used

(MD034, no-bare-urls)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: hopli / docker
  • GitHub Check: hoprd / docker
  • GitHub Check: tests-unit
  • GitHub Check: Build Candidate Binaries (hoprd)
  • GitHub Check: tests-unit-nightly
  • GitHub Check: Zizmor / Zizmor
  • GitHub Check: Lint / Lint

@ausias-armesto ausias-armesto merged commit 5ae8be0 into master Jul 3, 2025
31 of 33 checks passed
@ausias-armesto ausias-armesto deleted the ausias/alpine-packages branch July 3, 2025 10:32
@ausias-armesto ausias-armesto added the binary:x86_64-linux Build x86_64-linux binary label Jul 3, 2025
@ausias-armesto ausias-armesto added this to the 3.0.0 milestone Jul 4, 2025
@ausias-armesto ausias-armesto linked an issue Jul 23, 2025 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
binary:x86_64-linux Build x86_64-linux binary crate:hopr-lib dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create OS packages for publishing and distributing hoprnet
2 participants