Skip to content

micnncim/spincue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spincue

Spinnaker pipeline templates implemented by pure CUE.

This is still experimental implementation, not guaranteeing production usage and can make breaking changes.

Commands

save

save command runs spin command with CUE files.

  • Save a pipeline:
    $ cue -t pipeline=$PIPELINE -t dryrun=false save ./...
  • Plan a pipeline:
    $ cue -t pipeline=$PIPELINE save ./...

dump

dump command displays a raw pipeline with JSON format.

  • Dump a pipeline:
    $ cue -t pipeline=$PIPELINE dump ./...

Examples

base: application: "api"
pipeline: minimal: stages: [{manualJudgement: {}}]
JSON
{
  "name": "minimal",
  "application": "api",
  "stages": [
    {
      "type": "manualJudgment",
      "name": "Manual Judgement",
      "failPipeline": true,
      "requisiteStageRefIds": [],
      "refId": "0"
    }
  ],
  "expectedArtifacts": [
    {}
  ],
  "triggers": [],
  "notifications": [],
  "lastModifiedBy": "fake@spincue.io"
}
base: {
    application:       "api"
    dockerAccount:     "docker-account-1"
    kubernetesAccount: "kubernetes-account-1"
    gcsAccount:        "gcs-account-1"
}

pipeline: nginx: {
    stages: [
        {
            manualJudgement: {}
        },
        {
            name: "Deploy app"
            deploy: {
                image:    "nginx"
                manifest: "gs://spincue/nginx/manifest.yaml"
            }
        },
        {
            wait: duration: 60
        },
    ]

    triggers: [{docker: image: "nginx"}]

    notifications: [{
        address: "development"
        messages: {
            complete: "Deploy complete!"
            failed:   "Deploy failed!"
        }
    }]
}
JSON
{
  "name": "nginx",
  "application": "api",
  "stages": [
    {
      "type": "manualJudgment",
      "name": "Manual Judgement",
      "failPipeline": true,
      "requisiteStageRefIds": [],
      "refId": "0"
    },
    {
      "type": "deployManifest",
      "name": "Deploy app",
      "cloudProvider": "kubernetes",
      "account": "kubernetes-account-1",
      "manifestArtifactId": "1-gcs",
      "requiredArtifactIds": [
        "1-docker"
      ],
      "requisiteStageRefIds": [
        "0"
      ],
      "refId": "1"
    },
    {
      "type": "wait",
      "name": "Wait 60s",
      "waitTime": 60,
      "requisiteStageRefIds": [
        "1"
      ],
      "refId": "2"
    }
  ],
  "expectedArtifacts": [
    {},
    {
      "displayName": "nginx",
      "id": "1-docker",
      "matchArtifact": {
        "type": "docker/image",
        "artifactAccount": "docker-registry",
        "name": "nginx",
        "id": "id"
      },
      "defaultArtifact": {
        "customKind": true,
        "id": "id"
      }
    },
    {
      "displayName": "gs://spincue/nginx/manifest.yaml",
      "id": "1-gcs",
      "matchArtifact": {
        "type": "gcs/object",
        "artifactAccount": "gcs-account-1",
        "name": "gs://spincue/nginx/manifest.yaml",
        "id": "id"
      },
      "defaultArtifact": {
        "type": "gcs/object",
        "artifactAccount": "gcs-account-1",
        "name": "gs://spincue/nginx/manifest.yaml",
        "reference": "gs://spincue/nginx/manifest.yaml",
        "id": "id"
      }
    },
    {}
  ],
  "triggers": [
    {
      "type": "docker",
      "tag": ".*",
      "account": "docker-account-1",
      "expectedArtifactIds": [
        "1-docker"
      ],
      "enabled": true,
      "registry": "docker.io",
      "repository": "nginx"
    }
  ],
  "notifications": [
    {
      "type": "slack",
      "level": "pipeline",
      "when": [
        "pipeline.complete",
        "pipeline.failed"
      ],
      "address": "development",
      "message": {
        "pipeline.complete": {
          "text": "Deploy complete!"
        },
        "pipeline.failed": {
          "text": "Deploy failed!"
        }
      }
    }
  ],
  "lastModifiedBy": "fake@spincue.io"
}

About

CUE implementation of Spinnaker pipelines

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published