Agent Skills: Harness CD Skill

Harness CD (Continuous Delivery) for Kubernetes, Helm, Terraform, ECS, and serverless deployments with GitOps, approval gates, rollback strategies, and multi-environment promotion

UncategorizedID: lobbi-docs/claude/harness-cd

Install this agent skill to your local

pnpm dlx add-skill https://github.com/markus41/claude/tree/HEAD/plugins/jira-orchestrator/skills/harness-cd

Skill Files

Browse the full folder contents for harness-cd.

Download Skill

Loading file tree…

plugins/jira-orchestrator/skills/harness-cd/SKILL.md

Skill Metadata

Name
harness-cd
Description
Harness CD (Continuous Delivery) for Kubernetes, Helm, Terraform, ECS, and serverless deployments with GitOps, approval gates, rollback strategies, and multi-environment promotion

Harness CD Skill

Deployment orchestration for Kubernetes, Helm, Terraform, ECS, serverless with GitOps.

Use For

  • CD pipelines, strategies (Canary/Blue-Green/Rolling), environments
  • Approval gates, GitOps, rollback, multi-environment promotion

Basic Deployment Pipeline

pipeline:
  name: Deploy Pipeline
  stages:
    - stage:
        name: Deploy Dev
        type: Deployment
        spec:
          service:
            serviceRef: my_service
          environment:
            environmentRef: development
          execution:
            steps:
              - step:
                  name: Rolling Deploy
                  type: K8sRollingDeploy
                  timeout: 10m
            rollbackSteps:
              - step:
                  name: Rollback
                  type: K8sRollingRollback

Deployment Strategies

Rolling (gradual replacement)

- step:
    type: K8sRollingDeploy
    spec:
      skipDryRun: false

Canary (progressive traffic shift)

- step:
    type: K8sCanaryDeploy
    spec:
      instanceSelection:
        type: Count
        spec:
          count: 1

Blue-Green (zero-downtime cutover)

- step:
    type: K8sBGStageDeployment
- step:
    type: K8sBGSwapServices

Service Configuration

Kubernetes

serviceDefinition:
  type: Kubernetes
  spec:
    manifests:
      - manifest:
          type: K8sManifest
          spec:
            store:
              type: Git
              spec:
                connectorRef: github_connector
                branch: main
    artifacts:
      primary:
        sources:
          - type: DockerRegistry
            spec:
              imagePath: myorg/myapp

Helm

serviceDefinition:
  type: NativeHelm
  spec:
    chartName: my-app
    helmVersion: V3

Terraform

serviceDefinition:
  type: CustomDeployment
  spec:
    customDeploymentRef:
      templateRef: terraform_template

Environment & Infrastructure

environment:
  name: Production
  type: Production
infrastructureDefinition:
  type: KubernetesDirect
  spec:
    connectorRef: k8s_connector
    namespace: my-namespace

Approval Gates

- step:
    type: HarnessApproval
    spec:
      approvers:
        userGroups:
          - account.ProductionApprovers
# Jira: type: JiraApproval, issueKey: <+pipeline.variables.jiraIssueKey>
# ServiceNow: type: ServiceNowApproval, ticketNumber: <+pipeline.variables.changeRequest>

GitOps Deployments

Argo CD

- step:
    type: GitOpsUpdateReleaseRepo
    spec:
      variables:
        - name: image_tag
          value: <+artifact.tag>
- step:
    type: GitOpsSync
    spec:
      prune: true

PR-Based GitOps

- step:
    type: CreatePR
    spec:
      updates:
        - path: environments/<+env.name>/values.yaml
          key: image.tag
          value: <+artifact.tag>

Deployment Verification & Rollback

- step:
    type: Verify
    spec:
      type: Canary
      sensitivity: MEDIUM
- step:
    type: Http
    spec:
      url: <+infra.variables.serviceUrl>/health
failureStrategies:
  - onFailure:
      errors:
        - AllErrors
      action:
        type: StageRollback

Multi-Environment Promotion

pipeline:
  stages:
    - stage:
        name: Deploy Dev
        spec:
          environment:
            environmentRef: development
    - stage:
        name: Deploy Staging
        spec:
          environment:
            environmentRef: staging
        when:
          condition: <+pipeline.stages.deploy_dev.status> == "SUCCEEDED"
    - stage:
        name: Deploy Production
        spec:
          environment:
            environmentRef: production

Triggers

# Artifact
trigger:
  source:
    type: Artifact
    spec:
      type: DockerRegistry
      imagePath: myorg/myapp
# Webhook
trigger:
  source:
    type: Webhook
    spec:
      type: Github
# Scheduled
trigger:
  source:
    type: Scheduled
    spec:
      expression: "0 2 * * *"

CD Expressions

| Expression | Purpose | |----------|---| | <+service.name> | Service | | <+env.name> | Environment | | <+infra.namespace> | Namespace | | <+artifact.image>:<+artifact.tag> | Image | | <+pipeline.stages.X.output.VAR> | Output |

API Operations

curl -X POST "https://app.harness.io/pipeline/api/pipeline/execute/${PIPELINE_ID}" -H "x-api-key: ${API_KEY}"
curl -X GET "https://app.harness.io/pipeline/api/pipelines/execution/v2/${EXECUTION_ID}" -H "x-api-key: ${API_KEY}"
curl -X PUT "https://app.harness.io/pipeline/api/pipelines/execution/interrupt/${EXECUTION_ID}" -H "x-api-key: ${API_KEY}"

Common Issues

| Issue | Solution | |-------|----------| | Deployment timeout | Increase step timeout | | Image pull failed | Verify connector credentials | | Namespace not found | Check infrastructure definition | | Manifest error | Validate YAML locally | | Approval timeout | Review approval workflow | | Rollback failed | Configure rollback steps |

References