diff --git a/build.ps1 b/build.ps1 new file mode 100644 index 0000000..d245499 --- /dev/null +++ b/build.ps1 @@ -0,0 +1,10 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +# Note: +# This manually builds the project locally + +. ./.azure-pipelines/pipeline-deps.ps1 +Invoke-Build Test -AssertStyle Client + +Write-Host "If no build errors occurred. The module has been saved to out/modules/PSRule.Rules.CAF" diff --git a/docs/scenarios/install-instructions.md b/docs/scenarios/install-instructions.md index 07dfc08..4dc705d 100644 --- a/docs/scenarios/install-instructions.md +++ b/docs/scenarios/install-instructions.md @@ -3,7 +3,8 @@ ## Prerequisites - Windows PowerShell 5.1 with .NET Framework 4.7.2+ or -- PowerShell Core 6.2 or greater on Windows, MacOS and Linux +- PowerShell Core 6.2 or greater on Windows, MacOS and Linux or +- PowerShell 7.0 or greater on Windows, MacOS and Linux For a list of platforms that PowerShell Core is supported on [see](https://github.com/PowerShell/PowerShell#get-powershell). @@ -13,7 +14,6 @@ The following modules are required for `PSRule.Rules.CAF` to work: - PSRule.Rules.Azure - Az.Accounts - Az.Resources -- Az.Security The required version of each module will automatically be installed along-side `PSRule.Rules.CAF` when using `Install-Module` or `Update-Module` cmdlets. @@ -39,13 +39,45 @@ Save for offline use from PowerShell Gallery: ```powershell # Save module, in the .\modules directory -Save-Module -Name 'PSRule', 'PSRule.Rules.Azure', 'PSRule.Rules.CAF', 'Az.Accounts', 'Az.Resources', 'Az.Security' -Path '.\modules'; +Save-Module -Name 'PSRule', 'PSRule.Rules.Azure', 'PSRule.Rules.CAF', 'Az.Accounts', 'Az.Resources' -Path '.\modules'; ``` > For pre-release versions the `-AllowPrerelease` switch must be added when calling `Install-Module` or `Save-Module`. > -> To install pre-release module versions, upgrading to the latest version of _PowerShellGet_ may be required. To do this use: +> To install pre-release module versions, upgrading to the latest version of _PowerShellGet_ may be required. +To do this use: > > `Install-Module -Name PowerShellGet -Repository PSGallery -Scope CurrentUser -Force` +## Building from source + +To build this module from source run `./build.ps1`. +This build script will compile the module and documentation then output the result into `out/modules/PSRule.Rules.CAF`. + +The following PowerShell modules will be automatically downloaded if the required versions are not present: + +- PlatyPS +- Pester +- PSScriptAnalyzer +- PowerShellGet +- PackageManagement +- InvokeBuild + +These additional modules are only required for building PSRule and are not required for running PSRule. + +If you are on a network that does not permit Internet access to the PowerShell Gallery, +download these modules on an alternative device that has access. +The following script can be used to download the required modules to an alternative device. +After downloading the modules copy the module directories to devices with restricted Internet access. + +```powershell +# Save modules, in the .\modules directory +Save-Module -Name PlatyPS, Pester, PSScriptAnalyzer, PowerShellGet, PackageManagement, InvokeBuild -Repository PSGallery -Path '.\modules'; +``` + +Additionally .NET Core SDK v3.1 is required. +.NET Core will not be automatically downloaded and installed. +To download and install the latest SDK see [Download .NET Core 3.1][dotnet]. + [module]: https://www.powershellgallery.com/packages/PSRule.Rules.CAF +[dotnet]: https://dotnet.microsoft.com/download/dotnet-core/3.1