Use Conan with JFrog CLI

Run native Conan commands with Artifactory integration and optional build-info collection.

When to Use

Use jf conan to run Conan C/C++ package manager commands with Artifactory integration. This enables:

  • Resolving Conan packages from Artifactory's Conan repository
  • Publishing packages to Artifactory
  • Collecting build-info for C/C++ builds
📘

Package Alias (Ghost Frog)

Package Alias does not intercept conan commands. Supported tools are mvn, gradle, npm, yarn, pnpm, go, pip, pipenv, poetry, dotnet, nuget, docker, gem, and bundle. See Use JFrog CLI Package Alias for setup and the full tool list.

Prerequisites

  • Conan must be installed. Install via pip:

    pip install conan

    Verify with conan --version. For full installation options, see the Conan installation docs.

  • Conan remote configured to point to your Artifactory Conan repository:

    conan remote add artifactory https://<your-instance>.jfrog.io/artifactory/api/conan/<repo-name>
  • JFrog CLI configured with a server connection. See jf config add.

  • Authentication to Artifactory is required.

  • A Conan project directory containing a conanfile.py or conanfile.txt. The jf conan install command works with either file, while jf conan create requires a conanfile.py.


Build: jf conan

Run native Conan commands with Artifactory integration and optional build-info collection.

To run Conan with Artifactory integration:

  1. Install Conan, configure an Artifactory remote, and open a directory with a conanfile.py or conanfile.txt (see Prerequisites).
  2. Run jf conan with the Conan subcommand and arguments, adding --build-name and --build-number when you want build-info (see Build Examples).

Synopsis

jf conan <conan-arguments> [options]

Aliases: none

Arguments

ArgumentRequiredDescription
<conan-arguments>YesArguments and options for the Conan command (for example, install, create)

Build Options

FlagDefaultDescription
--build-nameBuild name for build-info. Requires --build-number.
--build-numberBuild number for build-info. Requires --build-name.
--moduleOptional module name for build-info. Requires --build-name and --build-number.
--projectJFrog Artifactory project key

Build Examples

📘

Note

Run these commands from a directory containing a conanfile.py or conanfile.txt. The . argument refers to the current directory where your Conan recipe lives.

View Help

jf conan --help

Install Dependencies with Build-Info

jf conan install . --build=missing --build-name=<build-name> --build-number=<build-number>

Where:

  • . is the path to the directory containing your conanfile.py or conanfile.txt
  • --build=missing builds packages from source if pre-built binaries are not available
  • <build-name> is a name for the build (for example, my-cpp-app)
  • <build-number> is a number or identifier for the build run (for example, 1)

For example:

jf conan install . --build=missing --build-name=my-cpp-app --build-number=1

On success, the output ends with:

Install finished successfully
[Info] Conan build info collected. Use 'jf rt bp my-cpp-app 1' to publish it.

Create a Package

This command requires a conanfile.py (a conanfile.txt is not sufficient for conan create).

jf conan create . --name=hello --version=1.0 --build-name=<build-name> --build-number=<build-number>

For example:

jf conan create . --name=hello --version=1.0 --build-name=my-cpp-app --build-number=1

On success, the output ends with:

hello/1.0: Package '<package-id>' created
[Info] Conan build info collected. Use 'jf rt bp my-cpp-app 1' to publish it.

Upload Packages to Artifactory

After creating a package, upload it to your Artifactory Conan repository:

jf conan upload "<pattern>" -c -r <remote-name> --build-name=<build-name> --build-number=<build-number>

For example:

jf conan upload "hello/1.0" -c -r artifactory --build-name=my-cpp-app --build-number=1

Where:

  • "hello/1.0" is the package reference pattern to upload (use "*" to upload all packages)
  • -c confirms the upload without prompting
  • -r artifactory specifies the remote name configured with conan remote add

Publish Build Info

After uploading, publish the collected build info to Artifactory:

jf rt build-publish <build-name> <build-number>

For example:

jf rt build-publish my-cpp-app 1
👍

Tip

jf rt bp is a shorthand alias for jf rt build-publish.


Important Notes

  • No separate config command: Unlike other build tools, Conan does not have a jf conan-config command. Configure Conan remotes to point to Artifactory using standard conan remote add.
  • Conan 2.x compatibility: The examples on this page use Conan 2.x syntax. Conan 1.x uses different flags (for example, --all for upload), which are not supported in Conan 2.x. Verify your version with conan --version and jf --version.
  • Build-info: Use --build-name and --build-number to track dependencies and artifacts. After running your Conan commands, publish the build info with jf rt build-publish <build-name> <build-number> (alias: jf rt bp).

CI/CD Example (GitHub Actions)

# .github/workflows/build.yml
steps:
  - uses: actions/checkout@v4
  - name: Setup JFrog CLI
    uses: jfrog/setup-jfrog-cli@v4
    env:
      JF_URL: ${{ vars.JF_URL }}
      JF_ACCESS_TOKEN: ${{ secrets.JF_ACCESS_TOKEN }}
  - name: Setup Conan
    run: |
      pip install conan
      conan remote add artifactory https://acme.jfrog.io/artifactory/api/conan/conan-local
  - name: Install dependencies
    run: jf conan install . --build=missing --build-name=my-cpp-app --build-number=${{ github.run_number }}
  - name: Upload packages
    run: jf conan upload "*" -c -r artifactory --build-name=my-cpp-app --build-number=${{ github.run_number }}
  - name: Publish build info
    run: jf rt build-publish my-cpp-app ${{ github.run_number }}

Troubleshooting

SymptomCauseFix
Conanfile not foundNo conanfile.py or conanfile.txt in the directory passed to the commandCreate a conanfile.py or conanfile.txt in your project directory, or pass the correct path instead of .
Conan cannot resolve from ArtifactoryConan remote not configuredRun conan remote add artifactory <artifactory-conan-url>
401 / 403 on uploadInvalid credentials or insufficient permissionsRe-run jf config add; verify conan remote credentials
unrecognized arguments: --allUsing Conan 1.x flags with Conan 2.xReplace --all with -c (confirm). See the Conan 2 migration guide.
Conan 2.x compatibility issuesCLI version and Conan version mismatchCheck conan --version and jf --version for compatibility
Build-info not collected--build-name and --build-number not passedAdd both flags to the Conan command
command not found: conanConan not installed or not on PATHInstall with pip install conan. If already installed, add the pip scripts directory to your PATH.

Enable debug logging: export JFROG_CLI_LOG_LEVEL=DEBUG


Related Topics