2016-01-22 71 views
4

我正在嘗試使用AWS CodeDeploy將我的最新更改從Github下拉到服務器。我遇到的問題是在安裝步驟我收到此錯誤: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,爲什麼我得到文件已經存在的錯誤?難道我做錯了什麼?

回答

2

你是否部署了與其他部署組相同的git倉庫,或者以前是否手動部署過?如果目標文件夾中已存在相同的資源,CodeDeploy將檢查目標文件夾中的資源是否由相同的部署組創建。如果您使用的是相同的部署組,則重新部署不應導致此問題。

CodeDeploy主機代理工作的當前方式是根據AppSpec文件將部署工件拉下並移動到正確的存儲庫。即使你從Github倉庫進行部署,它不僅僅是在目標文件夾中運行git pull。

0

我做了這樣的工作:

我有幾個失敗的部署由於各種原因。問題在於,CD保留在EC2實例中,並位於/ opt/codedeploy-agent/deployment-root /一個由失敗部署ID [非常長的字母數字刺探]命名的路徑中。刪除此文件夾並從[aws UI控制檯]創建新的部署並重新部署應用程序。它現在應該成功。

注意:CD不重寫文件[尚未由它創建的具體部署]

CodeDeploy沒有一個文件夾中的部署,已經有代碼[文件],因爲它不希望與不同的干擾CD部署和/或其他CI/CD工具[如詹金斯]。它只部署在已經部署了特定部署代碼的路徑中。

您可以清空您的部署想要發生的文件夾,並通過CD重新部署您的代碼。

+0

我在'/ opt/codedeploy-agent/deployment-root/<包含dep的目錄內刪除了一切(所有以前部署對應的所有目錄,因爲它是我的測試設置) loyments>'現在我得到這個錯誤 - '沒有這樣的文件或目錄 - /opt/codedeploy-agent/deployment-root/edbe4bd2-3999-4820-b782-42d8aceb18e6/d-8C01LCBMG/deployment-archive/appspec.yml ',這似乎是對應於上一次成功構建的appspec文件。看起來在這之後,事情已經到了一個不穩定的狀態。 –

+0

不知道我應該繼續並刪除部署根目錄中的所有內容。 –

1

由於該文件已存在於服務器中,因此CodeDeploy具有掛鉤(BeforeInstall),可用於運行自定義腳本來清理現有文件,因爲codedeploy Install在文件已存在時不覆蓋文件。

1

所有其他的答案是正確的,但在我看來,沒有解決你的問題。然而,它們是一個很好的起點。 (簡稱:codedeploy認爲這是不是在以前codedeploy推測有一個文件)

這是一個部署期間可解:「內容選項: 選擇行動AWS CodeDeploy到部署過程中需要在文件上目標實例與應用程序修訂中的文件具有相同的名稱,用於相同的目標位置。「

您可以選擇失敗,覆蓋並保留。覆蓋可能是您的案例中的最佳選擇。

你不能找到更多的信息

相關問題