-
Notifications
You must be signed in to change notification settings - Fork 164
Pre Release
github-actions edited this page Feb 22, 2023
·
4 revisions
The following code snippets can be used to test and validate pre-release code. By updating the Pull / Push pipelines they can install module code from forks and specific branches.
Create a new folder within the .github/
named scripts/
and place the following Install.ps1
file
function Install-SourceModule {
[CmdletBinding()]
param(
$Repository,
$Branch = "main"
)
process {
$url = "https://api.github.com/repos/{0}/zipball/{1}" -f $Repository, $Branch
Write-Verbose "Module Url: $($url)"
$moduleName = $Repository.split('/')[-1]
Write-Verbose "Module Name: $($moduleName)"
$tempPath = [System.IO.Path]::GetTempPath()
$moduleArchivePath = Join-Path -Path $tempPath -ChildPath "$($moduleName).zip"
Write-Verbose "Module Archive: $($moduleArchivePath)"
$null = Invoke-RestMethod $url -OutFile $moduleArchivePath
$null = Expand-Archive -Path $moduleArchivePath -DestinationPath "$tempPath" -Force
$Repository = $Repository.Replace("/", "-")
$moduleSource = Get-ChildItem $tempPath | Where-Object Name -like "$Repository*"
Write-Verbose "Module Source: $($moduleSource)"
$moduleFiles = Get-ChildItem "$moduleSource/src"
$modulesPath = Join-Path -Path $HOME -ChildPath ".local/share/powershell/Modules"
Write-Verbose "Modules Path: $($modulesPath)"
$modulePath = Join-Path -Path $modulesPath -ChildPath $moduleName
Write-Verbose "Module Path: $($modulePath)"
$moduleManifest = Get-ChildItem $moduleFiles -Include "$moduleName.psd1" -Recurse
Write-Verbose "Module Manifest: $($moduleManifest)"
$moduleVersion = (Get-Content -Raw $moduleManifest.FullName | Invoke-Expression).ModuleVersion
Write-Verbose "Module Version: $($moduleVersion)"
$modulePath = Join-Path -Path $modulePath -ChildPath $moduleVersion
Write-Verbose "Module Path: $($modulePath)"
$null = New-Item -ItemType directory -Path $modulePath -Force
$null = Copy-Item $moduleFiles -Destination $modulePath -Force -Recurse
}
}
Update the pull.yml
and push.yml
workflows with the following depedency section
- name: "Dependencies"
run: |
. .github/scripts/Install.ps1
Install-SourceModule -Repository "Azure/AzOps" -Branch "main"
$module = Get-Module -Name AzOps -ListAvailable
$data = Import-PowerShellDataFile -Path $module.Path
foreach ($dependency in $data.RequiredModules) {
Install-Module -Name $dependency.ModuleName -RequiredVersion $dependency.RequiredVersion -Force
}
shell: pwsh