Привет всем, у меня есть вопрос о трубопроводе Дженкинс и AWS - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть конвейер, который строит образ, pu sh его в AWS ECR, и последний этап моего конвейера - это команда sh, которая создает сервис в AWS ECS. Есть ли способ, чтобы pu sh имя изображения, которое Дженкинс создал для моего стека облачной информации, чтобы выполнить задачу автоматически?

    stage('Build image') {
      steps {
        script {
          myapp = docker.build("${LOCATION}/${AWS_REPO_NAME}:${env.BUILD_ID}")
        }
      }
    }
    stage('Run image') {
      steps {
          withAWS(region:'${REGION}',credentials:'demo-ecr-credentials') {
          sh "aws ecr get-login-password | docker login --username AWS --password-stdin ${LOCATION}/v2/"
          sh "docker push ${LOCATION}/${AWS_REPO_NAME}:${env.BUILD_ID}"
        }
      }
    }


    stage('Build ECS') {
      steps{
        script {
          sh 'aws cloudformation deploy --template-file cloudformation.yml 
           --stack-name jenkinstack '
         }
       }
     }    
   }
 }

Вот часть моего стека облачной информации:

TaskDefinition:

Type: 'AWS::ECS::TaskDefinition'

DependsOn:

  - VPC

Properties:

  ContainerDefinitions:

    - Name: test

      Cpu: '100'

      Memory: "0.5GB"

      Essential: 'true'

      Image: !Join

        - ''

        - - !Ref 'AWS::AccountId'

          - .dkr.ecr.us-east-1.amazonaws.com/

          - hello-world

          - ':'

          -  **${env.BUILD_ID}** 

      Memory: '300'

      PortMappings:

        - HostPort: 80

          ContainerPort: 80

1 Ответ

0 голосов
/ 25 апреля 2020

Вы можете указать параметр для имени изображения в стеке формирования облака (то есть в формате yml)

--parameter-overrides, используя его, вы можете передать соответствующее значение, сгенерированное jenkins.

...