GitHubリポジトリをS3にフックしようとしているので、コミットがあるたびに、AWSCodePipelineは./<path>/public
指定されたにフォルダーをデプロイしますS3 bucket
。
これまでのところ、私のパイプラインでは、Source
作業(GitHubにフックして新しいコミットを取得)しましたが、次のDeploy
理由で失敗しましたAction execution failed BundleType must be either YAML or JSON
。
これが私がそれらを設定する方法です:
buildspec.yml
ルートフォルダにファイルが必要であることを理解しています。見つけたいくつかのファイルを使用してみましたが、機能していないようです。何を間違えたのですか、またはbuildspec
ファイルを編集して目的の操作を行うにはどうすればよいですか?
更新
@MilanCermakに感謝します。私は私がする必要があることを理解しています:
CodePipeline:
buildspec.yml
、リポジトリのルートフォルダー内のファイルを使用して必要なフォルダーのみを取得します。Action Provider: S3
Input Artifacts: OutputArtifacts (result of stage 2).
Bucket: the bucket that hosts the static website.
CodePipelineは機能します。ただし、出力にはファイル(.html)のみが含まれ、パブリックフォルダー内にネストされたフォルダーは含まれません。
私がチェックしたこれをして考え出して、ネストされたフォルダのパスを削除する方法discard-paths: yes
が、私は内のすべてのサブフォルダを取得することができませんよ./<path>/public
フォルダ。なにか提案を?
CodeDeployは、アプリケーションのデプロイメントを自動化するためのサービスであるため、使用しないでください。CodeBuildは、コマンドを実行し、パイプラインでさらに使用するためにデプロイメントアーティファクトを準備します。
これらのコマンドはbuildspec.yml
ファイルにあります(通常はリポジトリのルートディレクトリにありますが、構成可能です)。ユースケースでは、何もコンパイルしたりテストを実行したりする必要がないため、それほど複雑になることはありません。
出発点としてこれを試してください:
version: 0.2
phases:
build:
commands:
- ls
artifacts:
files:
- public/*
このphases
セクションは必須であるため、含まれています(少なくとも、ls
コマンドのおかげで、CodeBuild環境にどのファイルが存在するかがわかります)が、あなたの場合は面白くありません。興味深いのはartifacts
セクションです。ここで、CodeBuildフェーズの出力、つまりパイプラインの次のステップにさらに渡されるものを定義します。
ファイルをどのように構造化するかによって(たとえば、public
アーティファクトにもディレクトリを作成するか、親ディレクトリを使用せずにファイル自体のみを作成するか)、他の構成を使用することをお勧めします。artifacts
セクションで可能です。詳細については、buildspecリファレンスを参照してください。
CodeBuildステップの出力アーティファクトをDeploytoS3ステップの入力アーティファクトとして使用することを忘れないでください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加