Artifactory,Chef和Chocolatey如何一起工作?

时间:2018-10-31 10:39:15

标签: chef artifactory devops chocolatey

我们正在实施CI / CD管道,并将TFS用作我们的代码存储库以及构建和发布工具。我有以下具体问题:

  1. 我们目前将在构建过程中所需的库和第三方工具存储在代码存储库中。我们想分析其他存储和访问第三方工具和库的方式。
    • Artifactory是将它们存储到其中的正确工具吗?据我了解,Artifactory仅应用于存储可以丢弃并重新创建的构建工件。
    • 或者正在使用Chocolatey更好的选择?据我了解,我们需要根据我们的第三方工具和库创建Chocolatey软件包。在哪里:
      • 这些软件包的来源,例如(.exe,.dll,.zip,.msi)通常驻留在哪里?
        • 在UNC文件位置吗?
        • 还是在Artifactory这样的二进制存储库中?
        • 使用二进制存储库来存储构建时依赖项是正确的方法吗?它需要永久地驻留在那里,每个新版本都将增加存储库的大小。
      • 巧克力包本身驻留在哪里?
        • 在UNC文件位置吗?
        • 还是在Artifactory这样的二进制存储库中?
        • 使用二进制存储库来存储构建时依赖项是正确的方法吗?它需要永久地驻留在那里,每个新版本都将增加存储库的大小。
  2. 如果我们将第三方工具和库存储在代码存储库之外
    • 我们需要使用Chef和Chocolatey访问它们吗?
    • 或者我们是否可以使用Chocolatey从TFS直接访问它们,而不必在构建过程中使用Chef?
  3. 我是否正确地认为,Che​​f主要用于在开始构建过程之前使用所需的软件和环境变量来设置构建环境?

1 个答案:

答案 0 :(得分:2)

让我看看能否为您分解一下。

  
      
  1. 我们当前将在构建过程中所需的库和第三方工具存储在代码存储库中。我们想分析其他存储和访问第三方工具和库的方式。

         
        
    • Artifactory是将它们存储到其中的正确工具吗?
    •   
  2.   

是的,Artifactory和其他软件包存储库服务器通常具有二进制/原始存储库,这将是一个不错的选择。将Artifactory视为放置生产使用工件的地方。因此,这些库,第三方工具,第三方软件,模块等都可以存储在Artifactory中的不同类型的存储库中。 Artifactory将成为企业级程序包存储库管理器,经过优化可做到这一点,处理高可用性等功能。您可以在此处存储,保护和部署二进制文件,程序包,软件等。可以是开发,测试,阶段和生产环境。

  
    
        
  • 据我所知,Artifactory仅应用于存储可以丢弃并重新创建的构建工件。
  •     
  

我认为这有点不对头-已经很近了。您可能会存储可能被丢弃并重新创建的构建工件,但您也可以在其中存储更多工件。以这种方式进行说明并不能真正使它真正做到。

  
      
  • 或者正在使用Chocolatey更好的选择?
  •   

这不是Artifactory的竞争选择。巧克力包装可以存储在NuGet类型存储库中的Artifactory(Pro)中。二进制文件可以是Chocolatestrong软件包的 IN ,也可以位于二进制/原始存储库中。

Artifactory是一个软件包存储库,其中Chocolatey是Windows的软件包管理器(软件管理和部署)。

  
    

据我了解,我们需要从我们的第三方工具和库中创建Chocolatey软件包。在哪里:     这些软件包的来源,例如(.exe,.dll,.zip,.msi)通常驻留在哪里?

         
        
  • 在UNC文件位置吗?
  •     
  • 还是在Artifactory这样的二进制存储库中?
  •     
  • 使用二进制存储库来存储构建时依赖项是正确的方法吗?
  •     
  

您忘记了最常用和推荐的方法:

  • 在包装本身中

在Chocolatey包本身中,最推荐保留包代表的二进制文件的地方。这是最确定和可靠的包装方法。

问题是您可能正在查看社区软件包存储库作为包装示例-我们建议您不要这样做,因为它不代表包装,但可能占其中的5%。我们不建议您采用这种方法,因为它不是可靠的方法。

  
    
        
  • 它需要永久地驻留在那里,每个新版本都将增加存储库的大小。
  •     
  

这是事实,但是Artifactory确实有一种剔除方法(我相信),并且针对这些类型的场景进行了优化。我们在https://chocolatey.org/docs/how-to-host-feed#commercial-repository-system-requirements上针对不同的商业存储库解决方案提出了系统要求建议。

  
      
  • 巧克力包本身驻留在哪里?      
        
          
    • 在UNC文件位置吗?
    •     
      
  •   

他们绝对可以,但是请牢记权限如何与文件共享和Windows权限一起使用-https://chocolatey.org/docs/how-to-host-feed#local-folder-permissions

  
    
        
  • 还是在Artifactory这样的二进制存储库中?
  •     
  

否,那将是Artifactory Pro中可用的NuGet OData存储库。是的,NuGet Artifactory存储库将是一个好地方,并且可以针对不同的环境,权限等使用多个存储库。无论哪种情况对您的环境有意义。

  
    
        
  • 使用二进制存储库来存储构建时依赖项是正确的方法吗?它需要永久地驻留在那里,每个新版本都将增加存储库的大小。
  •     
  

我认为这是在其他地方处理的。

  
      
  1. 如果我们将第三方工具和库存储在代码存储库之外      
        
          
    • 我们需要使用Chef和Chocolatey访问它们吗?
    •     
    • 或者我们是否可以使用Chocolatey从TFS直接访问它们,而不必在构建过程中使用Chef?
    •     
      
  2.   

您通常都可以做。如果确实将3rd party工具放入软件部署程序包(也称为Chocolatey程序包)中,则将需要Chocolatey来管理部署。

  
      
  1. 我是否正确地认为,Che​​f主要用于在开始构建过程之前使用所需的软件和环境变量来设置构建环境?
  2.   

我会说您对主厨有误解-这是一种配置管理解决方案。它可以设置构建环境并使它们保持在所需状态,但这仅限于功能。 Chef(和其他配置管理器)用于为基础结构(基础结构作为代码)编写期望状态(期望状态),在可以使用持续集成(CI)进行部署之前,您可以检查源控制并测试整个基础结构更改)服务器(例如Jenkins,TeamCity,TFS)(这样做会测试您的基础架构,测试驱动的基础设施等)等。对于开发人员来说,这有点直观,但对于公司运营方面的人们来说,则是全新的将这些开发实践付诸实践。我称其为现代自动化,但有些人称这类转变为DevOps。

推荐

您可以使用Chef + Chocolatey + Artifactory解决方案来管理整个组织中的软件和机器配置,而不仅仅是开发环境。我认为您可能会从开发人员类型位置的参考框架中使用所有这些工具,因此只是在配置而不是长期管理部署,配置等的背景下考虑,操作/系统管理员可能是看着。这些工具当然都可以添加一些东西,但是它们都是互补的,而不是所有竞争解决方案。对于许多大型组织而言,将这些或类似组件放在适当的位置将产生可满足当今组织关键基础设施需求的体系结构。