Saltar al contenido

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

5 minutos de lectura
0

Quiero solucionar un problema por el que AWS CodePipeline se ejecuta más de una vez.

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 consulta 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, elimina o deshabilita las reglas duplicadas.

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

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

Importante: Actualiza la canalización con el mismo método con el que la creaste. Evita hacer cambios fuera de banda en tu canalización y asegúrate de completar los pasos de la sección que se corresponde únicamente con su situación. Por ejemplo, si creaste tu canalización con AWS CloudFormation, sigue únicamente los pasos de la sección Actualizar la plantilla de AWS CloudFormation.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, comprueba si estás utilizando la versión más reciente de la AWS CLI.

Confirmación de la causa del problema

  1. Abre la consola de CodePipeline.
  2.  En Nombre, selecciona el nombre de la canalización.
  3. Selecciona Ver historial.
  4. En la columna Activador, comprueba 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, elimina o desactiva las reglas duplicadas.
    Si hay lanzamientos de la canalización activados por sondeo, sigue con la siguiente sección de solución de problemas.

Descripción del comportamiento predeterminado del parámetro PollForSourceChanges

Lo siguiente determina el comportamiento de PollForSourceChanges y de las reglas de eventos de CloudWatch:

  • 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 creas 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.
  • Si creas la canalización con AWS CloudFormation, la AWS CLI o el AWS SDK y no especificas 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 creas la canalización mediante un método distinto de la consola de CodePipeline y, a continuación, actualizas la canalización fuera de banda mediante la consola, CodePipeline crea automáticamente otra regla de Eventos de CloudWatch.
  • Si creas una regla de Eventos de CloudWatch en la plantilla de AWS CloudFormation o creas un webhook para tu repositorio de GitHub versión 1 y no configuras el parámetro PollForSourceChanges, tendrás dos formas de detectar cambios en el origen. Esto hace que la canalización se ejecute dos veces.

Confirma que las configuraciones cumplen con estas reglas.

Actualización de la plantilla de AWS CloudFormation

En tu plantilla o archivo de configuración de canalización de AWS CloudFormation, establece 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, consulta Utilizar webhooks para iniciar una canalización.

Actualización de la canalización con un archivo JSON

  1. Copia la estructura de la canalización en un archivo JSON:

    $ aws codepipeline get-pipeline --name NAME_OF_YOUR_PIPELINE  > pipeline.json
  2. Abre el archivo pipeline.json en un editor de texto y, a continuación, añade el parámetro PollForSourceChanges a la sección de configuración de acciones de origen. Establece el parámetro en false.

  3. Elimina los siguientes campos de metadatos del archivo:
    "metadata":{}
    "created"
    "pipelineARN"
    "updated"
    Importante: Las líneas de metadatos deben eliminarse del archivo pipeline.json para que el siguiente comando update-pipeline pueda utilizarlas.

  4. Guarda el archivo pipeline.json y, a continuación, ejecuta 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, consulta Edit a pipeline (AWS CLI) (Edición de 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, consulta la Documentación del SDK en tu idioma.

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

OFICIAL DE AWSActualizada hace un año