-
Notifications
You must be signed in to change notification settings - Fork 216
143 lines (126 loc) · 4.89 KB
/
psdocs-mdtogit.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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# Example: .github/workflows/arm-docs.yaml
name: Generate Markdown
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main ]
paths:
- 'workload/bicep/deploy-baseline.bicep'
- 'workload/bicep/deploy-custom-image.bicep'
# pull_request:
# branches: [ main ]
# types:
# - edited
# - opened
# - reopened
# - synchronize
# paths:
# - 'workload/bicep/deploy-baseline.bicep'
# - 'workload/bicep/deploy-custom-image.bicep'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
github_user_name: 'github-actions'
github_email: '41898282+github-actions[bot]@users.noreply.github.com'
github_commit_message: 'Generate Parameter Markdowns'
github_pr_number: ${{ github.event.number }}
github_pr_repo: ${{ github.event.pull_request.head.repo.full_name }}
permissions:
contents: write
jobs:
arm_docs:
name: Generate Markdown
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Show env
run: env | sort
- name: Check out PR
run: |
echo "==> Check out PR..."
gh pr checkout "$github_pr_number"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Configure local git
run: |
echo "git user name : $github_user_name"
git config --global user.name "$github_user_name"
echo "git user email : $github_email"
git config --global user.email "$github_email"
- name: Bicep Build
shell: pwsh
run: |
Get-ChildItem -Path workload/bicep/ -Filter '*.bicep' | ForEach-Object {
Write-Information "==> Attempting Bicep Build For File: $_" -InformationAction Continue
$output = bicep build $_.FullName 2>&1
if ($LastExitCode -ne 0)
{
throw $output
}
Else
{
echo $output
}
}
- name: Generate ARM markdowns
run: |
Install-Module -Name 'PSDocs.Azure' -Repository PSGallery -force;
# Scan for Azure template baseline files for AVD Accelerator
Get-AzDocTemplateFile -InputPath workload/bicep/ | ForEach-Object {
# Generate a standard name of the markdown file. i.e. <name>_<version>.md
$template = Get-Item -Path $_.TemplateFile;
$templateraw = Get-Content -Raw -Path $_.Templatefile;
$templateName = $template.Directory.Parent.Name;
$version = $template.Directory.Name;
$docNameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($template.Name);
$docName = "$($docNameWithoutExtension)_$version";
$jobj = ConvertFrom-Json -InputObject $templateraw
$outputpathformds = './workload/docs/autoGenerated'
New-Item -Path $outputpathformds -ItemType Directory -Force
# Conversion
$templatepath = $template.DirectoryName
$convertedtemplatename = $template.Name
$convertedfullpath = $templatepath+"\"+$convertedtemplatename
$jobj | ConvertTo-Json -Depth 100 | Set-Content -Path $convertedfullpath
$mdname = ($docNameWithoutExtension)+'.bicep'
# Generate markdown
Invoke-PSDocument -Module PSDocs.Azure -OutputPath $outputpathformds -InputObject $template.FullName -InstanceName $mdname -Culture en-US;
}
shell: pwsh
- name: Remove Generated JSONs
run: |
Remove-Item -Path workload/bicep/deploy-baseline.json
Remove-Item -Path workload/bicep/deploy-custom-image.json
shell: pwsh
- name: Check git status
run: |
echo "==> Check git status..."
git status --short --branch
- name: Stage changes
run: |
echo "==> Stage changes..."
mapfile -t STATUS_LOG < <(git status --short | grep .)
if [ ${#STATUS_LOG[@]} -gt 0 ]; then
echo "Found changes to the following files:"
printf "%s\n" "${STATUS_LOG[@]}"
git add --all
else
echo "No changes to add."
fi
- name: Push changes
run: |
echo "==> Check git diff..."
mapfile -t GIT_DIFF < <(git diff --cached)
printf "%s\n" "${GIT_DIFF[@]}"
if [ ${#GIT_DIFF[@]} -gt 0 ]; then
echo "==> Commit changes..."
git commit --message "$github_commit_message [$GITHUB_ACTOR/${GITHUB_SHA::8}]"
echo "==> Push changes..."
echo "Pushing changes to: $github_pr_repo"
git push "https://[email protected]/$github_pr_repo.git"
else
echo "No changes found."
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}