三角帆管道为代码

时间:2018-08-09 14:50:18

标签: 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": []
    }
  ]
}

他们是否为 module 创建了自定义的Jinja扩展? 如果有人可以分解他们如何实现这一目标作为我的起点,那将真的很有帮助

1 个答案:

答案 0 :(得分:7)

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

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

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

旋转和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])