Skip to main content

Podman Package

Strongly typed Podman container-management commands.

Installation​

dotnet add package ModularPipelines.Podman

Required command-line tool: podman. It must be installed and available on PATH when the pipeline runs.

Context entry points​

Use the discoverable context.Tools surface from a module:

  • context.Tools.Podman

Module example​


public class UsePodmanModule : SyncModule<None>
{
protected override None Execute(
IModuleContext context,
CancellationToken cancellationToken)
{
var podman = context.Tools.Podman;

// Call the integration's strongly typed operations here.
context.Logger.LogInformation("Podman integration is ready");
return None.Value;
}
}

The package exposes generated options records for its supported CLI commands.

Root execution settings​

Every command options record inherits Podman's public root settings from PodmanOptions. Set Connection and Remote for a remote service, or Root, Runroot, Runtime, and StorageOpt for local storage and runtime selection. These settings render before the subcommand, including nested commands.

var options = new PodmanPsOptions
{
Connection = "builder",
Remote = CliOptionValue.Bare,
Syslog = "false",
};
// podman --connection=builder --remote --syslog=false ps

The optional boolean properties accept CliOptionValue.Bare, "true", "false", or null to omit the switch. CdiSpecDir, HooksDir, Module, RuntimeFlag, and StorageOpt accept collections and repeat the switch for each value. Short aliases -c and -r remain available in option metadata. Identity and TLS key settings refer to file paths; they are not credential contents.

Compose provider options such as ProjectName, File, and Profile stay on PodmanComposeOptions. A command-local --identity or TLS setting configures that command's target and remains independent of the root connection settings.

V4 migration​

Root execution settings are now available through every options record. Where a command already had an option with the same name, its generated property receives a command-specific name. In particular, use inherited Identity for the active connection and ConnectionIdentity on PodmanSystemConnectionAddOptions for the connection being added. Its local TLS properties are ConnectionTlsCa, ConnectionTlsCert, and ConnectionTlsKey; the root properties remain TlsCa, TlsCert, and TlsKey. PodmanSystemServiceOptions uses SystemTlsCert and SystemTlsKey for its serving certificate.

Build-specific hooks, runtime flags, and SSH options use scoped names such as CliHooksDir, CliRuntimeFlag, and CliSsh on PodmanBuildOptions, with Image and Farm prefixes on the corresponding nested build records. Commit commands use CliConfig or ContainerConfig for their local configuration. Compose build uses ComposeSsh for its provider setting. Do not move Compose provider settings onto PodmanOptions.

This surface was audited against Podman 6.1.3 and Docker Compose 5.6.0 help.