通过客户端上传私有组件至私有依赖库
客户端上传Maven组件
- 使用客户端工具为Maven,请确保已安装JDK和Maven。
- 从私有依赖库页面下载settings.xml文件,将下载的配置文件直接替换或按提示修改maven的settings.xml文件。
- 使用以下命令进行客户端上传,命令示例如下:
上传时需要到上传的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。
- 从私有依赖库页面下载inti.gradle文件。
- 在本地项目下找到“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。
- 到本地项目所在目录下执行命令:
gradle uploadArchives
- 返回对应的Maven仓库查看已上传的组件。
客户端上传npm组件
客户端上传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仓库的“操作指导”下载的配置文件中获取。
打包命令主要包括以下几部分:
- 在工作目录中创建源文件夹。
mkdir -p {module}@{version}
- 将代码源拷贝至源文件夹下。
cp -rf . {module}@{version}
- 压缩组件zip包。
zip -D -r [包名] [包根目录名称]
- 上传组件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”文件为例。
- 在工作目录中创建源文件夹。
命令行中,参数“module”的值为“example.com/demo”,参数“version”自定义为1.0.0。因此命令如下:
mkdir -p ~/example.com/demo@v1.0.0
- 将代码源拷贝至源文件夹下。
cp -rf . ~/example.com/demo@v1.0.0/
- 压缩组件zip包。
cd ~
然后,使用zip命令将代码压缩成组件包。命令行中,“包根目录名称”为“example.com”“包名”自定义为“v1.0.0.zip”,因此命令如下:
zip -D -r v1.0.0.zip example.com/
- 上传组件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”文件为例。
- 在工作目录中创建源文件夹。
命令行中,参数“module”的值为“example.com/demo/v2”,参数“version”自定义为“2.0.0”。因此命令如下:
mkdir -p ~/example.com/demo/v2@v2.0.0
- 将代码源拷贝至源文件夹下。
- 压缩组件zip包。
cd ~
然后,使用zip命令将代码压缩成组件包。命令行中,“包根目录名称”为“example.com”“包名”自定义为“v2.0.0.zip”,因此命令如下:
zip -D -r v2.0.0.zip example.com/
- 上传组件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”文件为例。
- 在工作目录中创建源文件夹。
命令行中,参数“module”的值为“example.com/demo”,参数“version”自定义为“3.0.0”。因此命令如下:
mkdir -p ~/example.com/demo@v3.0.0+incompatible
- 将代码源拷贝至源文件夹下。
cp -rf . ~/example.com/demo@v3.0.0+incompatible/
- 压缩组件zip包。
cd ~
然后,使用zip命令将代码压缩成组件包。命令行中,“包根目录名称”为“example.com”“包名”自定义为“v3.0.0.zip”,因此命令如下:
zip -D -r v3.0.0.zip example.com/
- 上传组件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。
- 检查linux下是否安装yum工具。
在linux主机中输入
rpm -qa yum
如出现如下内容 则证明机器已安装yum
- 登录制品仓库,进入Rpm私有依赖库。单击页面右侧“操作指导”。
- 在弹框中单击“下载配置文件”。
- 在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”为例。
客户端上传Conan组件
Conan是C/C++的包管理器,它适用于所有操作系统(Windows,Linux,OSX,FreeBSD,Solaris等)。
前提条件:
- 已安装Conan客户端。
- 私有依赖库中已创建Conan仓库。
- 从私有依赖库页面选择对应的Conan仓库,单击右侧的“操作指导”,下载配置文件。
用户可以将得到的配置文件替换本地的Conan配置(Linux路径为~/.conan/remotes.json,Windows路径为C:\Users\<UserName>\.conan\remotes.json)。
- 在使用配置页面复制并执行如下命令,将私有依赖库添加至本地Conan客户端中。
conan remote add Conan {repository_url} conan user {user_name} -p={repo_password} -r=Conan
执行以下命令来查看远程仓库是否已经配置到Conan客户端中。
conan remote list
- 上传所有软件包至远程仓库,示例中my_local_server为远程仓库,实际使用过程中您可以替换为自己的仓库。
$ conan upload hello/0.1@demo/testing --all -r=my_local_server
- 查看远程仓库中已上传的软件包。
$ conan search hello/0.1@demo/testing -r=my_local_server
NuGet客户端上传组件
使用客户端工具为NuGet,请确保已安装NuGet。
- 从私有依赖库页面选择对应的NuGet仓库,单击“操作指导”,下载配置文件“NuGet.txt”。
- 打开下载的配置文件,使用如下命令,进行源的添加。
##----------------------NuGet add source----------------------## nuget sources add -name {repo_name} -source {repo_url} -username {user_name} -password {repo_password}
- 使用如下命令进行包的上传,替换<PATH_TO_FILE>为要上传文件的路径,执行上传语句(若有配置源,-source后的参数可使用配置的源名称)。
##----------------------NuGet Download----------------------## nuget push <PATH_TO_FILE> -source <SOURCE_NAME>
dotnet客户端上传组件
使用客户端工具为dotnet,请确保已安装dotnet。
dotnet客户端需要添加信任服务器证书,才可以使用。
- windows信任证书步骤:
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
- 从私有库页面选择对应的NuGet仓库,单击“操作指导”,下载配置文件“dotnet.txt”。
- 打开配置文件,找到dotnet add source下的命令,进行源的添加。
##----------------------dotnet add source----------------------## dotnet nuget add source {repo_url} add -n {repo_name} -u {user_name} -p {repo_password}
- 找到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}:仓库地址,如下图所示。
操作步骤:
- 从私有库页面选择对应的Docker仓库,单击“操作指导”。
- 单击“下载配置文件”,下载配置文件“config.json”。
- 获取已下线的配置文件中的{username}、{password}。
- 在本地客户端执行以下命令,登录Docker私有依赖库。
docker login {url} -u ${username} -p ${password}
url:仓库地址。
username:3中获取的用户名。
password:3中获取的密码。
- 在本地客户端执行以下命令,打包镜像。
sudo docker tag ${image_name1}:${image_version1} {url}/${image_name2}:${image_version2}
image_name1:本地镜像名称。
image_version1:本地镜像版本号。
url:仓库地址。
image_name2:用户可以设置上传后的镜像名称,组件名称将显示在Docker私有依赖库组件列表中。
image_version2:用户可以设置上传后的镜像版本。
- 在本地客户端执行以下命令,上传Docker组件至私有依赖库。
sudo docker push {url}/${image_name}:${image_version}
url:仓库地址。
image_name:输入5中的“image_name2”。
image_version:输入5中的“image_version2”。
- 在Docker私有依赖库中查看已上传的组件。
客户端上传Cocoapods组件
前提条件:
- 已安装Ruby客户端与cocoapods-art插件。
- 私有依赖库中已创建CocoaPods仓库。
通过“下载配置文件替换”上传CocoaPods组件至私有依赖库:
- 从私有库页面选择对应的CocoaPods仓库,单击“操作指导”。
- 选择“下载配置文件替换”,单击“下载配置文件”,下载配置文件“cocoapods.txt”。
- 获取已下线的配置文件中的{username}、{password}。
- 在本地客户端执行以下命令,将本地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:设置组件上传至私有依赖库的名称。
- 在CocoaPods私有依赖库中查看已上传的组件。
通过“按照命令行配置”上传CocoaPods组件至私有依赖库:
- 从私有库页面选择对应的CocoaPods仓库,单击“操作指导”。
- 选择“按照命令行配置”。
- 执行以下命令来确认已安装Rudy客户端。
rudy -v
- 执行以下安装命令来安装cocoapods-art插件。
sudo gem install cocoapods-art
- 执行以下命令将私有依赖库添加至您的CocoaPods客户端中。
pod repo-art add <repo_name> "{url}"
repo_name:设置本地客户端存放私有依赖库组件的文件夹名称。
url:CocoaPods私有依赖库的仓库地址
- 在选择用途中,单击“发布”。
- 执行以下命令将本地客户端组件上传至对应的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:设置组件上传至私有依赖库的名称。
- 在CocoaPods私有依赖库中查看已上传的组件。