我真的很喜欢军械库为流水线做的大三角帆代码。我想实现类似的东西。有人可以解释他们可能如何做吗?
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扩展? 如果有人可以分解他们如何实现这一目标作为我的起点,那将真的很有帮助
答案 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])