Spinnaker Pipeline作为代码

mad*_*l10 11 python spinnaker

我真的很喜欢军械库为管道做了什么,作为大三角帆的代码.我想实现类似的东西.有人可以解释他们可能会这样做吗?

https://docs.armory.io/user-guides/dinghy/

{
  "application": "yourspinnakerapplicationname",
  "pipelines": [
    {
      "application": "yourspinnakerapplicationname",
      "keepWaitingPipelines": false,
      "limitConcurrent": true,
      "name": "Made By Armory Pipeline Templates",
      "stages": [
        {{ module "wait.stage.module" }} // Module created in dinghy-templates repo
      ],
      "triggers": []
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

他们为模块创建了自定义jinja扩展吗?如果有人可以分析他们如何能够实现这一点作为我的起点,那将非常有帮助

小智 9

我们以前使用的是带有官方Spinnaker工具的MPT(托管管道模板)roer。我们具有多级部分继承,并且破坏单个模板将不可逆地破坏所有模板。

有使用JSONNET称为一种新的方法sponnet可以在这里。这具有jsonnet附带的优点。它创建的JSON管道可以通过UI,roer或通过新的官方Spinnaker工具加载spin

当前正在针对V2托管管道模板提供设计文件。

Spin和Spinnaker jsonnet库尚处于初期,但我们可以使用以下类似方法在app.jsonnet文件中定义Spinnaker管道。

local deployment = import 'deployment.json';
local kubeutils = import 'kubeutils.libsonnet';
local sponnet = import 'pipeline.libsonnet';

local canaryDeployment = kubeutils.canary(deployment);
local account = 'staging-demo';
local app = 'myapp';

<snip>

local wait = sponnet.stages
             .wait('Wait')
             .withSkipWaitText('Custom wait message')
             .withWaitTime(30);

<snip>

sponnet.pipeline()
.withApplication(app)
.withExpectedArtifacts([expectedDocker, expectedManifest])
.withName('Demo pipeline')
.withNotifications(slack)
.withTriggers([dockerTrigger, gitTrigger])
.withStages([wait, deployManifestTextBaseline, deployManifestTextCanary, 
deployManifestArtifact, findArtifactsFromResource, jenkinsJob])
Run Code Online (Sandbox Code Playgroud)