Creación de una canalización, etapas y acciones
Puede usar la consola de AWS CodePipeline o la AWS CLI para crear una canalización. Las canalizaciones deben tener dos etapas como mínimo. La primera etapa de una canalización debe ser una etapa de origen. La canalización debe tener al menos otra etapa que sea una etapa de compilación o implementación.
importante
Como parte de la creación de una canalización, CodePipeline utilizará un bucket de artefactos de S3 proporcionado por el cliente para los artefactos. (Es diferente del bucket que se usa para una acción de origen de S3). Si el bucket de artefactos de S3 se encuentra en una cuenta diferente a la cuenta de su canalización, asegúrese de que el bucket de artefactos de S3 pertenezca a Cuentas de AWS que sean seguras y fiables.
Puede agregar a una canalización acciones que se encuentren en una Región de AWS diferente a la de la canalización. Una acción entre regiones es aquella en la que un servicio de Servicio de AWS es el proveedor de la acción y el tipo de acción o el tipo de proveedor se encuentran en una región de AWS distinta a la de la canalización. Para obtener más información, consulte Agregar una acción entre regiones en CodePipeline.
También puede crear canalizaciones que creen e implementen aplicaciones basadas en contenedores utilizando Amazon ECS como proveedor de implementación. Antes de crear una canalización que implemente aplicaciones basadas en contenedores con Amazon ECS, debe crear un archivo de definiciones de imágenes, tal y como se describe en Referencia del archivo de definiciones de imágenes.
CodePipeline utiliza métodos de detección de cambios para comenzar la canalización cuando se envía un cambio de código fuente. Estos métodos de detección se basan en el tipo de código fuente:
-
CodePipeline utiliza Eventos de Amazon CloudWatch para detectar cambios en el repositorio y la ramificación de origen en CodeCommit o en el bucket de origen de S3.
nota
Si utiliza la consola para crear o editar una canalización, los recursos de detección de cambios se crean automáticamente. Si utiliza la CLI de AWS para crear la canalización, debe crear los recursos adicionales. Para obtener más información, consulte acciones de origen de CodeCommit y EventBridge.
Temas
Creación de una canalización personalizada (consola)
Para crear una canalización personalizada en la consola, necesita proporcionar la ubicación del archivo de código fuente e información acerca de los proveedores que utilizará para las acciones.
Cuando se usa la consola para crear una canalización, se debe incluir una etapa de código fuente y una de las siguientes etapas, o ambas:
-
Una etapa de compilación.
-
Una etapa de implementación.
Cuando se usa el asistente para crear canalizaciones, CodePipeline crea los nombres de las etapas (origen, compilación, ensayo). Estos nombres no se pueden cambiar. Puede usar nombres más específicos, como CompilarEnGamma o ImplementarEnProd, a las etapas que añada con posterioridad.
Paso 1: Crear la canalización y asignarle un nombre
Inicie sesión en la Consola de administración de AWS y abra la consola de CodePipeline en http://console.aws.amazon.com/codesuite/codepipeline/home
. -
En la página Welcome, elija Create pipeline.
Si es la primera vez que usa , seleccione Comenzar.
-
En la página Paso 1: elección de la opción de creación, en Opciones de creación, seleccione la opción Crear una canalización personalizada. Elija Siguiente.
-
En la página Paso 2: elegir la configuración de la canalización, en Nombre de la canalización, escriba el nombre de la canalización.
En una misma cuenta de AWS, cada canalización que se cree en una región de AWS debe tener un nombre único. Los nombres se pueden reutilizar para canalizaciones de regiones diferentes.
nota
Después de crear una canalización, no podrá cambiar el nombre. Para obtener información acerca de otras limitaciones, consulte Cuotas en AWS CodePipeline.
-
En Tipo de canalización, elija una de las siguientes opciones: Los tipos de canalización difieren en características y precio. Para obtener más información, consulte Tipos de canalización.
-
Las canalizaciones de tipo V1 tienen una estructura JSON que contiene parámetros estándares de canalización, etapa y nivel de acción.
-
Las canalizaciones de tipo V2 tienen la misma estructura que las de tipo V1, además de compatibilidad con parámetros adicionales, como los desencadenadores en las etiquetas de Git y las variables a nivel de canalización.
-
-
En Service role (Rol de servicio), realice una de las operaciones siguientes:
-
Elija Nuevo rol de servicio para permitir que CodePipeline cree un rol de servicio en IAM.
-
Elija Existing service role (Rol de servicio existente) para utilizar un rol de servicio que ya se ha creado en IAM. En Role ARN (ARN del rol), elija en la lista el ARN del rol de servicio.
nota
En función de cuándo se haya creado el rol de servicio, es posible que tenga que actualizar los permisos para que admita más Servicios de AWS. Para obtener más información, consulte Añadir permisos al rol de servicio de CodePipeline.
Para obtener más información acerca del rol de servicio y su instrucción de política, consulte Administrar el rol de servicio CodePipeline.
-
-
(Opcional) En Variables, seleccione Añadir variable para añadir variables a nivel de canalización.
Para obtener más información acerca de las variables a nivel de canalización, consulte Referencia de variables. Para ver un tutorial con una variable a nivel de canalización que se transfiere en el momento de la ejecución de la canalización, consulte Tutorial: Uso de variables a nivel de canalización.
nota
Si bien es opcional añadir variables a nivel de canalización, en el caso de una canalización especificada con variables a nivel de canalización en la que no se proporcionen valores, la ejecución de la canalización fallará.
-
(Opcional) Expanda Advanced settings (Configuración avanzada).
-
En Artifact store (Almacén de artefactos), ejecute una de estas acciones:
-
Seleccione Ubicación predeterminada para utilizar el almacén de artefactos predeterminado (por ejemplo, el bucket de artefactos de S3 designado como predeterminado) con la canalización en la Región de AWS que haya seleccionado para esta.
-
Elija Custom location (Ubicación personalizada) si ya dispone de un almacén de artefactos (por ejemplo, un bucket de artefactos de S3) en la misma región que la canalización. En Bucket, elija el nombre del bucket.
nota
Este no es el bucket de origen para su código fuente. Este es el almacén de artefactos de la canalización. Cada canalización debe tener su propio almacén de artefactos independiente, como un bucket de S3. Al crear o editar una canalización, debe tener un bucket de artefactos en la región de la canalización y un bucket de artefactos en cada región de AWS en la que ejecute una acción.
Para obtener más información, consulte Artefactos de entrada y salida y Referencia de estructura de canalización de CodePipeline.
-
-
(Opcional) En Encryption key (Clave de cifrado), realice una de las siguientes operaciones:
-
Si desea utilizar el valor predeterminado de AWS KMS key de CodePipeline para cifrar los datos en el almacén de artefactos de canalización (el bucket de S3), elija Clave predeterminada administrada de AWS).
-
Si desea utilizar su clave administrada por el cliente para cifrar los datos del almacén de artefactos de canalización (bucket de S3), elija Clave administrada por el cliente. Elija el ID de clave, el ARN de clave o el ARN de alias.
-
-
Elija Siguiente.
Paso 2: Crear una etapa de código fuente
-
En la página Paso 3: agregar la etapa de origen, en Proveedor de origen, elija el tipo de repositorio en el que se almacena el código fuente y, a continuación, especifique las opciones obligatorias. Los campos adicionales se muestran según el proveedor de origen seleccionado de la siguiente manera.
-
Para Bitbucket Cloud, GitHub (mediante la aplicación de GitHub), GitHub Enterprise Server, GitLab.com o GitLab autoadministrado:
-
En Conexión, seleccione una conexión existente o cree una nueva. Para crear o administrar una conexión para su acción de origen de GitHub, consulte Conexiones de GitHub.
-
Elija el repositorio que desea usar como ubicación de origen para la canalización.
Elija agregar un desencadenador o filtrar los tipos de desencadenadores para iniciar la canalización. Para obtener más información acerca de cómo trabajar con desencadenadores, consulte Agregación de desencadenadores con tipos de eventos de solicitud de inserción o extracción de código. Para obtener más información acerca de filtros con patrones de glob, consulte Trabajar con patrones glob en la sintaxis.
-
En Formato del artefacto de salida, debe elegir el formato de los artefactos.
-
Para almacenar artefactos de salida de la acción de GitHub utilizando el método predeterminado, elija CodePipeline predeterminado. La acción obtiene acceso a los archivos del repositorio de GitHub y almacena los artefactos en un archivo ZIP en el almacén de artefactos de canalización.
-
Para almacenar un archivo JSON que contiene una referencia URL al repositorio de manera que las acciones posteriores puedan ejecutar comandos Git directamente, elija Clonación completa. Esta opción solo se puede utilizar en acciones de CodeBuild posteriores.
Si elige esta opción, tendrá que añadir los permisos a su rol de servicio CodeBuild, tal y como se muestra en Solución de problemas de CodePipeline. Para ver un tutorial que muestra cómo utilizar la opción Clonación completa, consulte Tutorial: Usar una clonación completo con un origen de canalización de GitHub.
-
-
-
Para Amazon S3:
-
En Amazon S3 location (Ubicación de Amazon S3), proporcione el nombre del bucket de S3 y la ruta del objeto de un bucket con control de versiones habilitado. El formato del nombre de bucket y la ruta tiene un aspecto similar a este:
s3://bucketName/folderName/objectNamenota
Si Amazon S3 es el proveedor de origen de la canalización, debe comprimir los archivos de origen en un solo archivo.zip y cargarlo en el bucket de origen. También puede cargar un archivo sin comprimir; sin embargo, se producirá un error en las acciones posteriores que esperan un archivo.zip.
-
Después de elegir el bucket de origen de S3, CodePipeline crea la regla de Eventos de Amazon CloudWatch y el registro de seguimiento de AWS CloudTrail que se va a usar para esta canalización. En Change detection options, deje los valores predeterminados. Esto permite a CodePipeline utilizar Eventos de Amazon CloudWatch y AWS CloudTrail para detectar cambios en la nueva canalización. Elija Siguiente.
-
-
En AWS CodeCommit:
-
En Nombre de repositorio, elija el nombre del repositorio de CodeCommit que desea usar como ubicación de origen para la canalización. En Branch name, en la lista desplegable, elija la ramificación que desee usar.
-
En Formato del artefacto de salida, debe elegir el formato de los artefactos.
-
Para almacenar artefactos de salida de la acción de CodeCommit utilizando el método predeterminado, elija CodePipeline predeterminado. La acción obtiene acceso a los archivos del repositorio de CodeCommit y almacena los artefactos en un archivo ZIP en el almacén de artefactos de canalización.
-
Para almacenar un archivo JSON que contiene una referencia URL al repositorio de manera que las acciones posteriores puedan ejecutar comandos Git directamente, elija Clonación completa. Esta opción solo se puede utilizar en acciones de CodeBuild posteriores.
Si elige esta opción, tendrá que añadir el permiso
codecommit:GitPulla su rol de servicio de CodeBuild, tal y como se muestra en Añadir permisos de GitClone de CodeBuild para las acciones de origen de CodeCommit. También deberá agregar los permisoscodecommit:GetRepositorya su rol de servicio de CodePipeline, tal y como se muestra en Añadir permisos al rol de servicio de CodePipeline. Para ver un tutorial que muestra cómo utilizar la opción Clonación completa, consulte Tutorial: Usar una clonación completo con un origen de canalización de GitHub.
-
-
Después de elegir el nombre del repositorio y la ramificación de CodeCommit, aparece un mensaje en Cambiar opciones de detección que muestra la regla de Eventos de Amazon CloudWatch que se creará para esta canalización. En Change detection options, deje los valores predeterminados. Esto permite a CodePipeline utilizar Eventos de Amazon CloudWatch para detectar cambios en la nueva canalización.
-
-
Para Amazon ECR:
-
En Nombre de repositorio, elija el nombre de su repositorio de Amazon ECR.
-
En Image tag (Etiqueta de imagen), especifique el nombre de la imagen y la versión, si es diferente de LATEST.
-
En Output artifacts (Artefactos de salida), elija el valor predeterminado del artefacto de salida, como, por ejemplo, MyApp, que contiene el nombre de la imagen y la información del URI del repositorio que desea que utilice la siguiente etapa.
Para ver un tutorial sobre cómo crear una canalización para Amazon ECS con implementaciones azul/verde de de CodeDeploy que incluya una etapa de origen de Amazon ECR, consulte Tutorial: Crear una canalización con un origen de Amazon ECR y una implementación de ECS-to-CodeDeploy.
Cuando se incluye una etapa de origen de Amazon ECR en la canalización, la acción de origen genera un archivo
imageDetail.jsoncomo artefacto de salida al confirmar un cambio. Para obtener más información sobre el archivoimageDetail.json, consulte Archivo imageDetail.json para las acciones de implementación blue/green de . -
nota
El objeto y el tipo de archivo deben ser compatibles con el sistema de implementación que planea usar (por ejemplo, Elastic Beanstalk o CodeDeploy). Algunos tipos de archivos compatibles son .zip, .tar, y .tgz. Para obtener más información acerca de los tipos de contenedores compatibles con Elastic Beanstalk, consulte Personalización y configuración de entornos y Plataformas compatibles. Para obtener más información acerca de la implementación de revisiones con CodeDeploy, consulte Cargar la revisión de la aplicación y Preparar una revisión.
-
-
Para configurar la etapa para el reintento automático, seleccione Habilitar el reintento automático en caso de fallo de una etapa. Para obtener más información acerca del reintento automático, consulte Configuración de una etapa para el reintento automático en caso de fallo.
-
Elija Siguiente.
Paso 4: creación de una etapa de compilación
Este paso es opcional si tiene previsto crear una etapa de implementación.
-
En la página Paso 4: agregación de una etapa de compilación, realice una de las siguientes acciones y, después, elija Siguiente:
-
Elija Omitir etapa de compilación si tiene previsto crear una etapa de prueba o implementación.
-
Para elegir la acción de Comandos para la etapa de compilación, elija Comandos.
nota
Si ejecuta la acción de Comandos, se le cobrarán cargos por separado en AWS CodeBuild. Si tiene previsto insertar comandos de compilación como parte de una acción de CodeBuild, elija Otros proveedores de compilación y, a continuación, seleccione CodeBuild.
En Comandos, introduzca los comandos del intérprete de comandos para su acción. Para obtener más información acerca de la acción de Comandos, consulte Referencia de la acción de Comandos.
-
Para elegir otros proveedores de compilación, como CodeBuild, seleccione Otros proveedores. En Build provider (Proveedor de compilación), elija el proveedor de acciones personalizadas de servicios de compilación y proporcione los detalles de la configuración para ese proveedor. Si desea ver un ejemplo de cómo añadir Jenkins como proveedor de compilación, consulte Tutorial: Crear una canalización de cuatro etapas.
-
En Build provider (Proveedor de compilación), elija AWS CodeBuild.
En Región, elija la región de AWS en la que reside el recurso. El campo Región designa dónde se crean los recursos de AWS para este tipo de acción y de proveedor. Este campo solo se muestra en el caso de las acciones en las que el proveedor de la acción es un Servicio de AWS. El campo Región se establece de forma predeterminada en la misma región de AWS que la canalización.
En Project name (Nombre del proyecto), elija el proyecto de compilación. Si ya ha creado un proyecto de compilación en CodeBuild, elíjalo. También puede crear un proyecto de compilación en CodeBuild y después volver a esta tarea. Siga las instrucciones de Crear una canalización que use CodeBuild en la Guía del usuario de CodeBuild.
En Especificaciones de compilación, el archivo buildspec de CodeBuild es opcional y, en su lugar, puede especificar comandos. En Insertar comandos de compilación, especifique los comandos del intérprete de comandos que correspondan a su acción. Para obtener más información acerca de las consideraciones para el uso de comandos de compilación, consulte Referencia de la acción de Comandos. Elija Usar un archivo buildspec si desea ejecutar comandos en otras fases o si tiene una lista larga de comandos.
En Variables de entorno para añadir variables de entorno de CodeBuild para su acción de compilación, elija Añadir variable de entorno. Cada variable se compone de tres entradas:
-
En Name (Nombre), escriba el nombre de la clave o de la variable de entorno.
-
En Value (Valor), escriba el valor de la variable de entorno. Si elige Parámetro para el tipo de variable, asegúrese de que este valor es el nombre de un parámetro que ya ha almacenado en AWS Systems Manager Parameter Store.
nota
Se desaconseja usar variables de entorno para almacenar valores confidenciales, especialmente las credenciales de AWS. Cuando utiliza la consola de CodeBuild o la CLI de AWS, las variables de entorno se muestran en texto sin formato. Para valores confidenciales, se recomienda utilizar el tipo Parameter (Parámetro) en su lugar.
-
(Opcional) En Type (Tipo), especifique el tipo de variable de entorno. Los valores válidos son Texto sin formato o Parámetro. El valor predeterminado es Texto sin formato.
(Opcional) En Tipo de compilación, seleccione una de las siguientes opciones:
-
Para ejecutar cada compilación en una sola ejecución de acción de compilación, elija Compilación única.
-
Para ejecutar varias compilaciones en la misma ejecución de acción de compilación, elija Compilación por lote.
(Opcional) Si opta por ejecutar compilaciones por lotes, puede elegir Combinar todos los artefactos del lote en una sola ubicación para colocar todos los artefactos de compilación en un único artefacto de salida.
-
-
-
Para configurar la etapa para el reintento automático, seleccione Habilitar el reintento automático en caso de fallo de una etapa. Para obtener más información acerca del reintento automático, consulte Configuración de una etapa para el reintento automático en caso de fallo.
-
Elija Siguiente.
Paso 5: creación de una etapa de prueba
Este paso es opcional si tiene previsto crear una etapa de compilación o implementación.
-
En la página Paso 5: agregación de una etapa de prueba, realice una de las siguientes acciones y después elija Siguiente:
-
Elija Omitir etapa de prueba si tiene previsto crear una etapa de implementación.
-
En Proveedor de la prueba, elija el proveedor de acciones de prueba y complete los campos correspondientes.
-
-
Elija Siguiente.
Paso 6: creación de una etapa de implementación
Este paso es opcional si ya ha creado una etapa de compilación.
-
En la página Paso 6: agregación de una etapa de implementación, realice una de las siguientes acciones y después elija Siguiente:
-
Elija Omitir etapa de implementación si ha creado una etapa de compilación o de prueba en los pasos anteriores.
nota
Esta opción no aparece si ya ha omitido la etapa de compilación o de prueba.
-
En Deploy provider (Proveedor de implementación), elija una acción personalizada que haya creado para un proveedor de implementación.
En Región, únicamente en el caso de las acciones entre regiones, elija la región de AWS en la que se va a crear el recurso. El campo Región designa dónde se crean los recursos de AWS para este tipo de acción y de proveedor. Este campo solo se muestra en el caso de las acciones en las que el proveedor de la acción es un Servicio de AWS. El campo Región se establece de forma predeterminada en la misma región de AWS que la canalización.
-
En Deploy provider (Proveedor de implementación), hay campos disponibles para los proveedores predeterminados, tal como se indica a continuación:
-
CodeDeploy
En Nombre de aplicación, escriba o seleccione el nombre de una aplicación de CodeDeploy disponible. En Deployment group (Grupo de implementaciones), escriba el nombre de un grupo de implementaciones para la aplicación. Elija Siguiente. También puede crear una aplicación, un grupo de implementaciones o ambas cosas en la consola de CodeDeploy.
-
AWS Elastic Beanstalk
En Nombre de aplicación, escriba o seleccione el nombre de una aplicación de Elastic Beanstalk disponible. En Environment name (Nombre de entorno), especifique un entorno para la aplicación. Elija Siguiente. También puede crear una aplicación, un entorno o ambas cosas en la consola de Elastic Beanstalk.
-
AWS OpsWorks Stacks
En Stack (Pila), escriba o elija el nombre de la pila que desea utilizar. En Layer, elija la capa a la que pertenecen las instancias de destino. En Aplicación, elija la aplicación que desea actualizar e implementar. Si necesita crear una aplicación, elija Crear una nueva en AWS OpsWorks.
Para obtener información acerca de la incorporación de una aplicación a una pila y una capa en AWS OpsWorks, consulte Añadir aplicaciones en la Guía del usuario de AWS OpsWorks.
Para ver un ejemplo completo de cómo usar una canalización simple en CodePipeline como código origen que se ejecuta en capas de AWS OpsWorks, consulte Utilizar CodePipeline con AWS OpsWorks Stacks.
-
AWS CloudFormation
Realice una de las siguientes acciones:
-
En Action mode (Modo de acción), elija Create or update a stack (Crear o actualizar una pila), escriba un nombre de pila y un nombre de archivo de plantilla, y después elija el nombre del rol que debe asumir AWS CloudFormation. Si lo prefiere, escriba el nombre de un archivo de configuración y elija una opción de capacidad de IAM.
-
En Action mode (Modo de acción), elija Create or replace a change set (Crear o reemplazar un conjunto de cambios), escriba un nombre de pila y el nombre del conjunto de cambios, y después elija el nombre del rol que debe asumir AWS CloudFormation. Si lo prefiere, escriba el nombre de un archivo de configuración y elija una opción de capacidad de IAM.
Para obtener información acerca de la integración de las capacidades de AWS CloudFormation en una canalización de , consulte Entrega continua con CodePipeline en la Guía del usuario de AWS CloudFormation.
-
-
Amazon ECS
En Nombre de clúster, escriba o seleccione el nombre de un clúster de Amazon ECS disponible. En Service name (Nombre de servicio), escriba o elija el nombre del servicio que se ejecuta en el clúster. También puede crear un clúster y un servicio. En Image filename (Nombre de archivo de imagen), escriba el nombre del archivo de definiciones de imágenes que describe el contenedor y la imagen de su servicio.
nota
La acción de implementación de Amazon ECS requiere un archivo
imagedefinitions.jsoncomo entrada. El nombre predeterminado del archivo es imagedefinitions.json. Si decide utilizar otro nombre de archivo, debe especificarlo al crear la canalización etapa de implementación. Para obtener más información, consulte Archivo imagedefinitions.json para las acciones de implementación estándar de .Elija Siguiente.
nota
Asegúrese de que su clúster de Amazon ECS se ha configurado con dos o más instancias. Los clústeres de Amazon ECS deben incluir al menos dos instancias para poder mantener una como la instancia principal y usar la otra para alojar las nuevas implementaciones.
Si desea ver un tutorial sobre la implementación de aplicaciones basadas en contenedores con la canalización, consulte Tutorial: Implementación continua con CodePipeline.
-
Amazon ECS (Blue/Green) (Amazon ECS (azul/verde)
Especifique la aplicación y el grupo de implementaciones de CodeDeploy, la información del archivo AppSpec y la definición de tarea de Amazon ECS y, a continuación, elija Siguiente.
nota
La acción Amazon ECS (Blue/Green) (Amazon ECS (azul/verde)) requiere un archivo imageDetail.json como artefacto de entrada de la acción de implementación. Dado que la acción de origen de Amazon ECR crea este archivo, no es necesario que las canalizaciones con una acción de origen de Amazon ECR proporcionen un archivo
imageDetail.json. Para obtener más información, consulte Archivo imageDetail.json para las acciones de implementación blue/green de .Para obtener un tutorial que explica cómo crear una canalización para implementaciones azul/verde en un clúster de Amazon ECS con CodeDeploy, consulte Tutorial: Crear una canalización con un origen de Amazon ECR y una implementación de ECS-to-CodeDeploy.
-
AWS Service Catalog
Elija Enter deployment configuration (Especificar configuración de implementación) si desea utilizar campos de la consola para especificar la configuración, o elija Configuration file (Archivo de configuración) si tiene un archivo de configuración. Especifique la información de configuración y del producto y, a continuación, elija Next (Siguiente).
Si desea ver un tutorial sobre la implementación de cambios de producto en con la canalización, consulte Tutorial: Crear una canalización que se implemente en Service Catalog.
-
Alexa Skills Kit
En Alexa Skill ID (ID de habilidad de Alexa), escriba el ID de habilidad para la habilidad de Alexa. En Client ID (ID de cliente) y en Client secret (Secreto de cliente), escriba las credenciales generadas con un perfil de seguridad de Login with Amazon (LWA). En Refresh token (Token de actualización), especifique el token de actualización que ha generado mediante el comando de la CLI de ASK para recuperar un token de actualización. Elija Siguiente.
Si desea ver un tutorial sobre la implementación de habilidades de Alexa con una canalización y sobre cómo generar las credenciales de LWA, consulte Tutorial: Crear una canalización que implemente una habilidad de Amazon Alexa.
-
Amazon S3
En Bucket, escriba el nombre del bucket de S3 que desea utilizar. Elija Extract file before deploy (Extraer el archivo antes de la implementación) si el artefacto de entrada a la etapa de implementación es un archivo ZIP. Si selecciona Extract file before deploy (Extraer el archivo antes de la implementación), es posible que también pueda introducir un valor para la Deployment path (Ruta de la implementación) en la que se descomprimirá el archivo ZIP. Si no selecciona dicha opción, deberá introducir un valor en S3 object key (Clave de objeto de S3).
nota
La mayoría de los artefactos de salida de las etapas de código fuente y compilación están comprimidos. Todos los proveedores de origen de la canalización excepto Amazon S3 comprimirán los archivos de origen antes de suministrárselos al artefacto de entrada de la siguiente acción.
(Opcional) En ACL predefinida, introduzca la ACL predefinida para aplicarla al objeto que se implementa en Amazon S3.
nota
La aplicación de una ACL predefinida sobrescribe cualquier ACL existente aplicada al objeto.
(Opcional) En Cache control (Control de caché), especifique los parámetros de control de caché de las solicitudes para descargar objetos del bucket. Para una lista de valores válidos, consulte el
Cache-Controlcampo del encabezado para las operaciones HTTP Para introducir varios valores en CacheControl, utilice una coma entre cada valor. Puede añadir un espacio después de cada coma (opcional), tal y como se muestra en este ejemplo.
La entrada de ejemplo anterior se muestra en la CLI de la siguiente manera:
"CacheControl": "public, max-age=0, no-transform"Elija Siguiente.
Para obtener un tutorial que explica cómo crear una canalización con un proveedor de acción de implementación de Amazon S3, consulte Tutorial: Crear una canalización que utilice Amazon S3 como proveedor de implementación.
-
-
-
Para configurar la etapa para el reintento automático, seleccione Habilitar el reintento automático en caso de fallo de una etapa. Para obtener más información acerca del reintento automático, consulte Configuración de una etapa para el reintento automático en caso de fallo.
-
Para configurar la etapa para la reversión automática, seleccione Configurar la reversión automática en caso de fallo en una etapa. Para obtener más información acerca de la reversión automática, consulte Configuración de una etapa para la reversión automática.
-
Elija Next Step (Paso siguiente).
Paso 7: revisión de la canalización
-
En la página Paso 7: Revisar, revise la configuración de su canalización y elija Crear canalización para crear la canalización o Anterior para retroceder y modificar las opciones que ha elegido. Para salir del asistente sin crear una canalización, elija Cancel.
Ahora que ha creado su canalización, puede verla en la consola. La canalización comienza a ejecutarse una vez creada. Para obtener más información, consulte Ver canalizaciones y detalles en CodePipeline. Para obtener más información acerca de cómo realizar cambios en la canalización, consulte Editar una canalización en CodePipeline.
Crear una canalización (CLI)
Para usar la AWS CLI para crear una canalización, se crea un archivo JSON para definir la estructura de la canalización y, después, se ejecuta el comando create-pipeline con el parámetro --cli-input-json.
importante
No puede usar la AWS CLI para crear una canalización que incluya acciones de socios. Debe usar la consola de CodePipeline en su lugar.
Para obtener más información sobre la estructura de una canalización, consulte Referencia de estructura de canalización de CodePipeline y create-pipeline en la CodePipeline API Reference.
Para crear un archivo JSON, utilice el archivo JSON de canalización de ejemplo, edítelo y, a continuación, llame a ese archivo cuando ejecute el comando create-pipeline.
Requisitos previos:
Necesita el ARN del rol de servicio creado para CodePipeline en Introducción a CodePipeline. Utilizará el ARN del rol de servicio de CodePipeline en el archivo JSON de la canalización al ejecutar el comando create-pipeline. Para obtener más información sobre cómo crear un rol de servicio, consulte Creación del rol de servicio de CodePipeline. A diferencia de la consola, cuando se ejecuta el comando create-pipeline de la AWS CLI no se dispone de la opción para crear el rol de servicio de CodePipeline automáticamente. El rol de servicio debe existir previamente.
Necesita el nombre de un bucket de S3 donde se almacenarán los artefactos de la canalización. Este bucket debe estar en la misma región que la canalización. El nombre del bucket se utiliza en el archivo JSON de la canalización al ejecutar el comando create-pipeline. A diferencia de la consola, cuando se ejecuta el comando create-pipeline en la AWS CLI, no se crea un bucket de S3 para almacenar los artefactos. El bucket debe existir previamente.
nota
También puede usar el comando get-pipeline para obtener una copia de la estructura JSON de esa canalización y, después, modificar esa estructura en un editor de texto sin formato.
Temas
Para crear el archivo JSON
-
En un terminal (Linux, macOS o Unix) o en el símbolo del sistema (Windows), cree un nuevo archivo de texto en un directorio local.
-
(Opcional) Puede agregar una o varias variables a nivel de canalización. Puede hacer referencia a este valor en la configuración de las acciones de CodePipeline. Puede añadir los nombres y valores de las variables al crear la canalización, y también puede optar por asignar valores al iniciar la canalización en la consola.
nota
Si bien es opcional añadir variables a nivel de canalización, en el caso de una canalización especificada con variables a nivel de canalización en la que no se proporcionen valores, la ejecución de la canalización fallará.
Una variable a nivel de canalización se resuelve en el tiempo de ejecución de la canalización. Todas las variables son inmutables, lo que significa que no se pueden actualizar después de asignar un valor. Las variables a nivel de canalización con valores resueltos se mostrarán en el historial de cada ejecución.
Las variables se proporcionan a nivel de canalización mediante el atributo de variables de la estructura de canalización. En el siguiente ejemplo, la variable
Variable1tiene un valor deValue1."variables": [ { "name": "Timeout", "defaultValue": "1000", "description": "description" } ]Agrega esta estructura al JSON de su canalización o al JSON de ejemplo en el siguiente paso. Para obtener más información acerca de las variables, incluida la información de los espacios de nombres, consulte Referencia de variables.
-
Abra el archivo en un editor de texto sin formato y edite los valores para que reflejen la estructura que desea crear. Como mínimo, deberá cambiar el nombre de la canalización. Considere también la posibilidad de cambiar:
-
El bucket de S3 en el que se almacenan los artefactos de esta canalización.
-
La ubicación de código fuente del código.
-
El proveedor de implementación.
-
Cómo desea implementar el código.
-
Las etiquetas de la canalización.
La siguiente estructura de canalización de dos etapas refleja los valores que debería plantearse modificar en la canalización. Probablemente, su canalización tenga más de dos etapas:
{ "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE::role/AWS-CodePipeline-Service", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "MyApp" } ], "configuration": { "S3Bucket": "amzn-s3-demo-source-bucket", "S3ObjectKey": "ExampleCodePipelineSampleBundle.zip", "PollForSourceChanges": "false" }, "runOrder": 1 } ] }, { "name": "Staging", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-CodeDeploy-Application", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineDemoFleet" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "codepipeline-us-east-2-250656481468" }, "name": "MyFirstPipeline", "version": 1, "variables": [ { "name": "Timeout", "defaultValue": "1000", "description": "description" } ] }, "triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "tags": { "includes": [ "v1" ], "excludes": [ "v2" ] } } ] } } ] "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 }, "tags": [{ "key": "Project", "value": "ProjectA" }] }Este ejemplo etiqueta la canalización incluyendo la clave de etiqueta
Projecty el valorProjectAen la canalización. Para obtener más información acerca del etiquetado de recursos de CodePipeline, consulte Etiquetado de recursos.Asegúrese de que el parámetro
PollForSourceChangesdel archivo JSON se ha establecido de la siguiente manera:"PollForSourceChanges": "false",CodePipeline utiliza Eventos de Amazon CloudWatch para detectar cambios en el repositorio y la ramificación de origen en o en el bucket de origen de S3. El siguiente paso incluye instrucciones para crear manualmente estos recursos para la canalización. Al definir la marca como
false, se deshabilitan las comprobaciones periódicas, que no son necesarias cuando se utilizan los métodos de detección de cambios recomendados. -
-
Para crear una acción de compilación, prueba o implementación en una región diferente a la de la canalización, debe añadir lo siguiente a la estructura de canalización. Para obtener instrucciones, consulte Agregar una acción entre regiones en CodePipeline.
-
Añada el parámetro
Regiona la estructura de la canalización de su acción. -
Utilice el parámetro
artifactStorespara especificar un bucket de artefactos para cada región de AWS en la que tenga una acción.
-
-
Cuando esté satisfecho con la estructura, guarde el archivo con un nombre como
pipeline.json.
Para crear una canalización
-
Ejecute el comando create-pipeline y use el parámetro
--cli-input-jsonpara especificar el archivo JSON creado anteriormente.El comando de una canalización denominada
MySecondPipelinecon un archivo JSON denominado pipeline.json que incluya el nombre "MySecondPipeline" como valor denameen el JSON, sería así:aws codepipeline create-pipeline --cli-input-json file://pipeline.jsonimportante
Asegúrese de incluir
file://antes del nombre de archivo. Es obligatorio en este comando.Este comando devuelve la estructura de toda la canalización que ha creado.
-
Para ver la canalización, abra la consola de CodePipeline y elíjala en la lista de canalizaciones o bien use el comando get-pipeline-state. Para obtener más información, consulte Ver canalizaciones y detalles en CodePipeline.
-
Si utiliza la CLI para crear una canalización, debe crear manualmente los recursos de detección de cambios recomendados para la canalización:
-
Para una canalización con un repositorio en CodeCommit, debe crear manualmente la regla de Eventos de CloudWatch, tal y como se describe en Creación de una regla de EventBridge para una fuente de CodeCommit (CLI).
-
Para una canalización con origen en Amazon S3, debe crear manualmente la regla de Eventos de CloudWatch y el registro de seguimiento de AWS CloudTrail, tal y como se describe en Conexión a acciones de origen de Amazon S3 que utilizan EventBridge y AWS CloudTrail.
-
Creación de una canalización a partir de plantillas estáticas
Es posible crear en la consola una canalización que utilice una plantilla para configurar una canalización con el código fuente y las propiedades que especifique. Debe proporcionar la ubicación del archivo de código fuente e información acerca de los proveedores que utilizará para las acciones. Puede especificar una acción de origen para Amazon ECR o cualquier repositorio de terceros compatible con CodeConnections, como GitHub.
La plantilla creará una pila en CloudFormation para la canalización que incluye los siguientes recursos:
-
Se crea una canalización con el tipo de canalización V2. En Tipo de canalización, elija una de las siguientes opciones: Los tipos de canalización difieren en características y precio. Para obtener más información, consulte Tipos de canalización.
-
Se crea un rol de servicio para la canalización y se hace referencia a él en la plantilla.
-
Un almacén de artefactos se crea mediante el almacén de artefactos predeterminado, como el bucket de artefactos de S3 designado por defecto, para la canalización en la Región de AWS que haya seleccionado para dicha canalización.
Para ver la colección de plantillas de inicio de código abierto que se utilizan para el asistente de creación de plantillas estáticas, consulte el repositorio en https://github.com/aws/codepipeline-starter-templates
Cuando utiliza plantillas estáticas para crear una canalización, la estructura de la canalización se configura en cada plantilla según las necesidades del caso de uso. Por ejemplo, la plantilla de una implementación en CloudFormation se utiliza como ejemplo en este procedimiento. La plantilla genera una canalización denominada DeployToCloudFormationService con la siguiente estructura:
-
Una etapa de compilación que contiene una acción de origen con la configuración que se especifica en el asistente.
-
Una etapa de implementación con una acción de implementación y una pila de recursos asociada en CloudFormation.
Cuando se usa una plantilla estática para crear una canalización, CodePipeline crea los nombres de las etapas (origen, compilación, almacenamiento provisional). Estos nombres no se pueden cambiar. Puede usar nombres más específicos, como CompilarEnGamma o ImplementarEnProd, a las etapas que añada con posterioridad.
Paso 1: acceso a la consola
Inicie sesión en la Consola de administración de AWS y abra la consola de CodePipeline en http://console.aws.amazon.com/codesuite/codepipeline/home
. -
En la página Welcome, elija Create pipeline.
Si es la primera vez que usa , seleccione Comenzar.
Paso 2: elección de plantilla
Elija una plantilla para crear una canalización con una etapa de implementación, una automatización o una canalización de CI.
-
En la página Paso 1: elección de la opción de creación realice una de las siguientes acciones y, a continuación, seleccione Siguiente:
-
Elija Implementación si planea crear una etapa de implementación. Vea las opciones de plantillas que se implementan en ECR o CloudFormation. Para este ejemplo, elija Implementación y, a continuación, elija la opción de implementar en CloudFormation.
-
Elija Integración continua si planea crear una canalización de CI. Consulte las opciones de canalización de CI, como la compilación en Gradle.
-
Elija Automatización si planea crear una canalización automatizada. Consulte las opciones de automatización, como programar una compilación en Python.
-
-
Paso 3: elección del código fuente
-
En la página Paso 3: elección del código fuente, en Proveedor de origen, elija el proveedor en el que se almacena el código fuente, especifique las opciones obligatorias y, a continuación, elija Paso siguiente.
-
Para Bitbucket Cloud, GitHub (mediante la aplicación de GitHub), GitHub Enterprise Server, GitLab.com o GitLab autoadministrado:
-
En Conexión, seleccione una conexión existente o cree una nueva. Para crear o administrar una conexión para su acción de origen de GitHub, consulte Conexiones de GitHub.
-
Elija el repositorio que desea usar como ubicación de origen para la canalización.
Elija agregar un desencadenador o filtrar los tipos de desencadenadores para iniciar la canalización. Para obtener más información acerca de cómo trabajar con desencadenadores, consulte Agregación de desencadenadores con tipos de eventos de solicitud de inserción o extracción de código. Para obtener más información acerca de filtros con patrones de glob, consulte Trabajar con patrones glob en la sintaxis.
-
En Formato del artefacto de salida, debe elegir el formato de los artefactos.
-
Para almacenar artefactos de salida de la acción de GitHub utilizando el método predeterminado, elija CodePipeline predeterminado. La acción obtiene acceso a los archivos del repositorio de GitHub y almacena los artefactos en un archivo ZIP en el almacén de artefactos de canalización.
-
Para almacenar un archivo JSON que contiene una referencia URL al repositorio de manera que las acciones posteriores puedan ejecutar comandos Git directamente, elija Clonación completa. Esta opción solo se puede utilizar en acciones de CodeBuild posteriores.
Si elige esta opción, tendrá que añadir los permisos a su rol de servicio CodeBuild, tal y como se muestra en Solución de problemas de CodePipeline. Para ver un tutorial que muestra cómo utilizar la opción Clonación completa, consulte Tutorial: Usar una clonación completo con un origen de canalización de GitHub.
-
-
-
Para Amazon ECR:
-
En Nombre de repositorio, elija el nombre de su repositorio de Amazon ECR.
-
En Image tag (Etiqueta de imagen), especifique el nombre de la imagen y la versión, si es diferente de LATEST.
-
En Output artifacts (Artefactos de salida), elija el valor predeterminado del artefacto de salida, como, por ejemplo, MyApp, que contiene el nombre de la imagen y la información del URI del repositorio que desea que utilice la siguiente etapa.
Cuando se incluye una etapa de origen de Amazon ECR en la canalización, la acción de origen genera un archivo
imageDetail.jsoncomo artefacto de salida al confirmar un cambio. Para obtener más información sobre el archivoimageDetail.json, consulte Archivo imageDetail.json para las acciones de implementación blue/green de . -
nota
El objeto y el tipo de archivo deben ser compatibles con el sistema de implementación que planea usar (por ejemplo, Elastic Beanstalk o CodeDeploy). Algunos tipos de archivos compatibles son .zip, .tar, y .tgz. Para obtener más información acerca de los tipos de contenedores compatibles con Elastic Beanstalk, consulte Personalización y configuración de entornos y Plataformas compatibles. Para obtener más información acerca de la implementación de revisiones con CodeDeploy, consulte Cargar la revisión de la aplicación y Preparar una revisión.
-
Paso 4: configuración de plantilla
Para este ejemplo, se seleccionó la implementación en CloudFormation. En este paso, añada la configuración de la plantilla.
-
En Paso 4: configuración de plantilla, en Nombre de la pila, introduzca un nombre para la canalización.
-
Edite la política de IAM del marcador de posición para los permisos que se aplican a la plantilla.
-
Elija Crear la canalización desde una plantilla.
-
Aparecerá un mensaje en el que se indicará que se están creando los recursos de la canalización.
Paso 5: visualización de la canalización
-
Ahora que ha creado su canalización, puede verla en la consola de CodePipeline, y además puede ver la pila en CloudFormation. La canalización comienza a ejecutarse una vez creada. Para obtener más información, consulte Ver canalizaciones y detalles en CodePipeline. Para obtener más información acerca de cómo realizar cambios en la canalización, consulte Editar una canalización en CodePipeline.