Project

PSPublishModule

Build, test, version, sign, and publish PowerShell modules with reusable PowerForge pipelines.

Stars 48
Forks 16
PowerShell Gallery downloads 17,213
Release v3.0.169
Language: C# Updated: 2026-10-17
Command

Invoke-PowerForgeRelease

Module PSPublishModule
Inputs
None
Outputs
PowerForge.PowerForgeReleaseResult PowerForge.PowerForgeAppleReleaseReceipt

Executes the unified repository release workflow from a JSON configuration.

Syntax

Invoke-PowerForgeRelease [-AdoptExistingAppleBuild] [-AllowManifestOutsideProjectRoot] [-AllowOutputOutsideProjectRoot] [-AppleAction <PowerForgeAppleReleaseAction>] [-AppleExpectedPlanSha256 <String>] [-ApplePollIntervalSeconds <Int32>] [-AppleProcessingTimeoutSeconds <Int32>] [-AppleResume] [-AppleShipAppStoreTarget <String[]>] [-AppleShipSyncScreenshots] [-AppleShipTestFlightTarget <String[]>] [-AppleSourceCommit <String>] [-AppleSummary] [-AppleVersion <String>] [-AppleWaitForProcessing] [-ChecksumsPath <String>] [-ConfigPath <String>] [-Configuration <String>] [-ConfirmAppleAction] [-ExitCode] [-Flavors <SingleContained|SingleFx|Portable|Fx>] [-Frameworks <String[]>] [-InstallerProperty <String[]>] [-KeepSymbols] [-ManifestJsonPath <String>] [-ModuleCertificateThumbprint <String>] [-ModuleDiagnosticsBaselinePath <String>] [-ModuleFailOnDiagnosticsSeverity <Warning|Error>] [-ModuleFailOnNewDiagnostics <Boolean>] [-ModuleFramework <auto|net10.0|net8.0>] [-ModuleGenerateDiagnosticsBaseline <Boolean>] [-ModuleNoDotnetBuild] [-ModuleNoSign] [-ModuleOnly] [-ModulePreReleaseTag <String>] [-ModuleRunMode <Manifest|Documentation|Build|Publish>] [-ModuleSignIncludeBinaries <Boolean>] [-ModuleSignIncludeExe <Boolean>] [-ModuleSignIncludeInternals <Boolean>] [-ModuleSignModule] [-ModuleSkipInstall] [-ModuleTimeoutSeconds <Int32>] [-ModuleUpdateDiagnosticsBaseline <Boolean>] [-ModuleVersion <String>] [-NoAppleResume] [-NoAppleWaitForProcessing] [-NoInteractive] [-OutputRoot <String>] [-PackageSignStore <CurrentUser|LocalMachine>] [-PackageSignThumbprint <String>] [-PackageSignTimestampUrl <String>] [-PackagesOnly] [-Plan] [-PublishNuget] [-PublishProjectGitHub] [-PublishToolGitHub] [-ReleaseVersion <String>] [-Runtimes <String[]>] [-Sign] [-SignCsp <String>] [-SignDescription <String>] [-SignKeyContainer <String>] [-SignOnFailure <Warn|Fail|Skip>] [-SignOnMissingTool <Warn|Fail|Skip>] [-SignProfile <String>] [-SignSubjectName <String>] [-SignThumbprint <String>] [-SignTimeoutSeconds <Int32>] [-SignTimestampUrl <String>] [-SignToolPath <String>] [-SignUrl <String>] [-SkipBuild] [-SkipReleaseChecksums] [-SkipRestore] [-SkipToolOutput <Tool|Portable|Installer|Store>] [-SkipWingetSubmit] [-SkipWorkspaceValidation] [-StageRoot <String>] [-Styles <DotNetPublishStyle[]>] [-SubmitWinget] [-Target <String[]>] [-ToolOutput <Tool|Portable|Installer|Store>] [-ToolsOnly] [-Validate] [-WingetAllowInteractiveAuthentication] [-WingetOpenBrowser] [-WingetPullRequestTitle <String>] [-WingetReplace] [-WingetReplaceVersion <String>] [-WingetSubmitMode <Manifest|Update>] [-WingetTimeoutSeconds <Int32>] [-WingetTokenEnvName <String>] [-WingetTokenFilePath <String>] [-WingetToolPath <String>] [-WorkspaceConfigPath <String>] [-WorkspaceDisableFeature <String[]>] [-WorkspaceEnableFeature <String[]>] [-WorkspaceProfile <String>] [-WorkspaceTestimoXRoot <String>] [<CommonParameters>]
#
Parameter set: Config
Invoke-PowerForgeRelease [-AdoptExistingAppleBuild] [-AllowManifestOutsideProjectRoot] [-AllowOutputOutsideProjectRoot] [-AppleAction <PowerForgeAppleReleaseAction>] [-AppleExpectedPlanSha256 <String>] [-ApplePollIntervalSeconds <Int32>] [-AppleProcessingTimeoutSeconds <Int32>] [-AppleResume] [-AppleShipAppStoreTarget <String[]>] [-AppleShipSyncScreenshots] [-AppleShipTestFlightTarget <String[]>] [-AppleSourceCommit <String>] [-AppleSummary] [-AppleVersion <String>] [-AppleWaitForProcessing] [-ChecksumsPath <String>] [-Configuration <String>] [-ConfirmAppleAction] [-ExitCode] [-Flavors <SingleContained|SingleFx|Portable|Fx>] [-Frameworks <String[]>] [-InstallerProperty <String[]>] [-KeepSymbols] [-ManifestJsonPath <String>] [-ModuleCertificateThumbprint <String>] [-ModuleDiagnosticsBaselinePath <String>] [-ModuleFailOnDiagnosticsSeverity <Warning|Error>] [-ModuleFailOnNewDiagnostics <Boolean>] [-ModuleFramework <auto|net10.0|net8.0>] [-ModuleGenerateDiagnosticsBaseline <Boolean>] [-ModuleNoDotnetBuild] [-ModuleNoSign] [-ModuleOnly] [-ModulePreReleaseTag <String>] [-ModuleRunMode <Manifest|Documentation|Build|Publish>] [-ModuleSignIncludeBinaries <Boolean>] [-ModuleSignIncludeExe <Boolean>] [-ModuleSignIncludeInternals <Boolean>] [-ModuleSignModule] [-ModuleSkipInstall] [-ModuleTimeoutSeconds <Int32>] [-ModuleUpdateDiagnosticsBaseline <Boolean>] [-ModuleVersion <String>] [-NoAppleResume] [-NoAppleWaitForProcessing] [-NoInteractive] [-OutputRoot <String>] [-PackageSignStore <CurrentUser|LocalMachine>] [-PackageSignThumbprint <String>] [-PackageSignTimestampUrl <String>] [-PackagesOnly] [-Plan] -Project <ConfigurationProject> [-PublishNuget] [-PublishProjectGitHub] [-PublishToolGitHub] [-ReleaseVersion <String>] [-Runtimes <String[]>] [-Sign] [-SignCsp <String>] [-SignDescription <String>] [-SignKeyContainer <String>] [-SignOnFailure <Warn|Fail|Skip>] [-SignOnMissingTool <Warn|Fail|Skip>] [-SignProfile <String>] [-SignSubjectName <String>] [-SignThumbprint <String>] [-SignTimeoutSeconds <Int32>] [-SignTimestampUrl <String>] [-SignToolPath <String>] [-SignUrl <String>] [-SkipBuild] [-SkipReleaseChecksums] [-SkipRestore] [-SkipToolOutput <Tool|Portable|Installer|Store>] [-SkipWingetSubmit] [-SkipWorkspaceValidation] [-StageRoot <String>] [-Styles <DotNetPublishStyle[]>] [-SubmitWinget] [-Target <String[]>] [-ToolOutput <Tool|Portable|Installer|Store>] [-ToolsOnly] [-Validate] [-WingetAllowInteractiveAuthentication] [-WingetOpenBrowser] [-WingetPullRequestTitle <String>] [-WingetReplace] [-WingetReplaceVersion <String>] [-WingetSubmitMode <Manifest|Update>] [-WingetTimeoutSeconds <Int32>] [-WingetTokenEnvName <String>] [-WingetTokenFilePath <String>] [-WingetToolPath <String>] [-WorkspaceConfigPath <String>] [-WorkspaceDisableFeature <String[]>] [-WorkspaceEnableFeature <String[]>] [-WorkspaceProfile <String>] [-WorkspaceTestimoXRoot <String>] [<CommonParameters>]
#
Parameter set: Project

Description

This cmdlet is the PowerShell entry point for the same unified release engine used by powerforge release. It can coordinate repository package publishing and downloadable tool/app artefacts from one configuration file.

Examples

Authored help example

Plan the configured release without running build/publish steps

Invoke-PowerForgeRelease -ConfigPath '.\Build\release.json' -Plan

Run tool releases only and publish tool assets to GitHub

Invoke-PowerForgeRelease -ConfigPath '.\Build\release.json' -ToolsOnly -PublishToolGitHub -ExitCode

Parameters

-AdoptExistingAppleBuild SwitchParameter optional
Explicitly adopts a verified remote Apple build or accepted notarization operation. Local receipts provide continuity evidence but never authorize cross-process recovery by themselves; this switch requires ConfirmAppleAction and is intended only for deliberate recovery.
-AllowManifestOutsideProjectRoot SwitchParameter optional
Allows DotNetPublish-backed manifest/report paths to resolve outside the configured project root.
-AllowOutputOutsideProjectRoot SwitchParameter optional
Allows DotNetPublish-backed outputs to resolve outside the configured project root.
-AppleAction PowerForgeAppleReleaseAction optional
Selects one explicit Apple release operation. Configured preserves legacy JSON action flags.
Possible values: Configured, Status, Doctor, Version, Archive, Upload, UploadExisting, Prepare, Screenshots, TestFlight, Advance, SubmitTestFlightReview, SubmitAppReview, Release, Cleanup, Rehearse, Ship
-AppleExpectedPlanSha256 String optional
Requires the persisted Apple plan receipt to match this exact SHA-256.
-ApplePollIntervalSeconds Int32 optional
App Store Connect processing poll interval in seconds.
-AppleProcessingTimeoutSeconds Int32 optional
Maximum App Store Connect processing wait in seconds.
-AppleResume SwitchParameter optional
Enables recovery discovery; deliberate cross-process reuse also requires AdoptExistingAppleBuild and ConfirmAppleAction.
-AppleShipAppStoreTarget String[] optional
Apple target names or schemes that should be submitted to App Store Review by Ship.
-AppleShipSyncScreenshots SwitchParameter optional
Publishes reviewed local screenshot bytes during Ship instead of reusing complete remote screenshots.
-AppleShipTestFlightTarget String[] optional
Apple target names or schemes that should receive the Ship build through internal TestFlight.
-AppleSourceCommit String optional
Binds Apple release evidence to a full 40-character SHA-1 or 64-character SHA-256 source commit.
-AppleSummary SwitchParameter optional
Requests compact Apple receipt-oriented output from compatible hosts.
-AppleVersion String optional
Overrides the Apple marketing version selected for this operation.
-AppleWaitForProcessing SwitchParameter optional
Waits for App Store Connect build processing on this run.
-ChecksumsPath String optional
Optional release checksums output path override.
-ConfigPath String optionalsets: Config
Path to the unified release configuration file. When omitted, the cmdlet searches current and parent directories for standard release config file names.
-Configuration String optional
Optional configuration override.
-ConfirmAppleAction SwitchParameter optional
Explicitly confirms a risky Apple screenshot replacement, review submission, or public release action.
-ExitCode SwitchParameter optional
Sets host exit code: 0 on success, 1 on failure.
-Flavors String[] optionalaliases: Flavor
Optional legacy tool flavor filter.
Possible values: SingleContained, SingleFx, Portable, Fx
-Frameworks String[] optionalaliases: Framework
Optional framework filter.
-InstallerProperty String[] optional
Optional installer MSBuild property overrides in Name=Value form.
-KeepSymbols SwitchParameter optional
Keeps symbol files for tool/app artefacts.
-ManifestJsonPath String optional
Optional release manifest output path override.
-ModuleCertificateThumbprint String optional
Optional signing certificate thumbprint for the native module-release lane.
-ModuleDiagnosticsBaselinePath String optional
Optional diagnostics baseline path for the native module-release lane.
-ModuleFailOnDiagnosticsSeverity String optional
Optional diagnostics severity threshold for the native module-release lane.
Possible values: Warning, Error
-ModuleFailOnNewDiagnostics Boolean optional
Controls failure on new diagnostics in the native module-release lane.
-ModuleFramework String optional
Target framework used by the native module-release lane.
Possible values: auto, net10.0, net8.0
-ModuleGenerateDiagnosticsBaseline Boolean optional
Controls diagnostics baseline generation in the native module-release lane.
-ModuleNoDotnetBuild SwitchParameter optional
Skips the dotnet build step inside the native module-release lane.
-ModuleNoSign SwitchParameter optional
Disables signing for the native module-release lane.
-ModuleOnly SwitchParameter optional
Executes only the module portion of the release.
-ModulePreReleaseTag String optional
Optional prerelease tag override for the native module-release lane.
-ModuleRunMode ConfigurationGateMode optional
Module pipeline gate used by the native module-release lane.
Possible values: Manifest, Documentation, Build, Publish
-ModuleSignIncludeBinaries Boolean optional
Controls whether the native module-release lane signs binaries.
-ModuleSignIncludeExe Boolean optional
Controls whether the native module-release lane signs executables.
-ModuleSignIncludeInternals Boolean optional
Controls whether the native module-release lane signs internal files.
-ModuleSignModule SwitchParameter optional
Enables signing for the native module-release lane.
-ModuleSkipInstall SwitchParameter optional
Skips installation after the native module-release lane completes.
-ModuleTimeoutSeconds Int32 optional
Maximum runtime in seconds for the native module-release lane.
-ModuleUpdateDiagnosticsBaseline Boolean optional
Controls diagnostics baseline updates in the native module-release lane.
-ModuleVersion String optional
Optional module version override for the native module-release lane.
-NoAppleResume SwitchParameter optional
Disables exact remote-build reuse on this run.
-NoAppleWaitForProcessing SwitchParameter optional
Returns after upload instead of waiting for build processing.
-NoInteractive SwitchParameter optional
Disables the interactive Spectre renderer while preserving structured pipeline output.
-OutputRoot String optional
Optional output root override for tool/app assets.
-PackageSignStore String optional
Optional package-signing certificate store override.
Possible values: CurrentUser, LocalMachine
-PackageSignThumbprint String optional
Optional package-signing thumbprint override.
-PackageSignTimestampUrl String optional
Optional package-signing timestamp URL override.
-PackagesOnly SwitchParameter optional
Executes only the package portion of the release.
-Plan SwitchParameter optional
Builds the release plan without executing steps.
-PublishNuget SwitchParameter optional
Enables NuGet publishing for this run.
-PublishProjectGitHub SwitchParameter optional
Enables project/package GitHub release publishing for this run.
-PublishToolGitHub SwitchParameter optional
Enables tool/app GitHub release publishing for this run.
-ReleaseVersion String optional
Exact x.y.z version override for an explicitly tool-only release.
-Runtimes String[] optionalaliases: Rid, Runtime
Optional runtime filter.
-Sign SwitchParameter optional
Enables signing for tool/app outputs when supported by the release config.
-SignCsp String optional
Optional signing CSP override.
-SignDescription String optional
Optional signing description override.
-SignKeyContainer String optional
Optional signing key container override.
-SignOnFailure DotNetPublishPolicyMode optional
Optional policy when signing fails.
Possible values: Warn, Fail, Skip
-SignOnMissingTool DotNetPublishPolicyMode optional
Optional policy when the configured signing tool is missing.
Possible values: Warn, Fail, Skip
-SignProfile String optional
Optional signing profile override.
-SignSubjectName String optional
Optional signing certificate subject name override.
-SignThumbprint String optional
Optional signing thumbprint override.
-SignTimeoutSeconds Int32 optional
Maximum signing process duration in seconds.
-SignTimestampUrl String optional
Optional signing timestamp URL override.
-SignToolPath String optional
Optional signing tool path override.
-SignUrl String optional
Optional signing URL override.
-SkipBuild SwitchParameter optional
Disables build operations for the tool/app publish flow.
-SkipReleaseChecksums SwitchParameter optional
Skips top-level release checksums generation.
-SkipRestore SwitchParameter optional
Disables restore operations for the tool/app publish flow.
-SkipToolOutput String[] optional
Optional tool/app output exclusion for DotNetPublish-backed release flows.
Possible values: Tool, Portable, Installer, Store
-SkipWingetSubmit SwitchParameter optional
Disables Winget submission even when enabled by release configuration.
-SkipWorkspaceValidation SwitchParameter optional
Skips workspace validation defined by the release config.
-StageRoot String optional
Optional staged release root override.
-Styles DotNetPublishStyle[] optionalaliases: Style
Optional publish style filter.
Possible values: Portable, PortableCompat, PortableSize, SelfContained, FrameworkDependent, AotSpeed, AotSize
-SubmitWinget SwitchParameter optional
Submits generated Winget manifests with wingetcreate after release assets are available.
-Target String[] optionalaliases: Targets
Optional target-name filter.
-ToolOutput String[] optional
Optional tool/app output selection for DotNetPublish-backed release flows.
Possible values: Tool, Portable, Installer, Store
-ToolsOnly SwitchParameter optional
Executes only the tool/app portion of the release.
-Validate SwitchParameter optional
Validates configuration through plan-only execution.
-WingetAllowInteractiveAuthentication SwitchParameter optional
Allows wingetcreate to prompt for GitHub authentication when no token is resolved.
-WingetOpenBrowser SwitchParameter optional
Allows wingetcreate to open the submitted pull request in a browser.
-WingetPullRequestTitle String optional
Pull request title template passed to wingetcreate.
-WingetReplace SwitchParameter optional
Enables wingetcreate replacement mode.
-WingetReplaceVersion String optional
Optional version passed with wingetcreate replacement mode.
-WingetSubmitMode String optional
Winget submission mode used by wingetcreate.
Possible values: Manifest, Update
-WingetTimeoutSeconds Int32 optional
Timeout in seconds for each wingetcreate invocation.
-WingetTokenEnvName String optional
Environment variable containing the GitHub token for wingetcreate.
-WingetTokenFilePath String optional
File containing the GitHub token for wingetcreate.
-WingetToolPath String optional
Optional wingetcreate executable path.
-WorkspaceConfigPath String optional
Optional workspace validation config override.
-WorkspaceDisableFeature String[] optional
Optional workspace feature disable list override.
-WorkspaceEnableFeature String[] optional
Optional workspace feature enable list override.
-WorkspaceProfile String optional
Optional workspace validation profile override.
-WorkspaceTestimoXRoot String optional
Optional TestimoX workspace root passed to shared workspace validation.
-Project ConfigurationProject requiredsets: Project
PowerShell-authored project/release object that is translated into the unified release engine.

Common Parameters

This command supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable.

For more information, see about_CommonParameters.