云服务器内容精选

  • Go Modules打包方式简介 本文采用Go Modules打包方式完成Go组件的构建与上传。 打包命令主要包括以下几部分: 在工作目录中创建源文件夹。 mkdir -p {module}@{version} 将代码源拷贝至源文件夹下。 cp -rf . {module}@{version} 压缩组件zip包。 zip -D -r [包名] [包根目录名称] 上传组件zip包与“go.mod”文件到私有依赖库中。 curl -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包。 首先,使用以下命令,进入组件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 -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/@v/v1.0.0.zip -T v1.0.0.zip curl -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 将代码源拷贝至源文件夹下。 参数值与上一步一致,命令行如下: cp -rf . ~/example.com/demo/v2@v2.0.0/ 压缩组件zip包。 首先,使用以下命令,进入组件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包。 首先,使用以下命令,进入组件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 -u {{username}}:{{password}} -X PUT {{repoUrl}}/example.com/demo/@v/v3.0.0+incompatible.zip -T v3.0.0.zip curl -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
  • 发布私有组件到Go私有依赖库 下载私有依赖库配置文件。 登录制品仓库,选择私有依赖库,进入Go私有依赖库。单击页面右侧“操作指导”。 在弹框中单击“下载配置指导文件”。 配置代码仓库。 进入 代码托管服务 。创建Go语言代码仓库(操作步骤请参考创建云端仓库)。本文中使用仓库模板“Go Web Demo”创建代码仓库。 准备“go.mod”文件,并上传至代码仓库的根目录中。本文中使用的“go.mod”文件如下所示: 配置并执行编译构建任务。 在代码仓库中,单击页面右上角“设置构建”,页面跳转至“新建编译构建任务”页面。 在页面中选择“空白构建模板”,单击“下一步”。 添加步骤“Go语言构建”。 编辑步骤“Go语言构建”。 工具版本按照实际选择,本文中选择“go-1.13.1”。 删除已有命令行,打开在步骤1中下载的配置文件,将文件中的“LINUX下配置go环境变量命令”复制到命令框中。 将配置文件中go上传命令代码段复制到命令框中,并参考Go Modules打包方式简介替换命令行中的参数信息(本文打包版本为“v1.0.0”)。 单击“新建并执行”,执行构建任务。 待页面提示“构建成功”时,进入私有依赖库,可找到通过构建任务上传的Go私有组件。
  • 发布私有组件到NPM私有依赖库 下载私有依赖库配置文件。 登录制品仓库,选择私有依赖库,进入NPM私有依赖库。单击页面右侧“设置仓库”,记录仓库的路径。 单击“取消”返回私有依赖库页面,单击页面右侧“操作指导”。 在弹框中单击“下载配置文件”。 在本地将下载的“npmrc”文件另存为“.npmrc”文件。 配置代码仓库。 进入代码托管服务,创建Node.js代码仓库(操作步骤请参考创建云端仓库)。本文使用模板“nodejs Webpack Demo”创建代码仓库。 进入代码仓库,将“.npmrc”文件上传至代码仓库的根目录中。 在代码仓库中找到“package.json”文件并打开,将在“编辑私有依赖库”页面中记录的路径信息添加到name字段对应的值中。 实际操作中,若出现name字段的值固定且不便修改的情况,则可以在“编辑私有依赖库”页面将该值配置到“添加路径”字段中。 配置并执行编译构建任务。 在代码仓库中,单击页面右上角“设置构建”,页面跳转至“新建编译构建任务”页面。 在页面中选择“空白构建模板”,单击“下一步”。 添加步骤“Npm构建”。 编辑步骤“Npm构建”。 工具版本按照实际选择,本文中选择“nodejs12.7.0”。 删除已有命令行,输入以下命令: export PATH=$PATH:/root/.npm-global/bin npm config set strict-ssl false npm publish 单击“新建并执行”,启动构建任务执行。 待任务执行成功时,进入私有依赖库,可找到通过构建任务上传的Npm私有组件。
  • 从NPM私有依赖库获取依赖包 以发布私有组件到NPM私有依赖库中发布的Npm私有组件为例,介绍如何从Npm私有依赖库中获取依赖包。 配置代码仓库。 进入代码托管服务,创建Node.js代码仓库(操作步骤请参考创建云端仓库)。本文使用模板“nodejs Webpack Demo”创建代码仓库。 参考发布私有组件到NPM私有依赖库,获取“.npmrc”文件并上传至需要使用Npm依赖包的代码仓库根目录中。 在代码仓库中找到“package.json”文件并打开,将依赖包配置到dependencies字段中,本文中配置的值为: "@test/vue-demo": "^1.0.0" 配置并执行编译构建任务。 在代码仓库中,单击页面右上角“设置构建”,页面跳转至“新建编译构建任务”页面。 在页面中选择“空白构建模板”,单击“下一步”。 添加步骤“Npm构建”。 编辑步骤“Npm构建”。 工具版本按照实际选择,本文中选择“nodejs12.7.0”。 删除已有命令行,输入以下命令: export PATH=$PATH:/root/.npm-global/bin npm config set strict-ssl false npm install --verbose 单击“新建并执行”,启动构建任务执行。 待任务执行成功时,查看构建任务详情,在日志中找到类似如下内容,说明编译构建任务从私有依赖库完成了依赖包下载并构建成功。
  • NPM命令简介 在编译构建任务命令行中,还可以配置如下Npm命令,以完成其它功能: 删除私有依赖库中已存在的私有组件 npm unpublish @socpe/packageName@version 获取标签列表 npm dist-tag list @scope/packageName 新增标签 npm dist-tag add @scope/packageName@version tagName --registry registryUrl --verbose 删除标签 npm dist-tag rm @scope/packageName@version tagName --registry registryUrl --verbose 命令行参数说明: scope:私有依赖库路径,查看方法请参考发布私有组件到NPM私有依赖库。 packageName:“package.json”文件中,name字段中scope之后的部分。 version:“package.json”文件中,version字段对应的值。 registryUrl:私有库配置文件中的对应scope的私有库地址url。 tagName:标签名称。 以发布私有组件到NPM私有依赖库发布的私有组件为例: scope对应的值为“test”。 packageName对应的值为“vue-demo”。 version对应的值为“1.0.0”。 因此,删除此组件的命令应为: npm unpublish @test/vue-demo@1.0.0
  • 背景信息 NPM(Node Package Manager)是一个JavaScript包管理工具,NPM组件包即NPM管理的对象,而NPM私有依赖库就是管理和存储NPM组件包的一个私有仓库。 私有依赖库管理各种开发语言对应的私有组件包(开发者通俗称之为私服)。由于不同的开发语言组件通常有不同的归档格式要求,私有依赖库目的就在于管理私有开发语言组件并在企业或团队内共享给其他开发者开发使用。 本文档介绍如何通过编译构建任务发布私有组件到Npm私有依赖库、如何从Npm私有依赖库获取依赖包完成编译构建任务。
  • 步骤一:获取私有依赖库地址与配置 获取私有依赖库地址。 进入私有依赖库,选择“仓库视图”,并在左侧边栏中选择目标Maven私有依赖库。 单击仓库名称,右侧页面中仓库的“概览”页签中详细信息显示“仓库地址”。单击即可复制仓库地址。 图2 获取私有依赖库地址 获取私有依赖库配置。 单击页面右上方“操作指导”。 在“操作指导”对话框中单击“下载配置文件”,下载配置文件settings.xml至本地。 图3 下载配置文件 在本地打开配置文件settings.xml,在文件中搜索并找到如下红框中的用户名与密码。
  • 步骤二:配置迁移工具 返回私有依赖库,单击页面右侧并在下拉列表选择“下载迁移工具”。 图4 下载迁移工具 将迁移工具MigrateTool.rar包下载到本地,并执行以下命令,将MigrateTool.rar包解压并进入解压后的目录中。 unrar x MigrateTool.rar cd MigrateTool/ 用记事本打开MigrateTool.rar包解压后目录中的application.yaml文件,配置表1所示参数。 表1 配置迁移工具参数 参数名称 参数说明 package_type JFrog源仓库类型,配置为“maven”。 repo_type JFrog源仓库类型,配置为“jfrog”。 domain JFrog源仓库地址,例如“http://本地JFrog仓库IP:本地JFrog仓库端口/artifactory”。 repo 需要迁移的JFrog源仓库名称,根据实际名称填写。 user_name 登录JFrog源仓库的账号,根据实际情况填写。 password 登录JFrog源仓库的密码,根据实际情况填写。 target_repo_type 迁移后的目标仓库类型,配置为“artifactory”。 target_domain 迁移后的目标仓库地址,配置为图5中“/artgalaxy/”前半段的的信息。 target_repo 迁移后的目标仓库ID,配置为图5中“/artgalaxy/”后半段的的信息。 target_user_name 迁移后的目标仓库账号,配置为从2.c中获取的username。 target_password 迁移后的目标仓库密码,配置为从2.c中获取的password。 图5 迁移后的目标仓库详细信息
  • 在Maven私有依赖库的版本视图中查看归档的组件 进入目标私有依赖库,找到通过构建任务上传的Maven私有组件。 参考上述步骤,在代码仓库中设置组件版本,可将多个版本组件归档至私有依赖库。 单击“版本视图”。 在包列表中,可以查看从编译构建中获取软件包的版本数和最新版本。 单击“包名”,页面将显示该软件包最新版本的概览信息。 选择“文件列表”页签,在列表中可以单击目标组件操作列中的,可将组件下载到本地。 用户在本地对组件修改并设置新的版本号后,在目标私有依赖库中,单击“上传组件”,可将最新版本的组件上传至私有依赖库。 版本视图中的包列表显示对应组件最新上传的版本并统计版本归档过的数量。
  • 通过编译构建发布Maven私有组件到私有依赖库 在代码仓库完成设置组件版本后,单击页面右上角“设置构建”,页面跳转至“新建编译构建任务”页面。 在页面中选择“空白构建模板”,单击“下一步”。 单击“点击添加构建步骤”。搜索并添加步骤“Maven构建”。 编辑步骤“Maven构建”。 工具版本按照实际选择,本文中选择“maven3.5.3-jdk8-open”。 找到以下命令行,删除命令行前的#。 #mvn deploy -Dmaven.test.skip=true -U -e -X -B 找到以下命令行,在命令行前添加#。 mvn package -Dmaven.test.skip=true -U -e -X -B 在“发布依赖包到CodeArts私有依赖库”一栏勾选“配置所有pom”,并在下拉列表中选择与已项目关联的Maven私有依赖库。 单击“新建并执行”,执行构建任务。
  • 背景信息 相对于开发过程中的“源代码”,制品仓库服务关注和管理开发产生的待部署的软件包。软件包通常是由源码编译构建或打包而成,其中涉及生命周期的元数据(如名称、大小等基本属性、代码库地址、代码分支信息、构建任务、构建者、构建时间)。在开发过程中,软件包会根据不同版本不断生成改进。 软件包及其属性的管理是发布过程管理的基础,也是软件开发过程中的重要资产,而能够及时查看软件包的版本记录也成为开发者面临的诉求。
  • 发布私有组件到RPM私有依赖库 登录制品仓库,选择私有依赖库,进入RPM私有依赖库。单击页面右侧“操作指导”。 在弹框中单击“下载配置文件”。 在Linux主机中执行以下命令,上传RPM组件。 curl -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私有组件。
  • 从Rpm私有依赖库获取依赖包 以发布私有组件到RPM私有依赖库中发布的Rpm私有组件为例,介绍如何从Rpm私有依赖库中获取依赖包。 参考发布私有组件到RPM私有依赖库,下载Rpm私有依赖库配置文件。 打开配置文件,将文件中所有“{{component}}”替换为上传Rpm文件时使用的“{{component}}”值(本文档中该值为“hello”),并删除“rpm上传命令”部分,保存文件。 将修改后的配置文件保存到Linux主机的“/etc/yum.repos.d/”目录中。 执行以下命令,下载Rpm组件。其中,hello为组件的“component”值,请根据实际情况修改。 yum install hello
  • 迁移PyPI组件 进入私有依赖库,在左侧边栏中选择目标PyPI私有依赖库。 单击仓库名称,页面中仓库的详细信息显示“仓库地址”,单击即可复制该地址。 单击页面右上方“操作指导”,在弹框中单击“下载配置文件”,将配置文件pypirc下载到本地。 在本地打开配置文件,在文件中搜索并找到用户名与密码。 单击页面右上方,单击“下载迁移工具”将迁移工具压缩包(脚本uploadArtifact2.py、配置文件artifact.conf)下载到本地。 配置artifact.conf。 [artifact] packageType = 组件类型,设置为pypi userInfo = username:password(步骤3中获取的用户名与密码) repoRelease = 私有依赖库地址(步骤2中获取的仓库地址) repoSnapshot = 保留为空 srcDir = 组件的目录路径,例如:C:\Users\xxxxxx\repository,用户自己指定 [nexus] nexusAddr=nexus地址 nexusPort=nexus端口 repoName=待迁移的nexus仓库名称 userName=nexus用户名 passwd=nexus密码 执行迁移脚本python uploadArtifact2.py。 进入私有库页面查看二进制包是否上传成功。
  • 迁移npm组件 进入私有依赖库,在左侧边栏中选择目标npm私有依赖库。 单击仓库名称,页面中仓库的详细信息显示“仓库地址”,单击即可复制该地址。 单击页面右上方“操作指导”,在弹框中单击“下载配置文件”,将npmrc文件下载到本地。 在本地打开配置文件,在文件中找到“_auth”字段的值并进行base64解码。 单击页面右上方,单击“下载迁移工具”将迁移工具压缩包(脚本uploadArtifact2.py、配置文件artifact.conf)下载到本地。 配置artifact.conf。 [artifact] packageType = 组件类型,设置为npm userInfo = npm仓库下的配置文件npmrc中通过base64 解密后的_auth字段的值(参考步骤3) repoRelease = 私有依赖库地址(步骤2中获取的仓库地址) repoSnapshot = 保留为空 srcDir = 组件的目录路径,例如:C:\Users\xxxxxx\repository,用户自己指定 [nexus] nexusAddr=nexus地址 nexusPort=nexus端口 repoName=待迁移的nexus仓库名称 userName=nexus用户名 passwd=nexus密码 检查对应npm仓是否配置了路径白名单。 请确认package.json中私有二进制包是否在白名单内,只有与白名单内匹配的二进制包才能上传成功;没有配置白名单,则package.json中私有二进制包都可以上传成功。 执行迁移脚本python uploadArtifact2.py。 进入对应的私有依赖库,查看组件包是否上传成功。