Skip to content

Debian package property parsing does not work when uploading with a spec file #3188

@jpode

Description

@jpode

Describe the bug

According to the Artifactory documentation, specifying Debian package properties is done by appending them to the target path when uploading the package. This works when done with inline arguments, but when the upload is done with a spec file that defines the target path, the properties are not parsed from the path and the path becomes the literal name of the package.

Current behavior

Uploading Debian package using a specfile:

$ jf rt upload --spec=specfile.json
15:02:02 [🟠Warn] You are using JFrog CLI version 2.81.0, however version 2.82.0 is available.
To install the latest version, visit: https://jfrog.com/getcli
To see the release notes, visit: https://github.com/jfrog/jfrog-cli/releases
To avoid this message, set the JFROG_CLI_AVOID_NEW_VERSION_WARNING variable to TRUE
15:02:02 [🔵Info] Log path: /home/jpode/.jfrog/logs/jfrog-cli.2025-10-29.15-02-02.288183.log
15:02:04 [🔵Info] These files were uploaded:

📦 debian-repo
└── 📁 pool
    └── 📄 my_package_2.0.1-dev-local_x64.deb;deb.distribution=bionic;deb.component=main;deb.architecture=all


{
  "status": "success",
  "totals": {
    "success": 1,
    "failure": 0
  }
}

$ cat /home/jpode/.jfrog/logs/jfrog-cli.2025-10-29.15-02-02.288183.log
[Info] [Thread 2] Uploading: packages/installers/my_package_2.0.1-dev-local_x64.deb

Resulting package in Artifactory:

Image

Reproduction steps

Run jf rt u with the following specfile:

{"files": [{"flat": "true",
            "pattern": "packages/installers/my_package_2.0.1-dev-local_x64.deb",
            "target": "debian-repo/pool/my_package_2.0.1-dev-local_x64.deb;deb.distribution=bionic;deb.component=main;deb.architecture=all"}]}

Expected behavior

The package to be uploaded with the name my_package_2.0.1-dev-local_x64.deb and Debian properties properly applied to the package view in Artifactory.

This can be seen when running the same package upload with the arguments in-lined instead of using the specfile:

$ jf rt u packages/installers/my_package_2.0.1-dev-local_x64.deb debian-repo/pool/my_package_2.0.1-dev-local_x64.deb;deb.distribution=bionic;deb.component=main;deb.architecture=all
15:17:12 [🔵Info] Log path: /home/jpode/.jfrog/logs/jfrog-cli.2025-10-29.15-17-12.290943.log
15:17:14 [🔵Info] These files were uploaded:

📦 debian-repo
└── 📁 pool
    └── 📄 my_package_2.0.1-dev-local_x64.deb


{
  "status": "success",
  "totals": {
    "success": 1,
    "failure": 0
  }
}

$ cat /home/jpode/.jfrog/logs/jfrog-cli.2025-10-29.15-17-12.290943.log
[Info] [Thread 0] Uploading: packages/installers/my_package_2.0.1-dev-local_x64.deb

The resulting package was uploaded with the correct name:

Image

JFrog CLI version

2.81.0

Operating system type and version

Ubuntu 22.04.5

JFrog Artifactory version

Enterprise Plus 7.111.10 rev 81110900

JFrog Xray version

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions