Skip to content

Latest commit

 

History

History
71 lines (56 loc) · 2.33 KB

File metadata and controls

71 lines (56 loc) · 2.33 KB

Creating your pipeline

You can use PSDocs for Azure to generate documentation from within a continuous integration (CI) pipeline.

!!! Abstract This topic covers creating a pipeline to automatically build documentation with PSDocs for Azure. The pipeline:

- Installs the `PSDocs.Azure` module
- Generates markdown for each Azure template in the `templates/` sub-directory.

Within the root directory of your Infrastructure as Code (IaC) repository:

=== "GitHub Actions"

Create a new GitHub Actions workflow by creating `.github/workflows/publish-docs.yaml`.
Add the following code to the workflow file.

```yaml
name: Publish docs
on:
  push:
    branches: [ main ]
jobs:
  publish:
    name: Publish
    runs-on: ubuntu-latest
    steps:

    - uses: actions/checkout@v2

    # Generate markdown files using PSDocs
    # Scan for Azure template file recursively in sub-directories
    # Then generate a docs using a standard naming convention. i.e. <name>_<version>.md
    - name: Generate docs
      uses: microsoft/ps-docs@main
      with:
        conventions: Azure.NameByParentPath
        modules: PSDocs,PSDocs.Azure
        inputPath: templates/
        outputPath: out/docs/
        prerelease: true
```

This will automatically install compatible versions of all dependencies.

=== "Azure Pipelines"

Create a new Azure DevOps YAML pipeline by creating `.azure-pipelines/publish-docs.yaml`.
Add the following code to the YAML pipeline file.

```yaml
jobs:
- job: 'Publish'
  displayName: 'Generate ARM template docs'
  pool:
    vmImage: 'windows-2019'
  steps:

  # Generate markdown files using PSDocs
  # Scan for Azure template file recursively in the templates/ directory
  # Then generate a docs using a standard naming convention. i.e. <name>_<version>.md
  - powershell: |
      Install-Module -Name 'PSDocs.Azure' -Repository PSGallery -Force;
      Get-AzDocTemplateFile -Path templates/ | ForEach-Object {
        Invoke-PSDocument -Module PSDocs.Azure -OutputPath out/docs/ -InputObject $_.TemplateFile -Convention 'Azure.NameByParentPath';
      }
    displayName: 'Generate docs'
```

This will automatically install compatible versions of all dependencies.