¿Cómo puedo arreglar AWS CodePipeline cuando se ejecuta dos veces?

5 minutos de lectura
0

Mi AWS CodePipeline se ejecuta dos veces. ¿Cómo puedo resolver este problema?

Descripción breve

Hay dos motivos habituales por los que AWS CodePipeline se ejecuta más de una vez:

  • El parámetro PollForSourceChanges está establecido en true, lo que provoca un segundo lanzamiento de la canalización por un activador de sondeo.
  • Hay una regla de Eventos de CloudWatch duplicada con el mismo destino que la canalización, y eso hace que esta se ejecute dos veces.

Para resolver el problema, primero consulte el historial de la canalización para confirmar qué es lo que hace que se ejecute dos veces.

Si hay más de un lanzamiento para la misma canalización activado por reglas de Eventos de CloudWatch, elimine o deshabilite las reglas duplicadas.

Si hay lanzamientos de la canalización activados por sondeo, lea la sección Comprender el comportamiento predeterminado del parámetro PollForSourceChanges. A continuación, según su situación, complete los pasos de una de las siguientes secciones:

  • Si creó su canalización con AWS CloudFormation, complete los pasos de la sección Actualizar la plantilla de AWS CloudFormation.
  • Si creó su canalización con la interfaz de la línea de comandos de AWS (AWS CLI), complete los pasos de la sección Actualizar la canalización con un archivo JSON.
  • Si creó su canalización con el AWS SDK, complete los pasos de la sección Actualizar la canalización según la sintaxis de configuración del idioma.

Importante: Actualice la canalización con el mismo método con el que la creó. Evite hacer cambios fuera de banda en su canalización y asegúrese de completar los pasos de la sección que se corresponde únicamente con su situación. Por ejemplo, si creó su canalización con AWS CloudFormation, siga únicamente los pasos de la sección Actualizar la plantilla de AWS CloudFormation.

Resolución

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

Confirmar qué causa que la canalización se ejecute dos veces

  1. Abra la consola de CodePipeline.

  2. En Nombre, elija el nombre de la canalización.

  3. Seleccione Ver historial.

  4. En la columna Activador, compruebe si hay algún lanzamiento duplicado de la canalización activado por reglas de Eventos de CloudWatch o por sondeo.

  5. Si hay más de un lanzamiento activado por reglas de Eventos de CloudWatch, elimine o deshabilite las reglas duplicadas.

-o-

Si hay lanzamientos de la canalización activados por sondeo, siga estos pasos de solución de problemas.

Comprender el comportamiento predeterminado del parámetro PollForSourceChanges

Tenga en cuenta lo siguiente:

  • El comportamiento predeterminado del parámetro PollForSourceChanges viene determinado por el método utilizado para crear la canalización.
  • En muchos casos, el valor de PollForSourceChanges está establecido en true de forma predeterminada y se debe deshabilitar.
  • Si crea la canalización con la consola de CodePipeline, el método de detección del origen se establece automáticamente en Eventos de Amazon CloudWatch (la forma recomendada de detectar cambios en el origen).
  • Si crea la canalización con AWS CloudFormation, la AWS CLI o el AWS SDK y no especifica el método de detección de cambios, PollForSourceChanges se establece en true de forma predeterminada (según el método de creación).
  • Si crea la canalización mediante un método distinto de la consola de CodePipeline y, a continuación, actualiza su canalización fuera de banda mediante la consola, CodePipeline crea automáticamente otra regla de Eventos de CloudWatch.
  • Si crea una regla de Eventos de CloudWatch en la plantilla de AWS CloudFormation o crea un webhook para su repositorio de GitHub versión 1 y no configura el parámetro PollForSourceChanges, tendrá dos formas de detectar cambios en el origen. Esto hace que la canalización se ejecute dos veces.

Actualizar la plantilla de AWS CloudFormation

En su plantilla o archivo de configuración de canalización de AWS CloudFormation, establezca el parámetro PollForSourceChanges en false.

Nota: El parámetro PollForSourceChanges se establece en true de forma predeterminada.

Para obtener más información sobre los webhooks de GitHub versión 1, consulte Utilizar webhooks para iniciar una canalización.

Actualizar la canalización con un archivo JSON

  1. Copie la estructura de la canalización en un archivo JSON:
$ aws codepipeline get-pipeline --name NAME_OF_YOUR_PIPELINE  > pipeline.json
  1. Abra el archivo pipeline.json en un editor de texto y, a continuación, añada el parámetro PollForSourceChanges a la sección de configuración de acciones de origen. Establezca el parámetro en false.

  2. Elimine los siguientes campos de metadatos del archivo:
    «metadatos»:{}
    «creado»
    «pipelineARN»
    «actualizado»
    Importante:
    Las líneas de metadatos deben eliminarse del archivo pipeline.json para que el siguiente comando update-pipeline pueda utilizarlas.

  3. Guarde el archivo pipeline.json y, a continuación, ejecute el siguiente comando update-pipeline para aplicar los cambios al archivo:

$ aws codepipeline update-pipeline --cli-input-json file://pipeline.json

Para obtener más información, consulte Editar una canalización (AWS CLI).

Actualizar la canalización según la sintaxis de configuración del idioma

Para obtener instrucciones sobre cómo actualizar la canalización, consulte la Documentación del SDK en su idioma.

Por ejemplo, si desplegó la canalización con Python, puede establecer PollForSourceChanges en false en la sección de configuración de la canalización.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años