-
Notifications
You must be signed in to change notification settings - Fork 42
93 lines (82 loc) · 3.34 KB
/
bicep-build-to-validate.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
name: Unit Tests - Bicep Files and Modules
on:
pull_request:
branches:
- main
paths:
- "**.bicep"
workflow_dispatch: {}
jobs:
bicep_unit_tests:
name: Bicep Build & Lint All Modules
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: List Currently Installed Bicep Version
shell: pwsh
run: |
$bicepVersion = bicep --version
Write-Information "=====> Currently installed Bicep version is: $bicepVersion <=====" -InformationAction Continue
- name: Install latest version of Bicep
shell: sh
run: |
# From https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/install#linux
# Fetch the latest Bicep CLI binary
curl -Lo bicep https://github.com/Azure/bicep/releases/latest/download/bicep-linux-x64
# Mark it as executable
chmod +x ./bicep
# Add bicep to your PATH (requires admin)
sudo mv ./bicep /usr/local/bin/bicep
# Verify you can now access the 'bicep' command
bicep --help
# Done!
- name: List Now Installed Bicep Version
shell: pwsh
run: |
$bicepVersion = bicep --version
Write-Information "=====> Now installed Bicep version is: $bicepVersion <=====" -InformationAction Continue
- name: Bicep Build & Lint All Modules
shell: pwsh
run: |
$output = @()
Get-ChildItem -Recurse -Filter '*.bicep' | ForEach-Object {
Write-Information "==> Attempting Bicep Build For File: $_" -InformationAction Continue
$bicepOutput = bicep build $_.FullName 2>&1
if ($LastExitCode -ne 0)
{
foreach ($item in $bicepOutput) {
$output += "$($item) `r`n"
}
}
Else
{
echo "Bicep Build Successful for File: $_"
}
}
if ($output.length -gt 0) {
throw $output
}
# - name: List Azure Resource Types
# shell: pwsh
# run: |
# $resourceTypesFullList = @{}
# Get-ChildItem -Path '.\infra-as-code\bicep\modules' -Recurse -Filter '*.json' -Exclude 'callModuleFromACR.example.json', 'orchHubSpoke.json', '*parameters*.json', 'bicepconfig.json', '*policy_*.json' | ForEach-Object {
# Write-Information "==> Reading Built ARM Template JSON File: $_" -InformationAction Continue
# $armTemplate = Get-Content $_.FullName | ConvertFrom-Json -Depth 20
# $armResourceTypes = $armTemplate.Resources
# $armResourceTypes | ForEach-Object {
# if (!$resourceTypesFullList.ContainsKey($_.Type)) {
# $resourceTypesFullList.Add($_.Type, 1)
# }
# else {
# $resourceTypesFullList[$_.Type] += 1
# }
# }
# }
# Write-Information "==> Remove nested deployments resource type" -InformationAction Continue
# $resourceTypesFullList.Remove('Microsoft.Resources/Deployments')
# Write-Information "***** List of resource types in Bicep modules *****" -InformationAction Continue
# $resourceTypesFullList.Keys | Sort-Object