Validate infrastructure as code (IaC) and DevOps repositories using GitHub Actions.
Перейти к файлу
Bernie White 3577a6bb7f
Fix link in upgrade notes (#56)
2020-12-16 00:37:26 +10:00
.github Bump actions/upload-artifact from v2.2.0 to v2.2.1 (#51) 2020-11-16 17:11:47 +10:00
.ps-rule Updated repository rules (#38) 2020-09-21 20:36:09 +10:00
.vscode Updated action example (#13) 2020-06-07 21:27:37 +10:00
docs Fix link in upgrade notes (#56) 2020-12-16 00:37:26 +10:00
.gitignore Initial commit 2019-09-02 18:40:52 +10:00
.markdownlint.json Updated action example (#13) 2020-06-07 21:27:37 +10:00
CHANGELOG.md Release v1.0.0 (#55) 2020-12-08 13:35:32 +10:00
CODE_OF_CONDUCT.md Add community files and documentation updates (#8) 2020-06-07 17:04:48 +10:00
CONTRIBUTING.md Update links after transfer to Microsoft (#10) 2020-06-07 18:17:25 +10:00
Dockerfile Bump PSRule v1 and PS v7.1 #52 #53 (#54) 2020-12-08 12:42:49 +10:00
LICENSE Add community files and documentation updates (#8) 2020-06-07 17:04:48 +10:00
README.md Release v1.0.0 (#55) 2020-12-08 13:35:32 +10:00
SECURITY.md Add community files and documentation updates (#8) 2020-06-07 17:04:48 +10:00
action.yml Update author (#14) 2020-06-07 21:51:23 +10:00
powershell.ps1 Added support for markdown output format #47 (#48) 2020-11-05 21:24:23 +10:00
ps-project.yaml Bump PSRule v1 and PS v7.1 #52 #53 (#54) 2020-12-08 12:42:49 +10:00
ps-rule.yaml Updated repository rules (#38) 2020-09-21 20:36:09 +10:00

README.md

PSRule

Validate infrastructure as code (IaC) and DevOps repositories using rules. PSRule allows you to analyse a repository with pre-built rules or create your own. Analysis can be performed from input files or the repository structure.

To learn about PSRule and how to write your own rules see Getting started.

Usage

To get the latest stable release use:

- name: Run PSRule analysis
  uses: Microsoft/ps-rule@v1.0.0

To get the latest bits use:

- name: Run PSRule analysis
  uses: Microsoft/ps-rule@main

For a list of changes please see the change log.

Inputs

- name: Run PSRule analysis
  uses: Microsoft/ps-rule@main
  with:
    inputType: repository, inputPath                        # Optional. Determines the type of input to use for PSRule.
    inputPath: string                                       # Optional. The path PSRule will look for files to validate.
    modules: string                                         # Optional. A comma separated list of modules to use for analysis.
    source: string                                          # Optional. A path containing rules to use for analysis.
    outputFormat: None, Yaml, Json, NUnit3, Csv, Markdown   # Optional. The format to use when writing results to disk.
    outputPath: string                                      # Optional. The file path to write results to.
    path: string                                            # Optional. The working directory PSRule is run from.

inputType

Determines the type of input to use for PSRule either repository or inputPath. Defaults to repository.

When set to:

  • repository - The structure of the repository within inputPath will be analyzed.
  • inputPath - Supported file formats within inputPath will be read as objects.

inputPath

The path PSRule will look for input files. Defaults to repository root.

modules

A comma separated list of modules to use for analysis.

Modules are additional packages that can be installed from the PowerShell Gallery. PSRule will install the latest stable version from the PowerShell Gallery automatically. Available modules.

source

An path containing rules to use for analysis. Defaults to .ps-rule/.

Use this option to include rules that have not been packaged as a module.

outputFormat

The output format to write result to disk. Supported formats are Yaml, Json, NUnit3, Csv, Markdown. Defaults to None.

outputPath

The file path to write results to when outputFormat is configured.

path

The working directory PSRule is run from. Defaults to repository root.

Options specified in ps-rule.yaml from this directory will be used unless overridden by inputs.

Using the action

To use PSRule:

  1. See Creating a workflow file.
  2. Reference Microsoft/ps-rule@main. For example:
name: CI
on: [push]
jobs:
  analyze:
    name: Analyze repository
    runs-on: ubuntu-latest
    steps:

    - name: Checkout
      uses: actions/checkout@main

    - name: Run PSRule analysis
      uses: Microsoft/ps-rule@main
  1. Create rules within the .ps-rule/ directory. For example:
# Example .ps-rule/GitHub.Community.Rule.ps1

# Synopsis: Check for recommended community files
Rule 'GitHub.Community' -Type 'PSRule.Data.RepositoryInfo' {
    $Assert.FilePath($TargetObject, 'FullName', @('LICENSE'));
    $Assert.FilePath($TargetObject, 'FullName', @('CODE_OF_CONDUCT.md'));
    $Assert.FilePath($TargetObject, 'FullName', @('CONTRIBUTING.md'));
    $Assert.FilePath($TargetObject, 'FullName', @('README.md'));
    $Assert.FilePath($TargetObject, 'FullName', @('.github/CODEOWNERS'));
    $Assert.FilePath($TargetObject, 'FullName', @('.github/PULL_REQUEST_TEMPLATE.md'));
}
  1. Run the workflow.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Maintainers

License

This project is licensed under the MIT License.