Я пытаюсь запустить тестовый образ докера в kubernetes, который проверит мое приложение. Контейнер приложения и тестовый контейнер имеют одну и ту же версию, которая увеличивается при изменении любого из тестов или приложения. Как я могу динамически определить pod yaml для плагина kubernetes, чтобы я мог получить версию на первом этапе (которая находится за пределами кластера kubernetes), а затем обновить pod yaml, указав правильную версию контейнера?
APP_VERSION = ""
pod_yaml = """
apiVersion: v1
kind: Pod
metadata:
labels:
some-label: ci--my-app
spec:
containers:
- name: test-runner
image: my.docker.registry/app-tester:${-> APP_VERSION}
imagePullPolicy: Always
command:
- cat
tty: true
"""
pipeline {
agent none
stages {
stage('Build and Upload') {
agent { node { label 'builder' } }
steps {
script {
APP_VERSION = sh(
script: "cat VERSION",
returnStdout: true
).trim()
}
}
}
stage('Deploy and Test application') {
agent {
kubernetes {
label 'ci--data-visualizer-kb'
defaultContainer 'jnlp'
yaml pod_yml
}
}
steps {
container('test-runner') {
sh "echo ${APP_VERSION}"
sh "ls -R /workspace"
}
}
}
}
}
Блок kubernetes в конвейере не принимает отложенную оценку строки pod_yaml, которая содержит ${-> APP_VERSION}
. Есть ли обходной путь для этого или я делаю это совершенно неправильно?
PS: я не могу использовать скриптовый конвейер по другим причинам. Итак, я должен придерживаться декларативного конвейера.