CodeBuild-AWS Pipelineの複数の入力アーティファクト


12

2つのソースリポジトリに依存するAWS CodePipelineを構築しています。「CodeBuild」ステップが複数の入力アーティファクトで指定されている場合、エラーが発生します.. declares 2 input artifacts which is more than the maximum count。ドキュメントには、CodeBuildに1つの入力アーティファクトのみを含めるための厳しい要件があります。

一方、ラムダにはこの制限はありません。Lambdaが2つのアーティファクトを1つのアーティファクトに「マージ」して、CodeBuildに渡すことができる方法を探していました。残念ながら、この主題に関する情報は非常に限られています。

2つのアーティファクトを1つにマージするCodePipeline Lambdaが動作している人はいますか?

ここに画像の説明を入力してください

成果物へのアクセス方法に関するドキュメント。

回答:


6

まったく同じ問題が発生しました。ビルド段階では、2つの別々の場所からの情報を使用する必要があります。

これを一般的な方法で解決するために、2つの汎用ラムダを作成しました。1つは成果物をマージし、もう1つは成果物から特定のファイルを抽出します。どちらの場合も、後続のCodePipelineステージに渡すことができる新しい成果物が作成されます。

https://github.com/tooltwist/codepipeline-artifact-mungeを参照してください

正確な要件を満たしていない場合は、必要なことを行うために微調整するのに十分簡単なはずです。


素晴らしい仕事です、フィリップ、このラムダを共有してくれてありがとう。
ロマニンシュ

4

実際にコードビルドでリポジトリを直接クローンすることで問題を解決しました:

GitHubトークンを渡す:

      - { Name: GITHUB_TOKEN, Value: {Ref: GitHubToken } }
      - { Name: GITHUB_BRANCH, Value: {Ref: GitHubBranch } }

#インストール手順でgit cloneを実行します。

      - git clone --single-branch --depth=1 -b $GITHUB_BRANCH https://gitorgname:$GITHUB_TOKEN@github.com/gitorgname/reponame.git  src/reponame

このソリューションは実装が簡単で、Lambdasに依存せず、2つのプルを実行しても非常に確実に機能することがわかりました。


-{Name ...}は正確にどこに置きますか?
アレックスR

cloudformationを使用してCodeBuildを作成しますが、これはコンソールでも指定できる環境変数です。
ロマニンシュ

2

2018年9月4日の時点で、Amazonは複数の入力ソースのサポートを追加しました。

https://aws.amazon.com/about-aws/whats-new/2018/08/aws-codebuild-adds-ability-to-create-build-projects-with-multiple-input-sources-and-output-アーティファクト/

ドキュメントから:

{
"name": "sample-project",
"source": {
  "type": "S3",
  "location": "bucket/sample.zip"
},
"secondarySources": [
  {
    "type": "CODECOMMIT",
    "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo"
    "sourceIdentifier": "source1"
  },
  {
    "type": "GITHUB",
    "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin"
    "sourceIdentifier": "source2"
  }
],

version: 0.2

phases:
  build:
    commands:
      - cd $CODEBUILD_SRC_DIR_source1
      - touch file1
      - cd $CODEBUILD_SRC_DIR_source2
      - touch file2

artifacts:
  secondary-artifacts:
    artifact1:
      base-directory: $CODEBUILD_SRC_DIR_source1
      files:
        - file1
    artifact2:
      base-directory: $CODEBUILD_SRC_DIR_source2
      files:
        - file2

-1

CodeBuildを確認できます。BuildScpecファイルは、CodeBuildプロジェクトに配置できます。CodeBuildプロジェクト


3
これがどのように質問に答えるかはわかりません。
天柴梅
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.