问题描述
在与一位在微软堆栈上合作开展高端项目的同事交谈后,发现自己对微软世界中的DevOps了解太少,无法给出如何组织CI/CD方法的好例子。虽然我们的社区中有一些关于Team Foundation Server和PSBuildStack的提示,但官方文档并没有一目了然地展示所有内容。对于新手来说,这些托管服务的描述甚至更加不透明 – 它是像CloudBees/BlueMix这样的云构建环境吗?
所以,我的问题是:我如何描述一个成熟的工具链示例,使用已建立的DevOps术语,这些术语与特定的环境/工具无关 – 或者我们必须承认这种工程术语还不存在?
以下是我想要描述的示例:
- 源代码版本控制系统
- 构建代理
- 自动化和打包调度系统,用于封装构件组合逻辑
- 二进制存储库(不同类别的二进制文件:库、发行版、容器镜像)
- 不同环境的配置存储库
- 封装部署逻辑的软件包和配置分发系统
解决方案
请注意以下操作注意版本差异及修改前做好备份。
成熟工具链的示例
在描述CI/CD系统时,不应该根据使用的产品/工具来描述系统,而应该根据系统中每个步骤的目的来描述。例如,不要说“我有一个Jenkins服务器,它构建构件并将它们存储在Artifactory中,然后Puppet将构件部署到EC2。”而应该说“我们的构建服务器创建并存储我们的构件在一个构件存储库中。然后我们的配置管理软件检测到这些构件并将它们部署到我们的云基础设施。”你的同事可以通过这种描述找到微软提供的正确解决方案。
根据你的描述,以下是一个使用已建立的DevOps术语描述的成熟工具链示例:
- 源代码版本控制系统:用于管理和跟踪源代码的变更,例如Git或SVN。
- 构建代理:用于执行构建过程的服务器或代理,例如Jenkins或TeamCity。
- 自动化和打包调度系统:用于自动化构建、测试和打包过程的系统,例如Jenkins Pipeline或Azure DevOps Pipelines。
- 二进制存储库:用于存储构建生成的二进制文件的存储库,例如Artifactory或Nexus。
- 配置存储库:用于存储不同环境的配置文件的存储库,例如Git或Azure DevOps Repos。
- 软件包和配置分发系统:用于封装和分发应用程序和配置的系统,例如Docker或Kubernetes。
通过使用这些通用的术语描述,你的同事可以根据微软提供的解决方案来理解和应用这些概念。
请注意,这只是一个示例,实际的工具链可能因组织和项目的需求而有所不同。你的同事可以根据这些通用的术语来选择适合微软堆栈的解决方案。
正文完