【问题标题】:Spinnaker Pipeline as codeSpinnaker 管道即代码
【发布时间】:2018-08-09 14:50:18
【问题描述】:

我真的很喜欢 Armory 将管道作为大三角帆代码所做的工作。我想实现类似的东西。有人可以解释一下他们是如何做到这一点的吗?

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 扩展? 如果有人能详细说明他们是如何实现这一目标的,那对我来说真的很有帮助

【问题讨论】:

标签: python spinnaker


【解决方案1】:

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

有一种使用 JSONNET 的新方法,称为 sponnet 可用 here。 这具有 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])

【讨论】:

  • 急切地等待 v2 文档,因为我有类似的要求
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多