我正在使用jenkins从gitlab连续部署到AWS ECS EC2容器实例中。我为此使用jenkins文件。为了在每次推送时注册任务定义,我将任务定义json文件放在gitlab的aws文件夹中。是否可以将任务定义json文件放在jenkins中,以便我们只需要在gitlab中保留jenkinsfile?
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 \
"
}
答案 0 :(得分:0)
如果不想使用任务定义,请使用esc-cli作为替代方案,在jenkins节点上安装esc-cli并运行它,但是仍然需要在git上使用docker-compose。