そのため、アプリケーション用にCodeDeployをセットアップしようとしていますが、デプロイメントのBeforeInstall部分でエラーが発生し続けます。以下はエラーです。
Error Code UnknownError
Script Name
Message No such file or directory - /opt/codedeploy-agent/deployment-root/06100f1b-5495-42d9-bd01-f33d59fb5deb/d-NL5K1THE8/deployment-archive/appspec.yml
Log Tail
これは、YAMLファイルが間違った場所にあることを意味すると思いました。しかし、それは私のリビジョンのルートディレクトリにあります。より複雑なファイルの代わりに、そのような単純なAppSpecファイルを使用してみました。
## YAML Template.
---
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/www
これは最初の展開なので、多かれ少なかれ、リビジョン内のすべてのファイルをWebサーバーのパブリックディレクトリに追加する必要があります。
私はこれで髪を引き裂いていて、それは単純な問題だと感じています。 IAMポリシーとロールが正しく、デプロイ先のインスタンスでCodeDeployをセットアップして実行しています。
ある時点でデプロイが成功したと思われるようです。
/ opt/codedeploy-agent/deployment-root/deployment-instructions /に移動し、そこにあるすべてのファイルを削除します。その後、この最後のデプロイは検索されません。
私はちょうどこの同じ問題を抱えていて、それを理解しました! AppSpecファイルの拡張子が正しいことを確認してください。 yaml
ではなくyml
を使用していましたが、すべてが完全に機能するようになりました。
私はそれを次のように機能させました:
さまざまな理由で、いくつかの展開に失敗しました。 CDはEC2インスタンスとパスに保持されます/ opt/codedeploy-agent/deployment-root /失敗したデプロイメントのIDで指定されたフォルダー[非常に長い英数字の針] 。このフォルダーを削除し、[aws UIコンソールから]新しいデプロイを作成して、アプリケーションを再デプロイします。このようにして、間違った場所にあるappspec.ymlファイルが削除されます。これで成功するはずです。
追加通知:
CDは[特定の展開によって作成されていない]ファイルを書き換えませんCodeDeployは、さまざまなCD展開や他のCI/CDツールに干渉したくないため、すでにコード[ファイル]が存在するフォルダーには展開しません。 [ジェンキンスのように]。特定のデプロイメントでコードをすでにデプロイしているパスにのみデプロイされます。
デプロイメントを実行するフォルダーを空にして、CDを介してコードを再デプロイできます。
ホストにログインすると、そこのディレクトリにappspec.ymlファイルが表示されますか?そうでない場合は、デプロイされた残りのコードでチェックインされていますか?
この問題も発生しました。私の場合、リビジョンZipファイルはデプロイ時にディレクトリに抽出されます。そのための /opt/codedeploy-agent/deployment-root/xxx/xxx/deployment-archive
には、(実際のリビジョンファイルではなく)リビジョンファイルの親ディレクトリが含まれています。
重要なのは、親ディレクトリなしでリビジョンを圧縮することです。 Macターミナルでは、
cd your-app-directory-containing-appspec
Zip -r app.Zip .