Apéndice A: Acciones de origen de GitHub (mediante la aplicación OAuth) - AWS CodePipeline

Apéndice A: Acciones de origen de GitHub (mediante la aplicación OAuth)

En este apéndice, se proporciona información sobre la acción de GitHub (mediante la aplicación OAuth) en CodePipeline.

nota

Si bien no recomendamos usar la acción de GitHub (mediante la aplicación OAuth), las canalizaciones existentes con dicha acción seguirán funcionando sin ningún impacto. Para una canalización con una acción de GitHub (mediante la aplicación OAuth), CodePipeline usa tokens basados en OAuth para conectarse a su repositorio de GitHub. Por el contrario, la nueva acción de GitHub (mediante la aplicación de GitHub) usa un recurso de conexión para asociar los recursos de AWS a su repositorio de GitHub. El recurso de conexión usa tokens basados en aplicaciones para conectarse. Para obtener más información sobre cómo actualizar su canalización a la acción de GitHub recomendada que usa una conexión, consulte Actualización de una acción de origen de GitHub (mediante la aplicación OAuth) a una acción de origen de GitHub (mediante la aplicación de GitHub). Para obtener más información sobre el acceso a GitHub basado en OAuth en contraste con el acceso a GitHub basado en aplicaciones, consulte https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps.

Para integrarlo con GitHub, CodePipeline usa una aplicación OAuth de GitHub para su canalización. CodePipeline usa webhooks para administrar la detección de cambios en su canalización con la acción de origen de GitHub (mediante la aplicación OAuth).

nota

Cuando configura una acción de origen de GitHub (mediante la aplicación de GitHub) en CloudFormation, no incluye ninguna información de token de GitHub ni agrega ningún recurso de webhook. Puede configurar un recurso de conexiones como se muestra en AWS: :CodestarConnections: :Connection de la Guía del usuario de CloudFormation.

Esta referencia contiene las siguientes secciones para la acción de GitHub (mediante la aplicación OAuth):

importante

Al crear webhooks de CodePipeline, no utilice sus propias credenciales ni reutilice el mismo token secreto en varios webhooks. Para garantizar una seguridad óptima, genere un token secreto único para cada webhook que vaya a crear. El token secreto es una cadena arbitraria que el propio usuario proporciona y que GitHub utiliza para calcular y firmar las cargas útiles de webhook enviadas a CodePipeline, con el fin de proteger la integridad y autenticidad de las cargas útiles de webhook. Usar sus propias credenciales o reutilizar el mismo token en varios webhooks puede provocar vulnerabilidades de seguridad.

nota

Si se ha proporcionado un token secreto, aparecerá redactado en la respuesta.

Agregación de una acción de origen de GitHub (mediante la aplicación OAuth)

Para agregar acciones de origen de GitHub (mediante la aplicación OAuth) a CodePipeline, haga lo siguiente:

  • Use el asistente de creación de canalización de la consola CodePipeline (Creación de una canalización personalizada (consola)) o la página Editar acción para elegir la opción de proveedor de GitHub. La consola crea un webhook que inicia su canalización cuando cambia la fuente.

  • Usar la CLI para agregar la configuración de la acción GitHub y crear recursos adicionales de la siguiente manera:

    • Utilizar el ejemplo de configuración de acción GitHub en Referencia de acciones de origen de GitHub (mediante la aplicación OAuth) para crear la acción como se muestra en Crear una canalización (CLI).

    • Se desactivan las comprobaciones periódicas y se crea la detección de cambios de forma manual, ya que el método de detección de cambios consiste de forma predeterminada en iniciar la canalización sondeando la fuente. Migre la canalización de sondeo a webhooks para las acciones de GitHub (mediante la aplicación OAuth).

Referencia de acciones de origen de GitHub (mediante la aplicación OAuth)

nota

Si bien no recomendamos usar la acción de GitHub (mediante la aplicación OAuth), las canalizaciones existentes con dicha acción seguirán funcionando sin ningún impacto. Para una canalización con una acción de origen de GitHub (mediante la aplicación OAuth), CodePipeline usa tokens basados en OAuth para conectarse a su repositorio de GitHub. Por el contrario, la nueva acción de GitHub (mediante la aplicación de GitHub) usa un recurso de conexión para asociar los recursos de AWS a su repositorio de GitHub. El recurso de conexión usa tokens basados en aplicaciones para conectarse. Para obtener más información sobre cómo actualizar su canalización a la acción de GitHub recomendada que usa una conexión, consulte Actualización de una acción de origen de GitHub (mediante la aplicación OAuth) a una acción de origen de GitHub (mediante la aplicación de GitHub).

Activa la canalización cuando se realiza una nueva confirmación en el repositorio y ramificación de GitHub configurados.

Para integrarse con GitHub, CodePipeline utiliza una aplicación OAuth o un token de acceso personal para su canalización. Si usa la consola para crear o editar su canalización, CodePipeline crea un webhook de GitHub que inicia su canalización cuando se produce un cambio en el repositorio.

Debe haber creado ya una cuenta y un repositorio de GitHub antes de conectar la canalización a través de una acción de GitHub.

Si desea limitar el acceso de CodePipeline a los repositorios, cree una cuenta de GitHub y otorgue a la cuenta acceso solo a los repositorios que desea integrar con CodePipeline. Use esa cuenta cuando configure CodePipeline para usar repositorios de GitHub para etapas de origen en canalizaciones.

Para obtener más información, consulte la documentación del desarrollador de GitHub en el sitio web de GitHub.

Tipo de acción

  • Categoría: Source

  • Propietario: : ThirdParty

  • Proveedor: GitHub

  • Versión: 1

Parámetros de configuración

Propietario

Obligatorio: sí

El nombre del usuario u organización de GitHub que posee el repositorio de GitHub.

Repo

Obligatorio: sí

El nombre del repositorio en el que se van a detectar los cambios de origen.

Crear ramificaciones

Obligatorio: sí

El nombre de la ramificación donde se van a detectar los cambios de origen.

OAuthToken

Obligatorio: sí

Representa el token de autenticación de GitHub que permite a CodePipeline realizar operaciones en su repositorio de GitHub. La entrada siempre se muestra como una máscara de cuatro asteriscos. Representa uno de los siguientes valores:

  • Cuando utiliza la consola para crear la canalización, CodePipeline utiliza un token OAuth para registrar la conexión a GitHub.

  • Cuando utiliza AWS CLI para crear la canalización, puede pasar un token de acceso personal de GitHub en este campo. Sustituya los asteriscos (****) por el token de acceso personal que copió de GitHub. Cuando ejecute get-pipeline para ver la configuración de la acción, aparecerá la máscara de cuatro asteriscos de este valor.

  • Si utiliza una plantilla de CloudFormation para crear la canalización, primero deberá guardar el token como un secreto en AWS Secrets Manager. El valor de este campo debe incluirse como una referencia dinámica al secreto almacenado en Secrets Manager, como {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}.

Para obtener más información sobre los ámbitos de GitHub, consulte la GitHub Developer API Reference en el sitio web de GitHub.

PollForSourceChanges

Obligatorio: no

PollForSourceChanges controla si CodePipeline sondea el repositorio de GitHub para los cambios de origen. Le recomendamos que utilice webhooks para detectar cambios de código fuente en su lugar. Para obtener más información acerca de la configuración de webhooks, consulte Migración de canalizaciones de sondeo a webhooks (acciones de origen de GitHub (mediante la aplicación OAuth)) (CLI) o Actualización de canalizaciones para eventos de inserción (acciones de origen de GitHub (mediante la aplicación OAuth)) (plantilla de CloudFormation).

importante

Si tiene la intención de configurar webhooks, debe establecer PollForSourceChanges en false evitar ejecuciones de canalizaciones duplicadas.

Los valores válidos para este parámetro son:

  • True: si está configurado, CodePipeline sondea su repositorio para detectar cambios de origen.

    nota

    Si se omite PollForSourceChanges, CodePipeline sondea de forma predeterminada el repositorio para detectar cambios de origen. Este comportamiento es el mismo que si PollForSourceChanges se establece en true.

  • False: si se establece, CodePipeline no sondea su repositorio para detectar cambios de origen. Utilice esta opción si desea configurar un webhook para detectar cambios de código fuente.

Artefactos de entrada

  • Número de artefactos: 0

  • Descripción: los artefactos de entrada no se aplican a este tipo de acción.

Artefactos de salida

  • Número de artefactos: 1

  • Descripción: el artefacto de salida de esta acción es un archivo ZIP que contiene el contenido del repositorio configurado y la ramificación en la confirmación especificada como la revisión de origen para la ejecución de la canalización. Los artefactos generados desde el repositorio son los artefactos de salida para la acción de GitHub. El ID de confirmación de código fuente se muestra en CodePipeline como la revisión de origen para la ejecución de canalización desencadenada.

Variables de salida

Cuando se configura, esta acción produce variables a las que se puede hacer referencia mediante la configuración de acción de una acción descendente en la canalización. Esta acción produce variables que se pueden ver como variables de salida, incluso si la acción no tiene un espacio de nombres. Configure una acción con un espacio de nombres para que esas variables estén disponibles para la configuración de las acciones posteriores.

Para obtener más información acerca de las variables en CodePipeline, consulte Referencia de variables.

CommitId

El ID de confirmación de GitHub que desencadenó la ejecución de la canalización. Los ID de confirmación son el volumen de dispositivo raíz completo de la confirmación.

CommitMessage

El mensaje de descripción, si lo hay, asociado a la confirmación que desencadenó la ejecución de la canalización.

CommitUrl

La dirección URL de la confirmación que activó la canalización.

RepositoryName

El nombre del repositorio de GitHub donde se realizó la confirmación que activó la canalización.

BranchName

El nombre de la ramificación del repositorio de GitHub donde se realizó el cambio de código fuente.

AuthorDate

Fecha en la que se creó la confirmación, en formato de marca temporal.

CommitterDate

Fecha en la que se ha confirmado la confirmación, en formato de marca temporal.

Declaración de acciones (ejemplo de GitHub)

YAML
Name: Source Actions: - InputArtifacts: [] ActionTypeId: Version: '1' Owner: ThirdParty Category: Source Provider: GitHub OutputArtifacts: - Name: SourceArtifact RunOrder: 1 Configuration: Owner: MyGitHubAccountName Repo: MyGitHubRepositoryName PollForSourceChanges: 'false' Branch: main OAuthToken: '{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}' Name: ApplicationSource
JSON
{ "Name": "Source", "Actions": [ { "InputArtifacts": [], "ActionTypeId": { "Version": "1", "Owner": "ThirdParty", "Category": "Source", "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceArtifact" } ], "RunOrder": 1, "Configuration": { "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}" }, "Name": "ApplicationSource" } ] },

Conexión a GitHub (OAuth)

La primera vez que utilice la consola para añadir un repositorio de GitHub a una canalización, se le solicita que autorice a CodePipeline el acceso a los repositorios. El token requiere los siguientes ámbitos de GitHub:

  • El ámbito repo, que se utiliza para controlar totalmente la lectura y la extracción artefactos de los repositorios públicos y privados en una canalización.

  • El ámbito admin:repo_hook, que se utiliza para el control total de enlaces de repositorio.

Cuando utiliza la CLI o una plantilla de CloudFormation, debe proporcionar el valor para un token de acceso personal que ya ha creado en GitHub.

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.