patterns

package
v2.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 24, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildTestDeploy

func BuildTestDeploy(name, namespace, buildImage, testImage, deployImage string, opts ...builder.Option) (*v1alpha1.Workflow, error)

BuildTestDeploy creates a simple CI/CD workflow pattern with build, test, and deploy stages. This is a common pattern for continuous integration and deployment pipelines.

Example:

wf := patterns.BuildTestDeploy(
    "myapp", "argo",
    "golang:1.25",
    "myregistry/myapp:latest",
    "myregistry/deployer:v1",
)

func BuildTestDeployWithCleanup

func BuildTestDeployWithCleanup(name, namespace, buildImage, cleanupImage string, opts ...builder.Option) (*v1alpha1.Workflow, error)

BuildTestDeployWithCleanup creates a CI/CD workflow with cleanup on exit. The cleanup always runs regardless of workflow success or failure.

Example:

wf := patterns.BuildTestDeployWithCleanup(
    "myapp", "argo",
    "golang:1.25",
    "busybox:latest",
)

func ConditionalDeploy

func ConditionalDeploy(name, namespace, image string, opts ...builder.Option) (*v1alpha1.Workflow, error)

ConditionalDeploy creates a workflow that deploys only if tests pass. This demonstrates conditional execution using the 'when' clause.

Example:

wf := patterns.ConditionalDeploy(
    "conditional-deploy", "argo",
    "golang:1.25",
)

func FanOutFanIn

func FanOutFanIn(name, namespace, image string, tasks []string, opts ...builder.Option) (*v1alpha1.Workflow, error)

FanOutFanIn creates a workflow that executes multiple tasks in parallel, then aggregates results in a final step.

Example:

wf := patterns.FanOutFanIn(
    "parallel-processing", "argo",
    "busybox:latest",
    []string{"task-1", "task-2", "task-3"},
)

func MapReduce

func MapReduce(name, namespace, image string, inputs []string, mapCmd, reduceCmd string, opts ...builder.Option) (*v1alpha1.Workflow, error)

MapReduce creates a map-reduce style workflow where: 1. Map phase: Process items in parallel 2. Reduce phase: Aggregate results sequentially

Example:

wf := patterns.MapReduce(
    "word-count", "argo",
    "alpine:latest",
    []string{"file1.txt", "file2.txt", "file3.txt"},
    "wc -w", // map command
    "awk '{sum+=$1} END {print sum}'", // reduce command
)

func MultiEnvironmentDeploy

func MultiEnvironmentDeploy(name, namespace, deployImage string, environments []string, opts ...builder.Option) (*v1alpha1.Workflow, error)

MultiEnvironmentDeploy creates a workflow that deploys to multiple environments sequentially.

Example:

wf := patterns.MultiEnvironmentDeploy(
    "multi-env-deploy", "argo",
    "myregistry/deployer:v1",
    []string{"staging", "production"},
)

func ParallelDataProcessing

func ParallelDataProcessing(name, namespace, image string, dataItems []string, processingCommand string, opts ...builder.Option) (*v1alpha1.Workflow, error)

ParallelDataProcessing creates a workflow that processes multiple data items in parallel. Each item is processed independently with the same processing logic.

Example:

wf := patterns.ParallelDataProcessing(
    "batch-processor", "argo",
    "myregistry/processor:v1",
    []string{"data-1.csv", "data-2.csv", "data-3.csv"},
    "process.sh",
)

func ParallelDeployment

func ParallelDeployment(name, namespace, deployImage string, environments []string, opts ...builder.Option) (*v1alpha1.Workflow, error)

ParallelDeployment creates a workflow that deploys to multiple environments in parallel. This is useful when environments are independent and can be deployed simultaneously.

Example:

wf := patterns.ParallelDeployment(
    "multi-region-deploy", "argo",
    "myregistry/deployer:v1",
    []string{"us-west", "us-east", "eu-central"},
)

func ParallelTestSuite

func ParallelTestSuite(name, namespace, image string, testSuites map[string]string, opts ...builder.Option) (*v1alpha1.Workflow, error)

ParallelTestSuite creates a workflow that runs multiple test suites in parallel. This is useful for speeding up CI/CD pipelines with independent test suites.

Example:

wf := patterns.ParallelTestSuite(
    "test-suite", "argo",
    "golang:1.25",
    map[string]string{
        "unit": "go test ./internal/...",
        "integration": "go test ./tests/integration/...",
        "e2e": "go test ./tests/e2e/...",
    },
)

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL