使用詹金斯的AWS ECS EC2连续部署

时间:2019-03-06 17:54:04

标签: docker jenkins jenkins-pipeline continuous-deployment amazon-ecs

我正在使用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                               \
    "
 }

1 个答案:

答案 0 :(得分:0)

如果不想使用任务定义,请使用esc-cli作为替代方案,在jenkins节点上安装esc-cli并运行它,但是仍然需要在git上使用docker-compose。