#jenkins #kubernetes
Вопрос:
Я объявил следующую подзаголовок для запуска сборки packer ami в моем проекте,
podTemplate(label: "ami-builds", serviceAccount: "default", containers: [
containerTemplate(name: 'packer-builder', image: 'anadimisra/python-hashicorp:1.0', ttyEnabled: true, command: 'sleep', args: '99d'),
]) {
node('ami-builds') {
stage('Build AMI') {
container('packer-builder') {
stage('Packer Build') {
sh '''
export AWS_ACCESS_KEY_ID="${AWS_SECRET_ACCESS_KEY}"
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
export AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}
packer init amis/registry/.
packer build -var="nifi_registry_version=${NIFI_RELEASE_VERSION}"
-var="ami_version=${AMI_VERSION}"
-var="vpc_id=${VPC_ID}"
-var="subnet_id=${SUBNET_ID}" amis/registry/.
'''
}
}
}
}
}
Когда я запускаю сборку Дженкинса, она завершается неудачей на этом этапе packer init .
, потому что упаковщик не может найти никаких hcl
файлов, когда я наблюдаю за блоками из kubectl, переводя в режим сна в блоке sh, я замечаю, что рабочее пространство модуля пустое; в то время как на master у нас есть ветка git, проверенная в /var/jenkins_home/workspace .....
Следовательно, приходим к выводу, что отображение каким-то образом не происходит. Но когда я изменяю этот синтаксис на конвейер с агентом, он работает:
pipeline {
agent {
kubernetes {
label 'ami-builds'
yamlFile 'amis/registry/PythonHashicorpPod.yaml'
}
}
stages {
stage('Packer Build') {
steps {
container('packer-builder') {
sh '''
export AWS_ACCESS_KEY_ID="${AWS_SECRET_ACCESS_KEY}"
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
export AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}
packer init amis/registry/.
packer build -var="nifi_registry_version=${NIFI_RELEASE_VERSION}"
-var="ami_version=${AMI_VERSION}"
-var="vpc_id=${VPC_ID}"
-var="subnet_id=${SUBNET_ID}" amis/registry/.
'''
}
}
}
}
}
и стручок ЯМЛ
apiVersion: v1
kind: Pod
spec:
containers:
- name: packer-builder
image: anadimisra/python-hashicorp:1.1
tty: true
In both cases the Job type is Pipeline
and the build step is Pipeline Scm Script
.
Makes me wonder do we use podTemplates
and pipelines
for inherently different purposes?