-
Notifications
You must be signed in to change notification settings - Fork 81
/
azure-pipelines.yml
117 lines (107 loc) · 4.12 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#Multi-stage YAML pipeline demo.
name: $(BuildDefinitionName).$(DayOfYear)$(Rev:.r)
schedules:
- cron: "45 6 * * 4"
branches:
include:
- master
displayName: Weekly Thursday 6h45 am UTC build
always: true
variables:
- name: terraform_version
value: "0.12.13"
- name: vmImageName
value: "ubuntu-latest"
- name: backend_main_secret_file_id1 # secret id located in your Azure DevOps library, file used by the following cmdlet Terraform init, plan, apply and destroy
value: "backend-main-jdld-1.json"
- name: artifact_name
value: "AzureDevops-Introduction"
resources:
repositories:
- repository: Yaml_Templates # identifier (A-Z, a-z, 0-9, and underscore)
type: git #git refers to Azure Repos Git repos
name: Template/template_pipeline #To refer to a repo in another project within the same organization, prefix the name with that project's name. For example, OtherProject/otherRepo.
ref: refs/tags/0.1.0 # ref name to use, defaults to 'refs/heads/master'
trigger:
batch: true # when a build is running, the system waits until the build is completed
branches:
include:
- master
- feature/*
- release/*
paths:
include:
- AzureDevops-Introduction/*
stages:
- stage: Build
jobs:
- job: Terraform_Plan
displayName: Terraform Plan - Publish a package if Infrastructure changes are identified
continueOnError: false
pool:
vmImage: $(vmImageName)
steps:
- task: DownloadSecureFile@1
displayName: "Download secure file $(backend_main_secret_file_id1)"
inputs:
secureFile: $(backend_main_secret_file_id1)
- template: terraform.yml@Yaml_Templates
parameters:
version: $(terraform_version)
path: "./AzureDevops-Introduction/aks-k8s/"
package_name: "aks-k8s"
terraform_init: true
terraform_plan: true
backend_secret_file_id: $(backend_main_secret_file_id1)
backend_file_path: "variable/backend-jdld.tfvars"
main_secret_file_id: $(backend_main_secret_file_id1)
main_file_path: "variable/main-jdld.tfvars"
- publish: "./ArtifactPublishLocation" # Local path to include in the Artifact
artifact: "$(artifact_name)"
- stage: Deploy
dependsOn: Build
jobs:
# track deployments on the environment
- deployment: Terraform_Apply
displayName: Terraform Apply - Resources creation
pool:
vmImage: $(vmImageName)
environment: "Terraform_Apply"
strategy:
# default deployment strategy
runOnce:
deploy:
steps:
- template: terraform.yml@Yaml_Templates
parameters:
version: $(terraform_version)
artifact_path: $(Pipeline.Workspace)/$(artifact_name)
package_name: "aks-k8s"
terraform_apply: true
main_file_path: "variable/main-jdld.tfvars"
- stage: Deliver
dependsOn: Deploy
jobs:
# track deployments on the environment
- deployment: Terraform_Destroy
displayName: Terraform Destroy - Script ok, now deleting the resources
pool:
vmImage: $(vmImageName)
environment: "Terraform_Destroy"
strategy:
# default deployment strategy
runOnce:
deploy:
steps:
- task: DownloadSecureFile@1
displayName: Download secure file $(backend_main_secret_file_id1)
inputs:
secureFile: $(backend_main_secret_file_id1)
- template: terraform.yml@Yaml_Templates
parameters:
version: $(terraform_version)
artifact_path: $(Pipeline.Workspace)/$(artifact_name)
package_name: "aks-k8s"
terraform_destroy: true
main_secret_file_id: $(backend_main_secret_file_id1)
main_file_path: "variable/main-jdld.tfvars"