У меня также было аналогичное требование для этапа webhooks + Run Job, используя выражения спинакера, которые помогли.
Решили это, выполнив следующие действия:
- Добавьте оба автоматических триггера - реестр Docker и Webhooks
"triggers": [
{
"account": "gcr",
"enabled": true,
"expectedArtifactIds": [
"ARTIFACT_ID_PLACEHOLDER"
],
"fromTrigger": true,
"organization": "ORG_PLACEHOLDER",
"registry": "gcr.io",
"repository": "ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"tag": "${trigger['artifacts'][0]['version']}",
"type": "docker"
},
{
"enabled": true,
"expectedArtifactIds": [
"ARTIFACT_ID_PLACEHOLDER"
],
"source": "WEBHOOK_PLACEHOLDER",
"type": "webhook"
}
]
- Добавьте ожидаемые артефакты
"expectedArtifacts": [
{
"defaultArtifact": {},
"displayName": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"id": "ARTIFACT_ID_PLACEHOLDER",
"matchArtifact": {
"artifactAccount": "docker-registry",
"id": "MATCH_ARTIFACT_ID_PLACEHOLDER",
"name": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"type": "docker/image"
},
"useDefaultArtifact": true,
"usePriorArtifact": false
}
]
- Обновите imageDescription
"imageDescription": {
"account": "gcr",
"fromTrigger": false,
"imageId": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER:${trigger['artifacts'][0]['version']}",
"registry": "gcr.io",
"repository": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"tag": "${trigger['artifacts'][0]['version']}"
}
Окончательный JSON:
{
"appConfig": {},
"expectedArtifacts": [
{
"defaultArtifact": {},
"displayName": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"id": "ARTIFACT_ID_PLACEHOLDER",
"matchArtifact": {
"artifactAccount": "docker-registry",
"id": "MATCH_ARTIFACT_ID_PLACEHOLDER",
"name": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"type": "docker/image"
},
"useDefaultArtifact": true,
"usePriorArtifact": false
}
],
"keepWaitingPipelines": false,
"lastModifiedBy": "",
"limitConcurrent": true,
"spelEvaluator": "v4",
"stages": [
{
"account": "ACCOUNT_PLACEHOLDER",
"annotations": {},
"application": "APPLICATIONNAME_PLACEHOLDER",
"cloudProvider": "kubernetes",
"cloudProviderType": "kubernetes",
"containers": [
{
"args": [],
"command": [],
"envFrom": [],
"envVars": [],
"imageDescription": {
"account": "gcr",
"fromTrigger": false,
"imageId": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER${trigger['artifacts'][0]['version']}",
"registry": "gcr.io",
"repository": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"tag": "${trigger['artifacts'][0]['version']}"
},
"imagePullPolicy": "ALWAYS",
"limits": {},
"name": "CONTAINER_NAME_PLACEHOLDER",
"ports": [
{
"containerPort": 80,
"name": "http",
"protocol": "TCP"
}
],
"requests": {},
"volumeMounts": []
}
],
"dnsPolicy": "ClusterFirst",
"expectedArtifacts": [
{
"defaultArtifact": {},
"displayName": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"id": "ARTIFACT_ID_PLACEHOLDER",
"matchArtifact": {
"artifactAccount": "docker-registry",
"id": "MATCH_ARTIFACT_ID_PLACEHOLDER",
"name": "gcr.io/ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"type": "docker/image"
},
"useDefaultArtifact": false,
"usePriorArtifact": false
}
],
"labels": {},
"name": "STAGE_NAME_PLACEHOLDER",
"namespace": "default",
"nodeSelector": {},
"refId": "1",
"requisiteStageRefIds": [],
"serviceAccountName": "",
"type": "runJob",
"volumeSources": []
}
],
"triggers": [
{
"account": "gcr",
"enabled": true,
"expectedArtifactIds": [
"ARTIFACT_ID_PLACEHOLDER"
],
"fromTrigger": true,
"organization": "ORG_PLACEHOLDER",
"registry": "gcr.io",
"repository": "ORG_PLACEHOLDER/IMAGE_NAME_PLACEHOLDER",
"tag": "${trigger['artifacts'][0]['version']}",
"type": "docker"
},
{
"enabled": true,
"expectedArtifactIds": [
"ARTIFACT_ID_PLACEHOLDER"
],
"source": "WEBHOOK_PLACEHOLDER",
"type": "webhook"
}
],
"updateTs": ""
}
Примечание. Замените XXXX_PLACEHOLDER, например ORG_PLACEHOLDER, IMAGE_NAME_PLACEHOLDER и т. д., в соответствии с вашими требованиями в приведенных выше конфигурациях JSON.
person
Prashanth H
schedule
02.02.2021