CLI setup

[!NOTE|label:reference:]

  • windows

    # Command Prompt
    > powershell "Start-Process -Wait -Verb RunAs powershell '-NoProfile iwr https://releases.jfrog.io/artifactory/jfrog-cli/v2-jf/2.41.1/jfrog-cli-windows-amd64/jf.exe -OutFile $env:USERPROFILE\jf.exe'"
    
    # verify
    > %USERPROFILE%\jf.exe --help
    NAME:
       jf - See https://github.com/jfrog/jfrog-cli for usage instructions.
    
    USAGE:
       jf [global options] command [command options] [arguments...]
    ...
    
  • homebrew

    $ brew install jfrog-cli
    
  • centos

    # via curl
    $ curl -fL https://install-cli.jfrog.io | sh
    
    # or
    $ sudo bash -c "cat > /etc/yum.repos.d/jfrog-cli.repo" << EOF
    [jfrog-cli]
    name=jfrog-cli
    baseurl=https://releases.jfrog.io/artifactory/jfrog-rpms
    enabled=1
    EOF
    $ sudo rpm --import https://releases.jfrog.io/artifactory/jfrog-gpg-public/jfrog_public_gpg.key
    $ sudo yum install -y jfrog-cli-v2-jf
    
  • ubuntu

    [!NOTE|label:references:]

    # via curl
    $ curl -fL https://install-cli.jfrog.io | sh
    
    # via apt
    #                                                                                               dos2unix
    #                                                                                                   v
    $ curl -fsSL https://releases.jfrog.io/artifactory/jfrog-gpg-public/jfrog_public_gpg.key | tr -d '\015' | sudo tee /usr/share/keyrings/jfrog.asc >/dev/null
    $ echo "deb [signed-by=/usr/share/keyrings/jfrog.asc] https://releases.jfrog.io/artifactory/jfrog-debs xenial contrib" > /etc/apt/source.list.d/jfrog.list >/dev/null
    $ sudo apt update -y
    $ sudo apt install jfrog-cli-v2-jf -y
    
    deprecated for ubuntu 22.04
    # deprecated for ubuntu 22.04
    $ wget -qO - https://releases.jfrog.io/artifactory/jfrog-gpg-public/jfrog_public_gpg.key | sudo apt-key add -
    $ echo "deb https://releases.jfrog.io/artifactory/jfrog-debs xenial contrib" | sudo tee -a /etc/apt/sources.list
    $ sudo apt update
    $ sudo apt install -y jfrog-cli-v2-jf
    
  • docker

    # slim
    $ docker run releases-docker.jfrog.io/jfrog/jfrog-cli-v2-jf jf -v
    
    # full
    $ docker run releases-docker.jfrog.io/jfrog/jfrog-cli-full-v2-jf jf -v
    
  • npm

    $ npm install -g jfrog-cli-v2-jf && jf intro
    
older version
  • npm

    $ npm i -g jfrog-cli-go
    
  • homebrew

    $ brew install jfrog-cli-go
    
  • docker

    $ docker run docker.bintray.io/jfrog/jfrog-cli-go:latest jfrog <COMMAND>
    

completion

  • bash

    $ jf completion bash --install
    
  • zsh

    $ jf completion zsh --install
    
  • Oh My Zsh

    plugins=(git mvn npm sdk jfrog)
    
  • fish

    $ jf completion fish --install
    

Environment Variables

jf options

VARIABLE NAME DEFAULT SUPPORTED
JFROG_CLI_LOG_LEVEL INFO DEBUG, INFO, WARN, ERROR
JFROG_CLI_LOG_TIMESTAMP TIME TIME, DATE_AND_TIME, OFF
JFROG_CLI_HOME_DIR ~/.jfrog -
JFROG_CLI_TEMP_DIR - -
JFROG_CLI_PLUGINS_SERVER - -
JFROG_CLI_PLUGINS_REPO jfrog-cli-plugins -
JFROG_CLI_RELEASES_REPO - -
JFROG_CLI_SERVER_ID - -
CI false -

CLI

VARIABLE NAME DEFAULT
JFROG_CLI_MIN_CHECKSUM_DEPLOY_SIZE_KB 10
JFROG_CLI_RELEASES_REPO -
JFROG_CLI_DEPENDENCIES_DIR $JFROG_CLI_HOME_DIR/dependencies
JFROG_CLI_REPORT_USAGE true
JFROG_CLI_SERVER_ID -
JFROG_CLI_BUILD_NAME -
JFROG_CLI_BUILD_NUMBER -
JFROG_CLI_BUILD_PROJECT -
JFROG_CLI_BUILD_URL -
JFROG_CLI_ENV_EXCLUDE *password*;*secret*;*key*;*token*
JFROG_CLI_TRANSITIVE_DOWNLOAD_EXPERIMENTAL false

CLI

reference:

ABBREVIATION COMMANDS
atc access-token-create
bad build-add-dependencies
bag build-add-git
ba build-append
bc build-clean
bce build-collect-env
bdi build-discard
bdc build-docker-create
bpr build-promote
bp build-publish
bs build-scan
cp copy
cl curl
del delete
delp delete-props
dpr docker-promote
dpl docker-pull
dp docker-push
donet dotnet
dotnetc dotnet-config
dl download
glc git-lfs-clean
go go
- go-config
gp go-publish
- gradle
gradlec gradle-config
gau group-add-users
gc group-create
gdel group-delete
h help
mv move
mvn mvn
mvnc mvn-config
npmci npm-ci
npmc npm-config
npmi npm-install
npmp npm-publish
nuget nuget
nugetc nuget-config
ndt nuget-deps-tree
osb oc
ptc permission-target-create
ptdel permission-target-delete
ptt permission-target-template
ptu permission-target-update
p ping
pipc pip-config
pipi pip-install
ppl podman-pull
pp podman-push
rplc replication-create
rpldel replication-delete
rplt replication-template
rc repo-create
rdel repo-delete
rpt repo-template
ru repo-update
s search
sp set-props
- transfer-config
- transfer-config-merge
- transfer-files
- transfer-plugin-install
- transfer-settings
u upload
- user-create
uc users-create
udel users-delete
yarn yarn
yarnc yarn-config

configuration

  • via ssh

    $ jf c add --url=ssh://artifactory.example.com:1339 \
               --ssh-key-path=/Users/marslo/.ssh/id_rsa \
               sample
    
    $ jf c show sample
    Server ID:              sample
    JFrog Platform URL:     ssh://artifactory.example.com:1339/
    Artifactory URL:        ssh://artifactory.example.com:1339/
    SSH key file path:      /Users/marslo/.ssh/id_rsa
    Default:                true
    
  • via password/api key

    $ jf c add --serverId rt-api-key \
               --artifactory-url=https://artifactory.sample.com/artifactory \
               --user=marslo \
               --password=A***********************************************************************x \
               --insecure-tls \
               --interactive=false
    
    $ jfrog rt c sample --url=https://artifactory.example.com/artifactory --apikey=***********
    JFrog Distribution URL (Optional):
    For commands which don't use external tools or the JFrog Distribution service, JFrog CLI supports replacing the configured username and password/API key with automatically created access token that's refreshed hourly. Enable this setting? (y/n) [y]? n
    Is the Artifactory reverse proxy configured to accept a client certificate? (y/n) [n]? n
    
    $ jfrog rt c show
    Server ID:  sample
    Url:        https://artifactory.example.com/artifactory/
    API key:    ***************
    Default:    true
    
    • via username/password
      $ jfrog rt c sample --user=myaccount \
                          --url=https://artifactory.example.com/artifactory \
                          --password=mypassword
      JFrog Distribution URL (Optional):
      For commands which don't use external tools or the JFrog Distribution service, JFrog CLI supports replacing the configured username and password/API key with automatically created access token that's refreshed hourly. Enable this setting? (y/n) [y]? n
      Is the Artifactory reverse proxy configured to accept a client certificate? (y/n) [n]? n
      [Info] Encrypting password...
      
  • access token

    $ jf c add --serverId sample
               --artifactory-url=https://artifactory.sample.com/artifactory \
               --user=marslo \
               --access-token=c**************************************************************Q \
               --interactive=false \
               --insecure-tls
    
  • in docker

    $ docker run -it \
                 --rm \
                 -v $(PWD):/root docker.bintray.io/jfrog/jfrog-cli-go \
                 jfrog rt c prod \
                          --url=https://artifactory.example.com/artifactory \
                          --user=myaccount \
                          --password=mypassword
    

set default

$ jf rt use <SERVER_ID>

ping

  • check configuration or remote server

    $ jf rt p
    OK
    
    # or
    $ jfrog rt p --server-id=sample
    OK
    

discarding old builds from artifactory

  • clean build info and artifacts 30 days before

    $ jf use <sample>
    $ jfrog rt bdi --max-days=30 --delete-artifacts=true "my-job-build"
    
    $ jfrog rt use sample
    $ jfrog rt bdi --max-days=30 --delete-artifacts=true "my-job-build"
    
  • using cli via docker

    $ docker run \
             -it \
             --rm \
             -v $(PWD):/root docker.bintray.io/jfrog/jfrog-cli-go \
                       jfrog rt bdi --max-days=45 --delete-artifacts 'ci - buildinfo - name'
    

search with aql

[!NOTE|label:references:]

$ cat spec.json
{
  "files": [{
    "aql": {
      "items.find": {
        "repo": "my-repo",
        "type":"folder",
        "depth" : "1",
        "created": { "$before": "15d" }
      }
    }
  }]
}

$ jfrog rt s --spec spec.json
  • delete with aql search
    $ jfrog rt del --spec spec.json
    

delete docker images

#              registry name  image name    tag
#              +-----------+ +-----------+ +---+
$ jf rt delete docker-local/devops/ubuntu/4.0.0**
  docker-local/devops/ubuntu/4.0.0-py310-jammy-dind-v95-94d13a3db/
  docker-local/devops/ubuntu/4.0.0-py310-jammy-dind/
  docker-local/devops/ubuntu/4.0.0-py310-jammy/
Are you sure you want to delete the above paths? (y/n) [n]? y
{
  "status": "success",
  "totals": {
    "success": 3,
    "failure": 0
  }
}

# or remote all v4.0.0* tags via
$ jf rt delete docker-local/devops/*/4.0.0**
  docker-local/devops/clang/4.0.0-py310-jammy-dind-v95-94d13a3db/
  docker-local/devops/clang/4.0.0-py310-jammy-dind/
  docker-local/devops/clang/4.0.0-py310-jammy-v95-94d13a3db/
  docker-local/devops/clang/4.0.0-py310-jammy/
  docker-local/devops/doxygen/4.0.0-py310-jammy-dind-v95-94d13a3db/
  docker-local/devops/doxygen/4.0.0-py310-jammy-dind/
  docker-local/devops/doxygen/4.0.0-py310-jammy-v95-94d13a3db/
  docker-local/devops/doxygen/4.0.0-py310-jammy/
  docker-local/devops/jnlp/4.0.0-py310-jammy-dind-v95-94d13a3db/
  docker-local/devops/jnlp/4.0.0-py310-jammy-dind/
  docker-local/devops/jnlp/4.0.0-py310-jammy-v95-94d13a3db/
  docker-local/devops/jnlp/4.0.0-py310-jammy/
Are you sure you want to delete the above paths? (y/n) [n]?

deploy docker image via cli

[!NOTE|label:references:]

$ jf rt docker-promote hello-world default-docker-local stef-docker-local \
                       --source-tag=1.0.0 \
                       --target-docker-image=hello-world \
                       --target-tag=prod

npm

[!NOTE|label:references:]

$ cd path/to/project
$ jf npm-config --repo-deploy <LOCAL-REPO> --repo-resolve <REMOTE-REPO>

# i.e.:
$ jf npm-config --repo-deploy npmjs-local --repo-resolve npmjs-remote

# result
$ cat .jfrog/projects/npm.yaml
   1   version: 1
   2   type: npm
   3   resolver:
   4       repo: poc-npmjs-remote
   5       serverId: stg
   6   deployer:
   7       repo: poc-npmjs-local
   8       serverId: stg
  • using jf for npm

    [!NOTE|label:references:]

    $ jf npm --help
    
    Name:
      jf npm - Run npm command.
    
    Usage:
      jf npm <npm arguments> [command options]
    
    Arguments:
      ci                        Run npm ci.
      publish, p                Packs and deploys the npm package to the designated npm repository.
      install, i, isntall, add  Run npm install.
      help, h
    
    $ jf npm install
    
Copyright © marslo 2020-2024 all right reserved,powered by GitbookLast Modified: 2024-11-18 01:54:59

results matching ""

    No results matching ""