Add build.ps1 -CommitArtifacts switch for source/artifact lockstep commits
New switch stages and commits only the three build-output paths (Module/PSInfisicalAPI/bin/**, Module/PSInfisicalAPI/PSInfisicalAPI.psd1, CHANGELOG.md) with a message referencing the embedded BuildCommitHash. Mutually exclusive with -CommitOnSuccess. README and CHANGELOG updated to document the recommended two-commit workflow.
This commit is contained in:
@@ -15,9 +15,15 @@ param(
|
||||
|
||||
[switch]$CommitOnSuccess,
|
||||
|
||||
[switch]$CommitArtifacts,
|
||||
|
||||
[switch]$Force
|
||||
)
|
||||
|
||||
if ($CommitOnSuccess.IsPresent -and $CommitArtifacts.IsPresent) {
|
||||
throw "-CommitOnSuccess and -CommitArtifacts are mutually exclusive."
|
||||
}
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
Set-StrictMode -Version Latest
|
||||
|
||||
@@ -390,4 +396,30 @@ if ($CommitOnSuccess.IsPresent) {
|
||||
if ($LASTEXITCODE -ne 0) { throw "git commit failed." }
|
||||
}
|
||||
|
||||
if ($CommitArtifacts.IsPresent) {
|
||||
Write-Step "Committing build artifacts (embedded BuildCommitHash=$commitHash)"
|
||||
$artifactPaths = @(
|
||||
[System.IO.Path]::Combine('Module', 'PSInfisicalAPI', 'bin'),
|
||||
[System.IO.Path]::Combine('Module', 'PSInfisicalAPI', 'PSInfisicalAPI.psd1'),
|
||||
'CHANGELOG.md'
|
||||
)
|
||||
|
||||
foreach ($artifactPath in $artifactPaths) {
|
||||
& git -C $RepositoryRoot.FullName add -- $artifactPath
|
||||
if ($LASTEXITCODE -ne 0) { throw "git add '$artifactPath' failed." }
|
||||
}
|
||||
|
||||
$stagedOutput = & git -C $RepositoryRoot.FullName diff --cached --name-only
|
||||
if ($LASTEXITCODE -ne 0) { throw "git diff --cached failed." }
|
||||
$stagedFiles = @($stagedOutput | Where-Object { -not [string]::IsNullOrWhiteSpace($_) })
|
||||
if ($stagedFiles.Count -eq 0) {
|
||||
Write-Step "No build artifact changes to commit."
|
||||
} else {
|
||||
$subject = "Build artifacts for $commitHash"
|
||||
$body = "Auto-generated by build.ps1 -CommitArtifacts. Build $buildVersion. Module DLL and manifest embed BuildCommitHash=$commitHash, matching the source commit they were produced from."
|
||||
& git -C $RepositoryRoot.FullName commit -m $subject -m $body
|
||||
if ($LASTEXITCODE -ne 0) { throw "git commit failed." }
|
||||
}
|
||||
}
|
||||
|
||||
Write-Step "Build complete."
|
||||
|
||||
Reference in New Issue
Block a user