工欲善其事,必先利其器——DevOps中如何管理工具包

  
     作为DevOps交付流水线的开发者,为支持CI/CD中各项任务的自动化,都需要依赖多种包管理工具来下载各种相关的工具,比如针对产生最终交付件的构建过程,就需要在构建流程的第一步,自动地把相关工具,如卷发,wget, Maven, Gradle, npm等等,下载到CI服务器。这些工具的下载,通常都需要依靠对应的公网服务器和包管理工具来支持。而这样通过公网来下载工具,有时会遇到稳定性的问题,也就是所谓的环境问题,导致工具下载失败,进而导致构建任务的失败,因此,我们需要引入新的技术来克服这些问题,保证工具包下载的稳定和可靠。      二、工具包管理的痛点——缺乏稳定性      通常,我们会使用各种各样的包管理工具来帮助我们下载和管理这些工具包,如Windows上的巧克力色,Mac/Linux上的自酿酒,还有npm,百胜,Debian,码头工人等等。可是,有时我们通过这些包管理工具来下载工具包时,会碰到意外的5 xx服务器错误。而更多的时候,通过这些包管理工具来下载会非常的慢。这些问题在我们使用自动化构建工具(如特拉维斯CI,詹金斯,Gitlab CI,等等)来实现持续集成CI的时候,会被成千上百倍地放大。一种解决办法就是在碰到这些环境问题时,通过手动运行构建的方式进行补救,当然,这只是指标不治本。同时,在网络访问有限制的时候,如很多金融企业都会采用的网络隔离,根本不可能去下载这些公网服务器上的工具包。      三,解决方案,使用JFrog Artifactory的远程仓库      JFrog Artifactory作为全语言制品仓库,其远程仓库可以作为公网服务器的本地代理和缓存。当我们通过其远程仓库来下载所需的工具包时,Artifactory首先检查在本地的缓存中是否已经存在。如果有,直接返回该工具包,如果没有,Artifactory将会代理到公网服务器去下载相应的工具包,并缓存到本地,以供后续的下载使用。      利用Artifactory的远程仓库作为下载前述工具包的代理和缓存,能够使得DevOps流程中的各个环节,如前面描述的持续集成流程,更加的迅速和稳定。在有网络隔离要求的环境中,如金融企业的研发/生产环境,Artifactory可以帮助技术人员建立自己的企业级单一可信源。      下面,我们将通过示例为大家一一展示,Artifactory的远程仓库是如何为不同种类的工具包提供服务的。      四、示例一,巧克力色      当使用乔科省为Windows系统下载Gradle的时候,我们经常会碰到类似下面这样的503错误,从而导致构建失败:         
     解决的方法:我们在Artifactory里定义一个Nuget类型的远程仓库,利用它作为通过乔科省包管理工具下载的来源。      第一步:配置Artifactory远程仓库      在Artifactory里创建一个Nuget类型的远程仓库,其主要参数如下:      ·仓库名:乔科省      ·Url:   https://chocolatey.org      第二步:安装乔科省包      ·用匿名安装的命令      乔科省安装& lt; package-name>- s & lt; artifactory-url>/api/nuget/乔科省      ·使用带用户认证的方式      乔科省安装& lt; package-name>- s & lt; artifactory-url>/api/nuget/乔科省      - u & lt; artifactory-user>- p & lt; artifactory-password>      五,示例二,家酿      和巧克力色类似,也可以用Artifactory来支持酿造的下载:      第一步:配置Artifactory远程仓库      在Artifactory里创建通用(通用)类型的远程仓库:      ·仓库名:自制程序      ·Url:   https://homebrew.bintray.com      第二步:设置“HOMEBREW_ARTIFACT_DOMAIN”环境变量      ·匿名访问:      设置HOMEBREW_ARTIFACT_DOMAIN=& lt; artifactory-url>/家酿      ·带用户认证的访问:      设置HOMEBREW_ARTIFACT_DOMAIN=& lt; artifactory-user>: & lt; artifactory-password> @/家酿      第三步:安装      之后再通过,酿造安装命令安装,就会访问Artifactory的本地缓存了。      六、示例三——百胜      本节将介绍如何利用Artifactory的远程仓库来使用Yum下载RPM包。      第一步:配置Artifactory远程仓库      在Artifactory里创建一个RPM类型的远程仓库:      ·仓库名:百胜      ·Url: http://mirror.centos.org/centos/      啊,例如:http://mirror.centos.org/centos/7.6.1810/os/x86_64      第二步:创建百胜的配置      创建下述文件:/etc/yum.repos.d/artifactory      ·匿名访问时,文件内容为:      [artifactory]在这里   name=artifactory      baseurl=https://

工欲善其事,必先利其器——DevOps中如何管理工具包