https://github.com/theohbrothers/generate-dockerimagevariantshelpers
Helpers to use with Generate-DockerImageVariants.
https://github.com/theohbrothers/generate-dockerimagevariantshelpers
docker generate-dockerimagevariants module powershell pwsh
Last synced: 8 months ago
JSON representation
Helpers to use with Generate-DockerImageVariants.
- Host: GitHub
- URL: https://github.com/theohbrothers/generate-dockerimagevariantshelpers
- Owner: theohbrothers
- License: gpl-3.0
- Created: 2023-09-03T18:29:33.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-01-13T16:48:27.000Z (9 months ago)
- Last Synced: 2025-01-13T17:48:03.547Z (9 months ago)
- Topics: docker, generate-dockerimagevariants, module, powershell, pwsh
- Language: PowerShell
- Homepage:
- Size: 207 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Generate-DockerImageVariantsHelpers
[](https://github.com/theohbrothers/Generate-DockerImageVariantsHelpers/actions/workflows/ci-master-pr.yml)
[](https://github.com/theohbrothers/Generate-DockerImageVariantsHelpers/releases/)
[](https://www.powershellgallery.com/packages/Generate-DockerImageVariantsHelpers/)Helpers to use with [Generate-DockerImageVariants](https://github.com/theohbrothers/Generate-DockerImageVariants).
## Install
Open [`powershell`](https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/install/installing-windows-powershell?view=powershell-5.1) or [`pwsh`](https://github.com/powershell/powershell#-powershell) and type:
```powershell
Install-Module -Name Generate-DockerImageVariantsHelpers -Repository PSGallery -Scope CurrentUser -Verbose
```If prompted to trust the repository, hit `Y` and `enter`.
All [required modules](src/Generate-DockerImageVariantsHelpers/Generate-DockerImageVariantsHelpers.psd1) are automatically installed:
- [Generate-DockerImageVariants](https://www.powershellgallery.com/packages/Generate-DockerImageVariants/)
- [PowerShellForGitHub](https://www.powershellgallery.com/packages/PowerShellForGitHub)## Usage
Import the module, and the [cmdlets](src/Generate-DockerImageVariantsHelpers/public) will be available. For example:
```powershell
Import-Module Generate-DockerImageVariantsHelpers# Clone the current repo to a temporary directory
$repo = Clone-TempRepo
cd $repo# Create generate/definitions/versions.json
New-DockerImageVariantsVersions -Package coolpackage -VersionsChangeScope minor -VersionsNewScript { Invoke-RestMethod https://example.com/versions.json } #-Limit 1 -Whatif
New-DockerImageVariantsVersions -Package coolpackage -VersionsChangeScope patch -VersionsNewScript { Invoke-RestMethod https://example.com/versions.json } #-Limit 1 -Whatif# Get generate/definitions/versions.json
$versionsConfig = Get-DockerImageVariantsVersions# Set generate/definitions/versions.json
Set-DockerImageVariantsVersions @{
coolpackage = @{
versions = @(
'0.1.0'
'0.2.0'
)
versionsChangeScope = 'minor'
versionsNewScript = 'Invoke-RestMethod https://example.com/versions.json'
limit = 1 # optional
}
} #-WhatIf# Execute commands
{ git status } | Execute-Command -ErrorAction Stop #-WhatIf# Get changed versions
$versionsChanged = Get-VersionsChanged -Versions @( '0.1.0' ) -VersionsNew @( '0.1.1', '0.2.0' ) -ChangeScope patch -AsObject
$versionsChanged = Get-VersionsChanged -Versions @( '0.1.0' ) -VersionsNew @( '0.1.1', '0.2.0' ) -ChangeScope minor -AsObject# Open PR for each changed version
$env:GITHUB_TOKEN = 'xxx'
$prs = @(
foreach ($c in $versionsChanged.Values) {
if ($c['kind'] -eq 'new') {
New-DockerImageVariantsPR -Package coolpackage -Version $c['to'] -Verb add #-WhatIf
}
if ($c['kind'] -eq 'update') {
New-DockerImageVariantsPR -Package coolpackage -Version $c['from'] -VersionNew $c['to'] -Verb update #-WhatIf
}
}
)
# Merge each successful PR one after another
$env:GITHUB_TOKEN = 'xxx'
foreach ($pr in $prs) {
$pr = Automerge-DockerImageVariantsPR -PR $pr #-WhatIf
}# Update ./generate/definitions/versions.json and open a PR for each changed version, and merge successful PRs one after another (to prevent merge conflicts)
$env:GITHUB_TOKEN = 'xxx'
$autoMergeResults = Update-DockerImageVariantsVersions -PR -AutoMergeQueue #-WhatIf
# Update ./generate/definitions/versions.json and open a PR for each changed version, and merge successful PRs one after another (to prevent merge conflicts), and create a tagged release and close milestone
$autoMergeResults = Update-DockerImageVariantsVersions -PR -AutoMergeQueue -AutoRelease -AutoReleaseTagConvention calver #-WhatIf
$autoMergeResults = Update-DockerImageVariantsVersions -PR -AutoMergeQueue -AutoRelease -AutoReleaseTagConvention semver #-WhatIf# Get next tag
$tag = Get-TagNext -TagConvention calver
$tag = Get-TagNext -TagConvention semver# Tag , push new , rename milestone 'next-release' to , and close milestone
$env:GITHUB_TOKEN = 'xxx'
$tag = New-Release -TagConvention calver #-WhatIf
$tag = New-Release -TagConvention semver #-WhatIf
```