Azure Devops介绍
在开发中的一个趋势就是尽量自动化。和人工方式相比,自动化的优势太多了:不易出错,可靠,可重复部署过程。
主要组成部分:
- Azure Boards:类似JIRA的项目管理工具
- Azure Pipelines:类似Github Actions的CI/CD工具
- Azure Repos:类似Github的代码库
- Azure Artifacts:类似Nexus的组件库
CI的四个重要组成部分:
- 源码控制系统
- 包的管理
- CI本身
- 自动化构建系统
Azure Pipelines
- 支持多种编程语言:Python,Java,Ruby,Go,PHP,C#等
- 可以部署到不同的环境中,包括Azure,AWS,GCP等,也包括On-premises
- 和Azure的众多服务无缝衔接:ACR, VM等
- 可以在不同的OS上构建:Windows, Mac, Linux
Azure Pipelines的组件:
- Agent
- Artifact
- Build
- CI
- CD
- Deployment Target
Azure Pipeline可以在YAML中定义,也可以使用GUI。其组成部分包括:
- Name
- Trigger
- Variables
- Job
- Pool
- Checkout
- Steps
Agent & Agent pool
Agent说白了就是一台虚拟机以及运行在虚拟机上的构建程序。Agent pool中有很多用于CI/CD的agent。在同一个组织内部,agent pool中的agent可以被共享。
Agent Pool中的角色包括:
- Reader
- Admin
- Service Account
可以定义private agent。
Agent又可以分为Microsoft hosted agent和Self hosted agent。
对于Microsoft hosted agent:
- 微软在Pipeline需要时自动创建一个VM来运行pipeline
- 这是使用Azure pipeline时默认/最简单的agent
- 在每次构建时都会创建一个“干净”的VM
- 在构建文件中必须自己安装依赖库
- VM的配置是有限制的(Standard_DS2_v2, 10G存储,No GPU)
对于Self hosted agent:
- 可以选择Azure VM或自己的虚拟机/PC
- 其优点就是能够将配置保存在自己的VM上,同时可以灵活的控制、管理依赖库
- 可以自己决定agent的硬件配置
关于构建时的trigger
- CI trigger: 当更新repo时自动运行CI
- Scheduled trigger:自动定时运行
- Pipeline trigger:当另一个pipeline运行时会触发当前的pipeline
- PR trigger(在branch policy中定义)
关于multiple builds
应用场景
- 在不同版本的Python下运行单元测试
- 在不同的OS下进行构建