做为DevOps交付流水线的开发者,为支持CI/CD中各项任务的自动化,都须要依赖多种包管理工具来下载各类相关的工具,好比针对产生最终交付件的构建过程,就须要在构建流程的第一步,自动地把相关工具,如Curl、wget、Maven、Gradle、npm等等,下载到CI服务器。这些工具的下载,一般都须要依靠对应的公网服务器和包管理工具来支持。而这样经过公网来下载工具,有时会遇到稳定性的问题,也就是所谓的环境问题,致使工具下载失败,进而致使构建任务的失败。所以,咱们须要引入新的技术来克服这些问题,保证工具包下载的稳定和可靠。docker
一般,咱们会使用各类各样的包管理工具来帮助咱们下载和管理这些工具包,如Windows上的Chocolatey,Mac/Linux上的Homebrew,还有npm、Yum、Debian、Docker等等。但是,有时咱们经过这些包管理工具来下载工具包时,会碰到意外的5xx服务器错误。而更多的时候,经过这些包管理工具来下载会很是的慢。这些问题在咱们使用自动化构建工具(如Travis CI、Jenkins、Gitlab CI,等等)来实现持续集成CI的时候,会被成千上百倍地放大。一种解决办法就是在碰到这些环境问题时,经过手动运行构建的方式进行补救,固然,这只是指标不治本。同时,在网络访问有限制的时候,如不少金融企业都会采用的网络隔离,根本不可能去下载这些公网服务器上的工具包。npm
JFrog Artifactory做为全语言制品仓库,其远程仓库能够做为公网服务器的本地代理和缓存。当咱们经过其远程仓库来下载所需的工具包时,Artifactory首先检查在本地的缓存中是否已经存在。若是有,直接返回该工具包;若是没有,Artifactory将会代理到公网服务器去下载相应的工具包,并缓存到本地,以供后续的下载使用。
利用Artifactory的远程仓库做为下载前述工具包的代理和缓存,可以使得DevOps流程中的各个环节,如前面描述的持续集成流程,更加的迅速和稳定。在有网络隔离要求的环境中,如金融企业的研发/生产环境,Artifactory能够帮助技术人员创建本身的企业级单一可信源。
下面,咱们将经过示例为你们一一展现,Artifactory的远程仓库是如何为不一样种类的工具包提供服务的。centos
当使用Choco为Windows系统下载Gradle的时候,咱们常常会碰到相似下面这样的503错误,从而致使构建失败:api
解决的方法:咱们在Artifactory里定义一个Nuget类型的远程仓库,利用它做为经过Choco包管理工具下载的来源。
第一步:配置Artifactory远程仓库
在Artifactory里建立一个Nuget类型的远程仓库,其主要参数以下:
· 仓库名:choco
· Url:https://chocolatey.org
第二步:安装Choco包
· 用匿名安装的命令
choco install <package-name> -s <artifactory-url>/api/nuget/choco
· 使用带用户认证的方式
choco install <package-name> -s <artifactory-url>/api/nuget/choco
-u <artifactory-user> -p <artifactory-password>缓存
和Chocolatey相似,也能够用Artifactory来支持Brew的下载:
第一步:配置Artifactory远程仓库
在Artifactory里建立通用(Generic)类型的远程仓库:
· 仓库名:homebrew
· Url:https://homebrew.bintray.com
第二步:设置“HOMEBREW_ARTIFACT_DOMAIN”环境变量
· 匿名访问:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-url>/homebrew
· 带用户认证的访问:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-user>:<artifactory-password>@<artifactory-url>/homebrew
第三步:安装
以后再经过 brew install命令安装,就会访问Artifactory的本地缓存了。服务器
本节将介绍如何利用Artifactory的远程仓库来使用Yum下载RPM包。
第一步:配置Artifactory远程仓库
在Artifactory里建立一个RPM类型的远程仓库:
· 仓库名:yum
· Url:http://mirror.centos.org/centos/<version>/os/<architecture>;
o 例如:http://mirror.centos.org/centos/7.6.1810/os/x86_64
第二步:建立yum的配置
建立下述文件:/etc/yum.repos.d/artifactory
· 匿名访问时,文件内容为:
[artifactory]HERE name=artifactory
baseurl=https://<artifactory-url>/yum
enabled=1 gpgcheck=0
· 带用户认证时,文件内容为:
[artifactory] name=artifactorybr/>baseurl=https://<artifactory-user:<artifactory-password>@<artifactory-url>/yum
enabled=1 gpgcheck=0
以后正常使用yum命令就能够从Artifactory的本地缓存下载RPM包了。微信
本节将介绍如何利用Docker命令从Artifactory的远程仓库来下载Docker镜像。
第一步:配置Artifactory远程仓库
在Artifactory里建立Docker类型的远程仓库:
· 仓库名:docker
· Url:https://registry-1.docker.io/
第二步:登陆
用下述命令登陆Artifactory的Docker仓库:
Docker login <your docker domain>
其中<your docker domain>的写法能够参考Artifactory中docker仓库对应的”Set Me Up”显示的设置。
第三步,拉取镜像
执行下述命令,从Artifactory的缓存拉取Docker镜像:
docker pull <your docker domain>/<docker image>:<docker tag>
固然,针对Docker应用,你可使用JFrog提供的免费版镜像中心——JCR(JFrog Container Registry,https://jfrog.com/container-registry/),来管理本身的Docker镜像。网络
在DevOps流程当中,咱们须要下载不少工具包,来支持整个流程的自动化运转。然而。直接从外网下载这些工具包,常常会碰到环境问题,进而影响整个DevOps流程的效率和可靠性。
Artifactory经过其远程仓库的设置和全语言制品支持的能力,可以帮助咱们创建各类工具包的本地源,从而使得DevOps的流程更加迅速和稳定。本文还列出了几种典型类型工具包的配置方法。dom
更多精彩内容能够专一咱们的在线课堂
微信搜索公众号:jfrogchina 获取课程通知
ide