更新时间:2024-10-16 GMT+08:00

通过客户端上传私有组件至私有依赖库

客户端上传Maven组件

  • 使用客户端工具为Maven,请确保已安装JDK和Maven。
    1. 从私有依赖库页面下载settings.xml文件,将下载的配置文件直接替换或按提示修改maven的settings.xml文件。

    2. 使用以下命令进行客户端上传,命令示例如下:

      上传时需要到上传的pom文件所在目录下执行命令

      mvn deploy:deploy-file -DgroupId={groupId} -DartifactId={artifactId} -Dversion={version} -Dpackaging=jar -Dfile={file_path} -DpomFile={pom_path} -Durl={url} -DrepositoryId={repositoryId} -s {settings_path} -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
      • 参数说明
        • DgroupId :上传的groupId
        • DartifactId :上传的artifactId
        • Dversion :上传的版本version
        • Dpackaging :上传包的类型(jar,zip,war等)
        • Dfile :上传实体文件所在的路径
        • DpomFile : 上传实体pom文件所在的路径(Release版本请注意:如果没有该参数,系统会自动生成pom,pom有特殊要求的请指定该参数)
        • pom文件中的DgroupId ,DartifactId ,Dversion 要与外面的一致,否则报409。
        • DpomFile 和(DgroupId ,DartifactId ,Dversion) 可以二选一(即如果选择DgroupId ,DartifactId ,Dversion,则可以不用DpomFile)
        • Durl :上传文件到仓库的路径
        • DrepositoryId :这个是settings配置的用户名密码所对应的id,如下图所示:

  • 使用客户端工具为Gradle,请确保已安装JDK和Gradle。
    1. 从私有依赖库页面下载inti.gradle文件。

    2. 在本地项目下找到“build.gradle”文件,需要在gradle文件下添加以下命令,命令示例如下:
      uploadArchives {
          repositories {
              mavenDeployer {repository(url:"***") {
                      authentication(userName: "{repo_name}", password: "{repo_password}")
                  }
                  //构造项目的Pom文件
                  pom.project {
                      name = project.name
                      packaging = 'jar'
                      description = 'description'
                  }
              }
          }
      }
      • url:上传文件到仓库的路径,可在对应Maven私有依赖库界面,单击获取。
      • {repo_name}:从对应Maven仓库页面下载inti.gradle文件中获取username。
      • {repo_password}:从对应Maven仓库页面下载inti.gradle文件中获取password。
    3. 到本地项目所在目录下执行命令:
      gradle uploadArchives
    4. 返回对应的Maven仓库查看已上传的组件。

客户端上传npm组件

  • 使用客户端工具为npm,请确保已安装node.js(或io.js)和npm。

    1. 从私有依赖库页面下载“npmrc”文件,将下载的“npmrc”文件另存为“.npmrc”文件。

    2. 复制到用户目录下,路径为:Linux系统路径为:~/.npmrc(C:\Users\<UserName>\.npmrc)。

    3. 进入npm工程目录(package.json文件所在目录),打开package.json文件,将创建仓库时填写的路径信息添加到name字段对应的值中。

    4. 执行以下命令将npm组件上传到仓库:
    npm config set strict-ssl false
    npm publish

客户端上传PyPI组件

  • 使用客户端工具为python和twine,请确保已安装python和twine。

    1. 从私有依赖库页面下载“pypirc”文件,将下载的“pypirc”文件另存为“.pypirc”文件。

    2. 复制到用户目录下,Linux系统路径为:~/.pypirc (Windows系统路径为:C:\Users\<UserName>\.pypirc)。

    3. 进入python工程目录,执行以下命令将python工程打成whl包:
    python setup.py bdist_wheel
    4. 执行以下命令将文件上传到仓库:
    python -m twine upload -r pypi dist/*

    如果上传时报证书问题,请执行以下命令(Windows系统请用git bash执行)设置环境变量跳过证书校验:

    export CURL_CA_BUNDLE=""

    环境变量会因重新登录机器、切换用户、重新打开bash窗口等原因被清除,请在每次执行上传前添加环境变量。

客户端上传Go组件

使用客户端工具为go,请确保已安装golang1.13及以上版本,且工程为go module工程。

  • Go Modules打包方式简介及包上传。

    本文采用Go Modules打包方式完成Go组件的构建与上传。以下步骤中用到的username和password可以通过Go仓库的“操作指导”下载的配置文件中获取。

    打包命令主要包括以下几部分:

    1. 在工作目录中创建源文件夹。
      mkdir -p {module}@{version}
    2. 将代码源拷贝至源文件夹下。
      cp -rf . {module}@{version}
    3. 压缩组件zip包。
      zip -D -r [包名] [包根目录名称]
    4. 上传组件zip包与“go.mod”文件到私有依赖库中。
      curl -k -u {{username}}:{{password}} -X PUT {{repoUrl}}/{filePath} -T {{localFile}}

      根据打包的版本不同,组件目录结构有以下几种情况:

      • v2.0以下版本:目录结构与“go.mod”文件路径相同,无需附加特殊目录结构。
      • v2.0以上(包括v2.0)版本:
        • “go.mod”文件中第一行以“/vX”结尾:目录结构需要包含“/vX”。例如,版本为v2.0.1,目录需要增加“v2”。
        • “go.mod”文件中第一行不以“/vN”结尾:目录结构不变,上传文件名需要增加“+incompatible”。

        下面分别对不同的版本举例说明。

    v2.0以下版本打包

    以下图所示“go.mod”文件为例。

    1. 在工作目录中创建源文件夹。

      命令行中,参数“module”的值为“example.com/demo”,参数“version”自定义为1.0.0。因此命令如下:

      mkdir -p ~/example.com/demo@v1.0.0
    2. 将代码源拷贝至源文件夹下。

      参数值与上一步一致,命令行如下:

      cp -rf . ~/example.com/demo@v1.0.0/
    3. 压缩组件zip包。

      首先,使用以下命令,进入组件zip包所在根目录的上层目录。

      cd ~

      然后,使用zip命令将代码压缩成组件包。命令行中,“包根目录名称”为“example.com”“包名”自定义为“v1.0.0.zip”,因此命令如下:

      zip -D -r v1.0.0.zip  example.com/
    4. 上传组件zip包与“go.mod”文件到私有依赖库中。

      命令行中,参数“username”、“password”、“repoUrl”均可通过私有依赖库配置文件获取。

      • 对于zip包,参数“filePath”为“example.com/demo/@v/v1.0.0.zip”,“localFile”为“v1.0.0.zip”。
      • 对于“go.mod”文件,参数“filePath”为“example.com/demo/@v/v1.0.0.mod”,“localFile”为“example.com/demo@v1.0.0/go.mod”。

      因此命令如下(参数username、password、repoUrl请参照私有依赖库配置文件自行修改):

      curl -k -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/@v/v1.0.0.zip -T v1.0.0.zip
      curl -k -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/@v/v1.0.0.mod -T example.com/demo@v1.0.0/go.mod

  • v2.0以上版本打包,且“go.mod”文件中第一行以“/vX”结尾

    以下图所示“go.mod”文件为例。

    1. 在工作目录中创建源文件夹。

      命令行中,参数“module”的值为“example.com/demo/v2”,参数“version”自定义为“2.0.0”。因此命令如下:

      mkdir -p ~/example.com/demo/v2@v2.0.0
    2. 将代码源拷贝至源文件夹下。
      参数值与上一步一致,命令行如下:
      cp -rf . ~/example.com/demo/v2@v2.0.0/
    3. 压缩组件zip包。

      首先,使用以下命令,进入组件zip包所在根目录的上层目录。

      cd ~

      然后,使用zip命令将代码压缩成组件包。命令行中,“包根目录名称”为“example.com”“包名”自定义为“v2.0.0.zip”,因此命令如下:

      zip -D -r v2.0.0.zip  example.com/
    4. 上传组件zip包与“go.mod”文件到私有依赖库中。

      命令行中,参数“username”、“password”、“repoUrl”均可通过私有依赖库配置文件获取。

      • 对于zip包,参数“filePath”为“example.com/demo/v2/@v/v2.0.0.zip”,“localFile”为“v2.0.0.zip”。
      • 对于“go.mod”文件,参数“filePath”为“example.com/demo/v2/@v/v2.0.0.mod”,“localFile”为“example.com/demo/v2@v2.0.0/go.mod”。

      因此命令如下(参数username、password、repoUrl请参照私有依赖库配置文件自行修改):

      curl -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/v2/@v/v2.0.0.zip -T v2.0.0.zip
      curl -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/v2/@v/v2.0.0.mod -T example.com/demo/v2@v2.0.0/go.mod
  • v2.0以上版本打包,且“go.mod”文件中第一行不以“/vX”结尾

    以下图所示“go.mod”文件为例。

    1. 在工作目录中创建源文件夹。

      命令行中,参数“module”的值为“example.com/demo”,参数“version”自定义为“3.0.0”。因此命令如下:

      mkdir -p ~/example.com/demo@v3.0.0+incompatible
    2. 将代码源拷贝至源文件夹下。

      参数值与上一步一致,命令行如下:

      cp -rf . ~/example.com/demo@v3.0.0+incompatible/
    3. 压缩组件zip包。

      首先,使用以下命令,进入组件zip包所在根目录的上层目录。

      cd ~

      然后,使用zip命令将代码压缩成组件包。命令行中,“包根目录名称”为“example.com”“包名”自定义为“v3.0.0.zip”,因此命令如下:

      zip -D -r v3.0.0.zip  example.com/
    4. 上传组件zip包与“go.mod”文件到私有依赖库中。

      命令行中,参数“username”、“password”、“repoUrl”均可通过私有依赖库配置文件获取。

      • 对于zip包,参数“filePath”为“example.com/demo/@v/v3.0.0+incompatible.zip”,“localFile”为“v3.0.0.zip”。
      • 对于“go.mod”文件,参数“filePath”为“example.com/demo/@v/v3.0.0+incompatible.mod”,“localFile”为“example.com/demo@v3.0.0+incompatible/go.mod”。

      因此命令如下(参数username、password、repoUrl请参照私有依赖库配置文件自行修改):

      curl -k -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/@v/v3.0.0+incompatible.zip -T v3.0.0.zip
      curl -k -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/@v/v3.0.0+incompatible.mod -T example.com/demo@v3.0.0+incompatible/go.mod

客户端上传RPM组件

使用linux系统和yum工具,请确保使用linux系统,且已安装yum。

  1. 检查linux下是否安装yum工具。

    在linux主机中输入
    rpm -qa yum

    如出现如下内容 则证明机器已安装yum

  2. 登录制品仓库,进入Rpm私有依赖库。单击页面右侧“操作指导”。
  3. 在弹框中单击“下载配置文件”。
  4. 在Linux主机中执行以下命令,上传Rpm组件

    curl -k -u {{user}}:{{password}} -X PUT https://{{repoUrl}}/{{component}}/{{version}}/ -T {{localFile}}

    其中,“user”、“password”、“repoUrl”来源于上一步下载的配置文件中“rpm上传命令”部分。

    • user:位于curl -u与-X之间、“:”之前的字符串。
    • password:位于curl -u与-X之间、“:”之后的字符串。
    • repoUrl:“https://”与“/{{component}}”之间的字符串。

      “component”、“version”、“localFile”来源于待上传的Rpm组件。以组件“hello-0.17.2-54.x86_64.rpm”为例。

      • component:软件名称,即“hello”。
      • version:软件版本,即“0.17.2”。
      • localFile:Rpm组件,即“hello-0.17.2-54.x86_64.rpm”。

        完整的命令行如下图所示:

        命令执行成功,进入私有依赖库,可找到已上传的Rpm私有组件。

客户端上传Conan组件

Conan是C/C++的包管理器,它适用于所有操作系统(Windows,Linux,OSX,FreeBSD,Solaris等)。

前提条件:

  • 已安装Conan客户端。
  • 私有依赖库中已创建Conan仓库。
  1. 从私有依赖库页面选择对应的Conan仓库,单击右侧的“操作指导”,下载配置文件。

    用户可以将得到的配置文件替换本地的Conan配置(Linux路径为~/.conan/remotes.json,Windows路径为C:\Users\<UserName>\.conan\remotes.json)。

  2. 在使用配置页面复制并执行如下命令,将私有依赖库添加至本地Conan客户端中。

    conan remote add Conan {repository_url} 
    conan user {user_name} -p={repo_password} -r=Conan

    执行以下命令来查看远程仓库是否已经配置到Conan客户端中。

    conan remote list

  3. 上传所有软件包至远程仓库,示例中my_local_server为远程仓库,实际使用过程中您可以替换为自己的仓库。

    $ conan upload hello/0.1@demo/testing --all -r=my_local_server 

  4. 查看远程仓库中已上传的软件包。

    $ conan search hello/0.1@demo/testing -r=my_local_server

NuGet客户端上传组件

使用客户端工具为NuGet,请确保已安装NuGet。

  1. 从私有依赖库页面选择对应的NuGet仓库,单击“操作指导”,下载配置文件“NuGet.txt”

  2. 打开下载的配置文件,使用如下命令,进行源的添加。

    ##----------------------NuGet add source----------------------##
    nuget sources add -name {repo_name} -source {repo_url} -username {user_name} -password {repo_password}

  3. 使用如下命令进行包的上传,替换<PATH_TO_FILE>为要上传文件的路径,执行上传语句(若有配置源,-source后的参数可使用配置的源名称)。

    ##----------------------NuGet Download----------------------##
    nuget push <PATH_TO_FILE> -source <SOURCE_NAME>

dotnet客户端上传组件

使用客户端工具为dotnet,请确保已安装dotnet。

dotnet客户端需要添加信任服务器证书,才可以使用。

  • windows信任证书步骤:

    1.导出服务器证书。

    openssl s_client -connect {host}:443 -showcerts </dev/null 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' |openssl x509 -outform PEM >mycertfile.pem
    openssl x509 -outform der -in mycertfile.pem -out mycertfile.crt

    mycertfile.pem和mycertfile.crt即为下载的证书。

    2.windows需要使用powershell 添加证书信任。

    添加证书

    Import-Certificate -FilePath "mycertfile.crt" -CertStoreLocation cert:\CurrentUser\Root
  1. 从私有库页面选择对应的NuGet仓库,单击“操作指导”,下载配置文件“dotnet.txt”

  2. 打开配置文件,找到dotnet add source下的命令,进行源的添加。

    ##----------------------dotnet add source----------------------##
    dotnet nuget add source {repo_url} add -n {repo_name} -u {user_name} -p {repo_password}

  3. 找到dotnet upload下的语句,替换<PATH_TO_FILE>为要上传文件的路径,执行上传语句。

    ##----------------------dotnet upload----------------------##
    dotnet nuget push <PATH_TO_FILE> -s {repo_name}

客户端上传Docker组件

前提条件

  • 已安装Docker客户端。
  • 私有依赖库中已创建Docker仓库。
  • 在Docker客户端需要执行如下命令修改配置,忽略证书。
    vi /etc/docker/daemon.json
    {
      "insecure-registries": ["url"] 
    }

    {url}:仓库地址,如下图所示。

操作步骤:

  1. 从私有库页面选择对应的Docker仓库,单击“操作指导”
  2. 单击“下载配置文件”,下载配置文件“config.json”
  3. 获取已下线的配置文件中的{username}{password}
  4. 在本地客户端执行以下命令,登录Docker私有依赖库。

    docker login {url} -u ${username} -p ${password}

    url:仓库地址。

    username:3中获取的用户名。

    password:3中获取的密码。

  5. 在本地客户端执行以下命令,打包镜像。

    sudo docker tag ${image_name1}:${image_version1} {url}/${image_name2}:${image_version2}

    image_name1:本地镜像名称。

    image_version1:本地镜像版本号。

    url:仓库地址。

    image_name2:用户可以设置上传后的镜像名称,组件名称将显示在Docker私有依赖库组件列表中。

    image_version2:用户可以设置上传后的镜像版本。

  6. 在本地客户端执行以下命令,上传Docker组件至私有依赖库。

    sudo docker push {url}/${image_name}:${image_version}

    url:仓库地址。

    image_name:输入5中的“image_name2”

    image_version:输入5中的“image_version2”

  7. 在Docker私有依赖库中查看已上传的组件。

客户端上传Cocoapods组件

前提条件:

  • 已安装Ruby客户端与cocoapods-art插件。
  • 私有依赖库中已创建CocoaPods仓库。

通过“下载配置文件替换”上传CocoaPods组件至私有依赖库

  1. 从私有库页面选择对应的CocoaPods仓库,单击“操作指导”
  2. 选择“下载配置文件替换”,单击“下载配置文件”,下载配置文件“cocoapods.txt”
  3. 获取已下线的配置文件中的{username}{password}
  4. 在本地客户端执行以下命令,将本地CocoaPods软件包上传至对应的私有依赖库。

    curl -k -u "<USERNAME>:<PASSWORD>" -XPUT "{url}/<TARGET_FILE_PATH>/" -T <PATH_TO_FILE>/<FILE_NAME>

    USERNAME:3中获取的{username}

    PASSWORD:3中获取的{password}

    url:对应CocoaPods私有依赖库的仓库地址。

    TARGET_FILE_PATH:需要存放的私有依赖库文件夹名称。

    PATH_TO_FILE:需要上传组件的本地路径。

    FILE_NAME:设置组件上传至私有依赖库的名称。

  5. 在CocoaPods私有依赖库中查看已上传的组件。

通过“按照命令行配置”上传CocoaPods组件至私有依赖库

  1. 从私有库页面选择对应的CocoaPods仓库,单击“操作指导”
  2. 选择“按照命令行配置”
  3. 执行以下命令来确认已安装Rudy客户端。

    rudy -v

  4. 执行以下安装命令来安装cocoapods-art插件。

    sudo gem install cocoapods-art

  5. 执行以下命令将私有依赖库添加至您的CocoaPods客户端中。

    pod repo-art add <repo_name> "{url}"

    repo_name:设置本地客户端存放私有依赖库组件的文件夹名称。

    url:CocoaPods私有依赖库的仓库地址

  6. 在选择用途中,单击“发布”
  7. 执行以下命令将本地客户端组件上传至对应的CocoaPods私有依赖库。

    curl -k -u "<USERNAME>:<PASSWORD>" -XPUT "{url}/<TARGET_FILE_PATH>/" -T <PATH_TO_FILE>/<FILE_NAME>

    USERNAME:3中获取的{username}

    PASSWORD:3中获取的{password}

    url:对应CocoaPods私有依赖库的仓库地址。

    TARGET_FILE_PATH:需要存放的私有依赖库文件夹名称。

    PATH_TO_FILE:需要上传组件的本地路径。

    FILE_NAME:设置组件上传至私有依赖库的名称。

  8. 在CocoaPods私有依赖库中查看已上传的组件。