Pipelines
Controls access to the Spinnaker pipelines API. Can be used to prevent a user from creating a pipeline.
Most usecases for this API call are better authored against the opa.pipelines package.
- Path: pipelines
- Method: Post
- Package: spinnaker.http.authz
Example Payload
Click to expand
{
  "input": {
    "body": {
      "application": "hostname",
      "expectedArtifacts": [
        {
          "defaultArtifact": {
            "artifactAccount": "myUserName",
            "id": "4aa85178-0618-46c4-b530-6883d393656d",
            "name": "manifests/deploy-spinnaker.yaml",
            "reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
            "type": "github/file",
            "version": "master"
          },
          "displayName": "hostname-deploy",
          "id": "0cf98032-1b0f-48db-9314-09c69293b3a6",
          "matchArtifact": {
            "artifactAccount": "myUserName",
            "customKind": true,
            "id": "3f72ed8e-cb95-454f-9119-2323682121ff",
            "name": "manifests/deploy-spinnaker.yaml",
            "type": "github/file"
          },
          "useDefaultArtifact": true,
          "usePriorArtifact": false
        },
        {
          "defaultArtifact": {
            "artifactAccount": "myUserName",
            "id": "e79162ab-69cb-4ff7-acf4-a8f2875ef8ef",
            "name": "manifests/service-spinnaker.yaml",
            "reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/service-spinnaker.yaml",
            "type": "github/file"
          },
          "displayName": "service-hostname",
          "id": "425d20a8-2942-4902-8d2b-277769a1492c",
          "matchArtifact": {
            "artifactAccount": "myUserName",
            "customKind": true,
            "id": "d7ac7eca-0131-4d54-ab8f-880ff0041e4f",
            "name": "manifests/service-spinnaker",
            "type": "github/file"
          },
          "useDefaultArtifact": true,
          "usePriorArtifact": false
        }
      ],
      "id": "7db1e350-dedb-4dc1-9976-e71f97b5f132",
      "index": 0,
      "keepWaitingPipelines": false,
      "lastModifiedBy": "myUserName",
      "limitConcurrent": true,
      "name": "scale deployments",
      "parameterConfig": [
        {
          "default": "",
          "description": "",
          "hasOptions": false,
          "label": "",
          "name": "replicas",
          "options": [
            {
              "value": ""
            }
          ],
          "pinned": false,
          "required": false
        },
        {
          "default": "staging",
          "description": "",
          "hasOptions": false,
          "label": "",
          "name": "namespace",
          "options": [
            {
              "value": ""
            }
          ],
          "pinned": false,
          "required": true
        }
      ],
      "spelEvaluator": "v4",
      "stages": [
        {
          "account": "spinnaker",
          "cloudProvider": "kubernetes",
          "manifestArtifactId": "0cf98032-1b0f-48db-9314-09c69293b3a6",
          "moniker": {
            "app": "hostname"
          },
          "name": "Deploy (Manifest) g",
          "refId": "2",
          "requisiteStageRefIds": [],
          "skipExpressionEvaluation": false,
          "source": "artifact",
          "trafficManagement": {
            "enabled": false,
            "options": {
              "enableTraffic": false,
              "services": []
            }
          },
          "type": "deployManifest"
        },
        {
          "account": "spinnaker",
          "cloudProvider": "kubernetes",
          "manifestArtifactId": "425d20a8-2942-4902-8d2b-277769a1492c",
          "moniker": {
            "app": "hostname"
          },
          "name": "Deploy service (Manifest)",
          "refId": "3",
          "requisiteStageRefIds": [],
          "skipExpressionEvaluation": false,
          "source": "artifact",
          "trafficManagement": {
            "enabled": false,
            "options": {
              "enableTraffic": false,
              "services": []
            }
          },
          "type": "deployManifest"
        },
        {
          "completeOtherBranchesThenFail": false,
          "continuePipeline": true,
          "failPipeline": false,
          "instructions": "is the new service working?",
          "judgmentInputs": [],
          "name": "Manual Judgment",
          "notifications": [],
          "refId": "4",
          "requisiteStageRefIds": [
            "2",
            "3"
          ],
          "stageTimeoutMs": 60000,
          "type": "manualJudgment"
        },
        {
          "account": "spinnaker",
          "app": "hostname",
          "cloudProvider": "kubernetes",
          "location": "staging",
          "manifestName": "deployment hostname",
          "mode": "static",
          "name": "Scale (Manifest)",
          "refId": "5",
          "replicas": "10",
          "requisiteStageRefIds": [
            "4"
          ],
          "type": "scaleManifest"
        }
      ],
      "triggers": [
        {
          "branch": "master",
          "enabled": true,
          "expectedArtifactIds": [
            "0cf98032-1b0f-48db-9314-09c69293b3a6",
            "425d20a8-2942-4902-8d2b-277769a1492c"
          ],
          "project": "myUserName",
          "secret": "spinnaker",
          "slug": "hostname",
          "source": "github",
          "type": "git"
        }
      ],
      "updateTs": "1620677311000"
    },
    "method": "POST",
    "path": [
      "pipelines"
    ],
    "user": {
      "isAdmin": false,
      "roles": [],
      "username": "myUserName"
    }
  }
}
Example Policy
package spinnaker.http.authz
default message=""
allow=message==""
message="Only admins can save pipelines"{
    input.path[0]!="pipelines"
    input.method="POST"
    input.user.isAdmin!=true
}
Keys
input
| Key | Type | Description | 
|---|---|---|
| input.method | string | Post | 
| input.path[] | string | ["pipelines"] | 
input.body
| Key | Type | Description | 
|---|---|---|
| input.body.application | string | The application for which a pipeline is being saved. | 
| input.body.expectedArtifacts[] | array | See artifacts for more information. | 
| input.body.id | string | The unique ID of the pipeline. | 
| input.body.index | number | |
| input.body.keepWaitingPipelines | boolean | |
| input.body.lastModifiedBy | string | The ID of the last user that modified the pipeline, should match the user in the input.usersfield. | 
| input.body.limitConcurrent | boolean | |
| input.body.name | string | |
| input.body.parameterConfig[].default | string | |
| input.body.parameterConfig[].description | string | |
| input.body.parameterConfig[].hasOptions | boolean | |
| input.body.parameterConfig[].label | string | |
| input.body.parameterConfig[].name | string | |
| input.body.parameterConfig[].options[].value | string | |
| input.body.parameterConfig[].pinned | boolean | |
| input.body.parameterConfig[].required | boolean | |
| input.body.spelEvaluator | string | |
| input.body.updateTs | string | 
input.body.stages
These fields are all stage specific, and may or may not be present depending on the stage type.
| Key | Type | Description | 
|---|---|---|
| input.body.stages[].account | string | The account the stage deploys to. Applies to the following stage types: deployManifest,scaleManifest,deploy. | 
| input.body.stages[].app | string | The name of the application being deployed. Use input.body.applicationinstead. Applies to the following stage types:deployManifest,scaleManifest. | 
| input.body.stages[].baseAmi | string | Only available for the bakestage.If Base AMI is specified, this is used instead of the Base OS provided. | 
| input.body.stages[].baseLabel | string | Only available for the bakestage.Possible values are release,candidate,previous, orunstable. | 
| input.body.stages[].baseOs | string | Only available for the bakestage.Defines what OS should be used to identify a Base AMI if none is specified. | 
| input.body.stages[].cloudProviderType | string | Only available for the bakestage.Defines what cloud provider type is being used. | 
| input.body.stages[].cloudProvider | string | Which specific cloud provider is being used. Applies to the following stage types: deployManifest,scaleManifest, anddeploy. | 
| input.body.stages[].clusters[].account | string | Only available on the deploystage.This is the cluster the stage will deploy to. | 
| input.body.stages[].clusters[].application | string | Only available on the deploystage.This is the application being deployed. | 
| input.body.stages[].clusters[].availabilityZones.<Region>[] | string | Only available on the deploystage.Specifies what availability zones to deploy to. | 
| input.body.stages[].clusters[].capacity.desired | number | Only available on the deploystage.The desired number of instances in the autoscaling group. | 
| input.body.stages[].clusters[].capacity.max | number | Only available on the deploystage.The maximum number of instances in the autoscaling group. | 
| input.body.stages[].clusters[].capacity.min | number | Only available on the deploystage.The minimum number of instances in the autoscaling group. | 
| input.body.stages[].clusters[].cloudProvider | string | Only available on the deploystage.Which cloud provider is being used. | 
| input.body.stages[].clusters[].cooldown | number | Only available on the deploystage.A scaling cooldown helps you prevent your Auto Scaling group from launching or terminating additional instances before the effects of previous activities are visible. | 
| input.body.stages[].clusters[].copySourceCustomBlockDeviceMappings | boolean | Only available on the deploystage.If true, Spinnaker will use the block device mappings of the existing server group when deploying a new server group. | 
| input.body.stages[].clusters[].delayBeforeDisableSec | number | Only available on the deploystage. | 
| input.body.stages[].clusters[].delayBeforeScaleDownSec | number | Only available on the deploystage. | 
| input.body.stages[].clusters[].ebsOptimized | boolean | Only available on the deploystage.True if instances are optomized for EBS. | 
| input.body.stages[].clusters[].freeFormDetails | string | Only available on the deploystage.A string of free-form alphanumeric characters and hyphens to describe any other variables in naming a cluster. | 
| input.body.stages[].clusters[].healthCheckGracePeriod | number | Only available on the deploystage.When an instance launches, Amazon EC2 Auto Scaling uses the value of the healthCheckGracePeriodfor the Auto Scaling group to determine how long to wait before checking the health status of the instance. | 
| input.body.stages[].clusters[].healthCheckType | string | Only available on the deploystage.The value can be either ELBorEC2. | 
| input.body.stages[].clusters[].iamRole | string | Only available on the deploystage.What role is being used to run the instances. | 
| input.body.stages[].clusters[].instanceMonitoring | boolean | Only available on the deploystage.Determines whether to enable detailed monitoring of instances. | 
| input.body.stages[].clusters[].instanceType | string | Only available on the deploystage.The type of instances to deploy to. | 
| input.body.stages[].clusters[].keyPair | string | Only available on the deploystage.The set of security credentials that can be used to connect to this instance. | 
| input.body.stages[].clusters[].maxRemainingAsgs | number | Only available on the deploystage.How many auto scaling groups from prior deployments for this application should be left up and running once the new deployment is complete. | 
| input.body.stages[].clusters[].provider | string | Only available on the deploystage.Defines the cloud provider. | 
| input.body.stages[].clusters[].rollback.onFailure | boolean | Only available on the deploystage.True if the deploy should be automatically rolled back on failure. | 
| input.body.stages[].clusters[].scaleDown | boolean | Only available on the deploystage. | 
| input.body.stages[].clusters[].spotPrice | string | Only available on the deploystage. | 
| input.body.stages[].clusters[].stack | string | Only available on the deploystage. | 
| input.body.stages[].clusters[].strategy | string | Only available on the deploystage.The deployment strategy tells Spinnaker what to do with the previous version of the server group. | 
| input.body.stages[].clusters[].subnetType | string | Only available on the deploystage.The subnet selection determines the VPC in which your server group will run. Options vary by account and region. | 
| input.body.stages[].clusters[].tags.Name | string | Only available on the deploystage.Tags are propagated to the instances in this cluster. | 
| input.body.stages[].clusters[].targetHealthyDeployPercentage | number | Only available on the deploystage. | 
| input.body.stages[].clusters[].terminationPolicies[] | string | Only available on the deploystage.The name of the policy to determine how old instances are terminated. | 
| input.body.stages[].clusters[].useAmiBlockDeviceMappings | boolean | Only available on the deploystage.If true, Spinnaker will use the block device mappings from the selected AMI when deploying a new server group. | 
| input.body.stages[].completeOtherBranchesThenFail | boolean | Prevents any stages that depend on this stage from running, but allows other branches of the pipeline to run. The pipeline is marked as failed once complete. Available for all stages. | 
| input.body.stages[].continuePipeline | boolean | Continues execution of downstream stages, marking this stage as failed/continuing. Available for all stages. | 
| input.body.stages[].failPipeline | boolean | Immediately halts execution of all running stages and fails the entire execution if this stage fails. Available for all stages. | 
| input.body.stages[].instructions | string | Only available on the manual judgementstage.Instructions are shown to the user when making a manual judgment. | 
| input.body.stages[].location | string | Only available on the scale manifeststage.The namespace to scale the manifest in. | 
| input.body.stages[].manifestArtifactId | string | Only available on the deploy manifeststage.The artifact ID to deploy. | 
| input.body.stages[].manifestName | string | Only available on the scale manifeststage.The name of the manifest to scale. | 
| input.body.stages[].mode | string | Only available on the scale manifeststage.Determines whether the stage uses a static or a dynamic selector. | 
| input.body.stages[].moniker.app | string | The application being deployed. | 
| input.body.stages[].name | string | The name of the stage. | 
| input.body.stages[].refId | string | The unique ID for the stage in the stage graph. | 
| input.body.stages[].region | string | The region in which to bake, only available on the bakestage. | 
| input.body.stages[].regions[] | string | The regions in which to bake, only available on the bakestage. | 
| input.body.stages[].replicas | string | |
| input.body.stages[].requisiteStageRefIds[] | string | The unique IDs of other stages that must complete before this stage. | 
| input.body.stages[].skipExpressionEvaluation | boolean | If true then SpEL is not evaluated in artifacts referenced by the stage. | 
| input.body.stages[].source | string | Only applicable to the deploy manifeststage.Specifies whether the manifest should be read from an artifact, or provided as text in the pipeline definition. | 
| input.body.stages[].stageTimeoutMs | number | Only applicable to the manual judgementstage.Specifies how long the user has to provide a judgement. | 
| input.body.stages[].storeType | string | Only applicable in the bakestage. | 
| input.body.stages[].trafficManagement.enabled | boolean | Only applicable to the deploy manifeststage.Allow Spinnaker to associate each ReplicaSet deployed in this stage with one or more Services, and manage traffic based on your selected rollout strategy options. | 
| input.body.stages[].trafficManagement.options.enableTraffic | boolean | Only applicable to the deploy manifeststage.Sends client requests to new pods when traffic management is enabled. | 
| input.body.stages[].type | string | The type of the stage. | 
| input.body.stages[].user | string | Only applicable in the bakestage. | 
| input.body.stages[].vmType | string | Only applicable in the bakestage. | 
input.body.triggers
| Key | Type | Description | 
|---|---|---|
| input.body.triggers[].branch | string | Which branch of the git repository triggers this pipeline. | 
| input.body.triggers[].enabled | boolean | True if the trigger is enabled. | 
| input.body.triggers[].expectedArtifactIds[] | string | |
| input.body.triggers[].project | string | A change in what project will trigger this pipeline. | 
| input.body.triggers[].secret | string | The secret that the trigger uses to authenticate with Spinnaker. | 
| input.body.triggers[].slug | string | The trigger’s slug. For example, with a GitHub trigger this is the project name. | 
| input.body.triggers[].source | string | The type of the source for the trigger. For some trigger types this can be used to disambiguate amongst multiple trigger invokers. | 
| input.body.triggers[].type | string | The configured type of the trigger. | 
input.user
This object provides information about the user performing the action. This can be used to restrict actions by role. See input.user for more information.
Feedback
Was this page helpful?
Thank you for letting us know!
Sorry to hear that. Please tell us how we can improve.
Last modified August 18, 2023: (02b163b7)