0

我有一個使用CodePipeline + CodeCommit + CodeDeploy到EC2實例的CD工作流程。AWS CodePipeline + CodeDeploy + CodeCommit --file-exists-behavior選項

我除了這個--file-exists-behavior選項外,還有其他的工作。如果我從Aws CLI或控制檯創建部署。部署工作正常。

無論如何,我可以使用CodePipeline這個選項嗎?

如果沒有此選項,我仍然會收到錯誤消息。

The deployment failed because a specified file already exists at this location

+0

類似的解決方案討論:https://stackoverflow.com/questions/41590332/aws-codedeploy-fail-the-deployment-failed-because-a-specified-file-already-exis – Kannaiyan

+0

嗨,Kannaiyan,我讀過這個問題,但它不涉及codePipeline。 –

回答

0

所以,當你部署,CodeDeploy將尋找一個文件(在實例)提供以下資料:先前部署的文件有問題的應用程序/部署組,如果發現該文件它,然後它使用它來清理(刪除)現有文件,準備複製新的修訂文件。

Refer This AWS Documentation

但是如果清理的文件不存在,或者是因爲在現有的代碼最初部署以某種其它方式(例如cloudformation實例用戶數據/元數據源)或CodeDeploy部署基團已被重建爲某些原因,然後清理文件將不存在或不匹配部署組ID。因此它不會被運行。因此,文件不會被清理,並且由於CodeDeploy不會覆蓋文件,所以部署將失敗。

什麼解決方案可能在這種情況下是有一個鉤子(例如BeforeInstall)調用腳本刪除實例上的應用程序文件(如果它們存在)。

希望這有助於

+0

這是否意味着,如果我用CLI或控制檯一次部署文件一次,我不必擔心 - 文件存在行爲選項? –

+0

沒有這個CLI,你仍然需要一個腳本來安裝之前刪除現有的文件 –

相關問題