6

AWS CodeDeploy を使用して、最新の変更を Github からサーバーにプルしようとしています。私が遭遇している問題は、このエラーが発生しているインストール手順にあります:

Error CodeUnknownError
Script Name
MessageFile already exists at location /data/sites/wordpress/api_now_playing_staging.php
Log Tail

そして、私の appspec.yml は次のようになります。

version: 0.0
os: "linux"
files: 
  - source: "/"
    destination: "/data/sites/wordpress"
permissions:
  - object: /data/sites/wordpress
    pattern: "**"
    owner: wp
    group: nginx
    mode: 755
    type:
      - file

私の質問は、git が CodeDeploy を使用してプルしていると思われる場合、なぜファイルが既に存在するというエラーが発生するのですか? 私は何か間違ったことをしていますか?

4

4 に答える 4

4

同じ git リポジトリを別のデプロイ グループでデプロイしましたか、それとも以前に手動でデプロイしましたか? 同じリソースが宛先フォルダーに既に存在する場合、CodeDeploy は、宛先フォルダーのリソースが同じデプロイ グループによって作成されているかどうかを確認します。同じ展開グループを使用している場合、再展開によってこの問題が発生することはありません。

CodeDeploy ホスト エージェントが動作する現在の方法は、デプロイ アーティファクトをプルダウンし、AppSpec ファイルに従って適切なリポジトリに移動することです。Github リポジトリからデプロイする場合でも、宛先フォルダーで git pull を実行するだけではありません。

于 2016-01-25T23:45:49.437 に答える
2

他のすべての答えは正しいですが、私の意見では、問題を解決できません。ただし、これらは良い出発点です。(短い: codedeploy は、以前の codedeploy では想定できなかったファイルを認識します)

これはデプロイ中に解決できます。「コンテンツ オプション: ターゲット インスタンスのファイルがアプリケーション リビジョンのファイルと同じ名前で、ターゲットの場所が同じ場合、デプロイ中に AWS CodeDeploy が実行するアクションを選択してください。」

失敗、上書き、保持を選択できます。あなたの場合、おそらく上書きが最良の選択です。

これ以上の情報は見つかりません

于 2017-06-26T13:47:37.707 に答える
1

ファイルはサーバーに既に存在するため、CodeDeploy にはフック (BeforeInstall) があり、カスタム スクリプトを実行して既存のファイルをクリーンアップするために使用できます。

于 2016-10-28T05:35:27.590 に答える
0

私はそれを次のように機能させました:

さまざまな理由で、いくつかの展開に失敗しました。問題は、CD が EC2 インスタンスとパス /opt/codedeploy-agent/deployment-root/ に、失敗したデプロイの ID [非常に長い英数字文字列] によって名前が付けられたフォルダーを保持することです。このフォルダを削除し、[aws UI コンソールから] 新しいデプロイを作成して、アプリケーションを再デプロイします。これで成功するはずです。

注意: CD は [特定の展開によって作成されていない] ファイルを書き換えません。

CodeDeploy は、別の CD デプロイや [Jenkins などの] 他の CI/CD ツールに干渉したくないため、コード [ファイル] が既に存在するフォルダーにはデプロイしません。特定のデプロイメントでコードをすでにデプロイしているパスにのみデプロイされます。

展開したいフォルダーを空にして、CD 経由でコードを再展開できます。

于 2016-01-27T11:12:56.013 に答える