east - El archivo AWS CodeDeploy Github ya existe
aws github integration (4)
¿Desplegó el mismo repositorio git con un grupo de implementación diferente o lo hizo manualmente antes? Si el mismo recurso ya existe en la carpeta de destino, CodeDeploy comprobará si el recurso en la carpeta de destino es creado por el mismo grupo de implementación. Si está utilizando el mismo grupo de implementación, volver a implementarlo no debería causar este problema.
La forma actual en que funciona el agente de host de CodeDeploy es desplegar los artefactos de implementación y moverlos al depósito correcto según el archivo de AppSpec. Incluso si implementa desde un repositorio Github, no se trata simplemente de ejecutar git pull en la carpeta de destino.
Intento utilizar AWS CodeDeploy para extraer mis últimos cambios de Github a un servidor. El problema con el que me estoy encontrando es en el paso de instalación. Recibo este error:
Error CodeUnknownError
Script Name
MessageFile already exists at location /data/sites/wordpress/api_now_playing_staging.php
Log Tail
Y mi appspec.yml se ve así:
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
Mi pregunta es si se supone que git está usando Pull CodeDeploy, ¿por qué estoy recibiendo el error de archivo ya existe? ¿Estoy haciendo algo mal?
Lo hice funcionar así:
Tuve un par de implementaciones fallidas por varias razones. Lo que sucede es que el CD se mantiene en la instancia de EC2 y en la ruta / opt / codedeploy-agent / deployment-root / una carpeta nombrada por la ID de la implementación fallida [una agudeza alfanumérica muy larga]. Elimine esta carpeta y cree una nueva implementación [desde la consola de UI aws] y vuelva a desplegar la aplicación. Ahora debería tener éxito.
Aviso: el CD no reescribe los archivos [que no han sido creados por su implementación específica]
CodeDeploy no implementa en una carpeta que ya hay código [archivos], ya que no quiere interferir con diferentes implementaciones de CD y / u otras herramientas de CI / CD [como Jenkins]. Solo se implementa en una ruta que ya implementó código con la implementación específica.
Puede vaciar la carpeta donde desea que su implementación suceda y volver a implementar su código a través de CD.
Como el archivo ya existe en el servidor, CodeDeploy tiene enlaces (BeforeInstall) que se pueden utilizar para ejecutar scripts personalizados para limpiar archivos existentes, ya que la instalación de codedeploy no anula los archivos, si ya existen.
Todas las demás respuestas son correctas pero, en mi opinión, no resuelven su problema. Sin embargo, son un buen punto de partida. (abreviado: codedeploy ve un archivo que no era presumible allí en el código anterior implementación)
Esto se puede solucionar durante una implementación: "Opciones de contenido: elija la acción para AWS CodeDeploy durante una implementación cuando un archivo en una instancia de destino tiene el mismo nombre que un archivo en la revisión de la aplicación, para la misma ubicación de destino".
Puede elegir fallar, sobrescribir y retener. Sobrescribir es probablemente la mejor opción en su caso.
No puedes encontrar más información
docs.aws.amazon.com (extrañamente bajo ''rollback'')
cli docs.aws.amazon.com (see --file-exists-behavior (string))