Интерполяция строк внутри PodTemplate в Jenkinsfile

Я пытаюсь добавить значение image_tag и региона внутри подшаблона, но это не работает. Ошибка failed to add image information to the policy rule context: invalid image 'aws-cli:${image_version}' (bad image: docker.io/aws-cli:${image_version}, defaultRegistry: docker.io, enableDefaultRegistryMutation: true: invalid reference format)

Я использую этот плагин https://plugins.jenkins.io/kubernetes/

image_version = '2.15.40'
region = 'us-east-1'
podTemplate(yaml: '''
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        label: label
    spec:
     containers:
     - name: aws-cli:${image_version}
       image: 
       env:
       - name: AWS_REGION
         value: ${region}
       resources:
         requests:
           cpu: "2"
           memory: "3Gi"
         limits:
           cpu: "2"
           memory: "3Gi"
       alwaysPullImage: true
       tty: true
       securityContext:
         privileged: true
''')
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
1
0
70
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы используете строку с тройными одинарными кавычками ''', которая не выполняет интерполяцию переменных. Вместо этого вам нужно использовать строки в тройных двойных кавычках """. См. отличную документацию.

Сценарий Groovy допускает интерполяцию строк только внутри двойных кавычек ("). Содержимое будет восприниматься как текст без какой-либо оценки переменных, если вы используете одинарные кавычки (') для сценария. В вашем случае вам нужно использовать три двойные кавычки («»») для интерполяции переменных. В то же время вам необходимо использовать одинарную кавычку(') для блока запроса ресурсов. Взгляните на пример ниже, чтобы понять правильно.

podTemplate(yaml: """
apiVersion: v1 
kind: Pod 
metadata: 
  labels: 
    label: label 
spec: 
 containers:
   - name: aws-cli-container
     image: aws-cli:${image_version}
     env: 
       - name: AWS_REGION 
         value: ${region} 
     resources: 
       requests: 
         cpu: '2' 
         memory: '3Gi' 
       limits: 
         cpu: '2' 
         memory: '3Gi' 
     alwaysPullImage: true 
     tty: true 
     securityContext: 
       privileged: true  
""")

Ознакомьтесь с этим документом для получения более подробной информации об интерполяции переменных Groovy.

Другие вопросы по теме