Azure Pipelines Terraform 任务项目教程
1. 项目的目录结构及介绍
azure-pipelines-tasks-terraform/
├── README.md
├── tasks/
│ └── TerraformCLI/
│ ├── task.json
│ ├── TerraformCLI.ps1
│ ├── TerraformCLI.sh
│ └── icon.png
├── tests/
│ └── TerraformCLITests/
│ ├── test.ps1
│ └── test.sh
└── vss-extension.json
- README.md: 项目说明文件,包含项目的基本介绍和使用指南。
- tasks/: 包含所有任务的实现文件。
- TerraformCLI/: Terraform CLI 任务的具体实现。
- task.json: 任务的配置文件,定义任务的输入和输出。
- TerraformCLI.ps1: PowerShell 脚本,用于在 Windows 平台上执行 Terraform 命令。
- TerraformCLI.sh: Shell 脚本,用于在 Linux 和 macOS 平台上执行 Terraform 命令。
- icon.png: 任务的图标。
- TerraformCLI/: Terraform CLI 任务的具体实现。
- tests/: 包含任务的测试文件。
- TerraformCLITests/: Terraform CLI 任务的测试脚本。
- test.ps1: PowerShell 测试脚本。
- test.sh: Shell 测试脚本。
- TerraformCLITests/: Terraform CLI 任务的测试脚本。
- vss-extension.json: Azure Pipelines 扩展的定义文件,包含扩展的元数据和依赖项。
2. 项目的启动文件介绍
项目的启动文件主要位于 tasks/TerraformCLI/
目录下:
- TerraformCLI.ps1: 用于在 Windows 平台上启动 Terraform CLI 任务的 PowerShell 脚本。
- TerraformCLI.sh: 用于在 Linux 和 macOS 平台上启动 Terraform CLI 任务的 Shell 脚本。
这两个脚本负责解析任务配置文件 task.json
中的输入参数,并执行相应的 Terraform 命令。
3. 项目的配置文件介绍
- task.json: 该文件定义了 Terraform CLI 任务的配置,包括任务的名称、描述、输入参数和输出参数。以下是部分示例内容:
{
"id": "terraform-cli",
"name": "Terraform CLI",
"friendlyName": "Terraform CLI",
"description": "Run Terraform CLI commands",
"helpMarkDown": "Run Terraform CLI commands",
"category": "Utility",
"author": "Jason Johnson",
"version": {
"Major": 1,
"Minor": 0,
"Patch": 0
},
"instanceNameFormat": "Terraform $(command)",
"inputs": [
{
"name": "command",
"type": "string",
"label": "Command",
"defaultValue": "version",
"required": true,
"helpMarkDown": "Terraform command to run"
},
{
"name": "environmentServiceName",
"type": "connectedService:AzureRM",
"label": "Azure Service Connection",
"required": false,
"helpMarkDown": "Azure service connection"
},
{
"name": "secureVarsFile",
"type": "secureFile",
"label": "Secure Variables File",
"required": false,
"helpMarkDown": "Secure variables file"
},
{
"name": "commandOptions",
"type": "string",
"label": "Command Options",
"required": false,
"helpMarkDown": "Additional options for the Terraform command"
}
],
"execution": {
"PowerShell": {
"target": "TerraformCLI.ps1"
},
"ShellScript": {
"target": "TerraformCLI.sh"
}
}
}
该配置文件详细定义了任务的各个输入参数,如 command
(要执行的 Terraform 命令)、environmentServiceName
(Azure 服务连接)、secureVarsFile
(安全变量文件)和 commandOptions
(命令选项)。
通过这些