Я использую jenkins для непрерывного развертывания из gitlab в экземпляр контейнера aws ecs ec2. Я использую файл Дженкинса для этой цели. Для регистрации определения задачи при каждом нажатии я поместил json-файл определения задачи в папку aws в gitlab. Можно ли поместить json-файл определения задачи в jenkins, чтобы нам оставалось хранить только файл jenkins в gitlab?
В jenkins / var / lib / jenkins / workspace / jobname есть папка рабочей области, которая создается после первой сборки. Можем ли мы разместить определение задачи в этом месте?
Мой Jenkinsfile вставлен ниже
stage 'Checkout'
git 'git@gitlab.xxxx.com/repo.git'
stage ("Docker build") {
sh "docker build --no-cache -t xxxx:${BUILD_NUMBER}" ."
}
stage("Docker push") {
docker.withRegistry('https://xxxxxxxxxxxx.dkr.ecr.ap-southeast-1.amazonaws.com', 'ecr:regopm:ecr-credentials') {
docker.image("xxxxx:${BUILD_NUMBER}").push(remoteImageTag)
}
}
stage ("Deploy") {
sh "sed -e 's;BUILD_TAG;${BUILD_NUMBER};g' aws/task-definition.json > aws/task-definition-${remoteImageTag}.json"
sh " \
aws ecs register-task-definition --family ${taskFamily} \
--cli-input-json ${taskDefile} \
"
def taskRevision = sh (
returnStdout: true,
script: " aws ecs describe-task-definition --task-definition ${taskFamily} | egrep 'revision' | tr ',' ' '| awk '{print \$2}' "
).trim()
sh " \
aws ecs update-service --cluster ${clusterName} \
--service ${serviceName} \
--task-definition ${taskFamily}:${taskRevision} \
--desired-count 1 \
"
}