Generate Markdown #191
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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://$GITHUB_TOKEN@github.com/$github_pr_repo.git" | |
else | |
echo "No changes found." | |
fi | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |