2017-07-25 25 views
1

ドッカー画像のタグとしてAWS CodeBuild Idを使用しようとしています。このドッカーイメージは、CodeBuildのビルド段階で作成されます。 AWSコードパイプライン段階で私のドッカータグであるこのCoudebuild Idを取得したい。 aws codepipelineでこれらのコードビルド環境変数にどのようにアクセスすればよいですか?AWSコードパイプラインのAWS CodeBuild変数へのアクセス

CodeBuildフェーズ:

CodeBuildProject: 
Type: AWS::CodeBuild::Project 
Properties: 
    Artifacts: 
    Location: !Ref ArtifactBucket 
    Type: "S3" 
    Source: 
    Location: !Sub ${ArtifactBucket}/source.zip 
    Type: "S3" 
    BuildSpec: | 
     version: 0.1 
     phases: 
     pre_build: 
      commands: 
      - $(aws ecr get-login --region $AWS_DEFAULT_REGION) 
      - sudo apt-get update 
      - echo Pulling maven image... 
      - docker pull maven:3.3-jdk-8 
      - echo done with the pre build phase 
     build: 
      commands: 
      - echo Build started on `date` 
      - printf "%s" $REPOSITORY_URI 
      - docker run -i --rm -w /opt/maven -v $PWD:/opt/maven -v $HOME/.m2:/root/.m2 maven:3.3-jdk-8 mvn clean install 
      - docker build --file Dockerfile --tag $REPOSITORY_URI:$CODEBUILD_BUILD_ID . 
     post_build: 
      commands: 
      - echo post build 
      - docker push $REPOSITORY_URI:$CODEBUILD_BUILD_ID 
     discard-paths: yes 
    Environment: 
    ComputeType: "BUILD_GENERAL1_LARGE" 
    Image: "aws/codebuild/docker:1.12.1" 
    Type: "LINUX_CONTAINER" 
    EnvironmentVariables: 
     - Name: AWS_DEFAULT_REGION 
     Value: !Ref AWS::Region 
     - Name: REPOSITORY_URI 
     Value: !Sub ${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository} 
     - Name: PipelineName 
     Value: !Ref PipelineName 
    Name: !Ref AWS::StackName 
    ServiceRole: !Ref CodeBuildServiceRole 

ここに私のドッキングウィンドウの画像は、今私のリポジトリURLの組み合わせと私codebuild IDです。私はaws codepipelineの展開段階で、このコードビルドIDを使用したい、どのようにそれを取得するには?次のように

Pipeline: 
Type: AWS::CodePipeline::Pipeline 
Properties: 
    Name: !Ref PipelineName 
    RoleArn: !GetAtt CodePipelineServiceRole.Arn 
    ArtifactStore: 
    Type: S3 
    Location: !Ref ArtifactBucket 
    Stages: 
    - Name: Source 
     Actions: 
     - Name: GitHubRepoSource 
      ActionTypeId: 
      Category: Source 
      Owner: ThirdParty 
      Provider: GitHub 
      Version: 1 
      Configuration: 
      Owner: !Ref GitHubUser 
      Repo: !Ref GitHubRepo 
      Branch: !Ref GitHubBranch 
      OAuthToken: !Ref GitHubToken 
      OutputArtifacts: 
      - Name: GitHubRepoSource 
      RunOrder: 1 
    - Name: Build 
     Actions: 
     - Name: Build 
      ActionTypeId: 
      Category: Build 
      Owner: AWS 
      Version: 1 
      Provider: CodeBuild 
      Configuration: 
      ProjectName: !Ref CodeBuildProject 
      InputArtifacts: 
      - Name: GitHubRepoSource 
      OutputArtifacts: 
      - Name: BuildOutput 
      RunOrder: 1 
    - Name: Deploy 
     Actions: 
     - Name: Deploy 
      ActionTypeId: 
      Category: Deploy 
      Owner: AWS 
      Version: 1 
      Provider: CloudFormation 
      Configuration: 
      ChangeSetName: Deploy 
      ActionMode: CREATE_UPDATE 
      StackName: !Sub "${AWS::StackName}-Service" 
      Capabilities: CAPABILITY_NAMED_IAM 
      TemplatePath: https://s3.amazonaws.com/cicdoveraws-visa/service.yaml 
      RoleArn: !GetAtt CloudFormationExecutionRole.Arn 
      ParameterOverrides: !Sub | 
       { 
       "Tag" : "${}", 
       "DesiredCount": "2", 
       "Cluster": "${ECSCluster}", 
       "TargetGroup": "${ECSTG}", 
       "ImageName": "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/${Repository}:<Tag Name>, 
       "ContainerName": "${ContainerName}", 
       "Cpu": "${Cpu}", 
       "Memory": "${Memory}", 
       "ContainerPort": "${ContainerPort}" 
       } 
      InputArtifacts: 
      - Name: BuildOutput 
      RunOrder: 1 

答えて

1

あなたのパイプラインで、あなたのコードのビルド

post_build: 
     commands: 
     - echo post build 
     - docker push $REPOSITORY_URI:$CODEBUILD_BUILD_ID 
     - printf '{"Tag":"%s"}' "$REPOSITORY_URI:$CODEBUILD_BUILD_ID" > /tmp/build.json 
artifacts: 
    files: /tmp/build.json 
    discard-paths: yes 

のpost_build期にタグ情報とbuild.jsonファイルを書き込むことができ、あなたは今、単にあなたのタグを読み取ることができます。

ParameterOverrides: !Sub | 
{ 
    "Tag" : { "Fn::GetParam" : [ "BuildOutput", "build.json", "Tag" ] }, 
......... 
} 
関連する問題