Usa la sintaxis GitHub Actions en una especificación de compilación en AWS CodeBuild - AWS CodeBuild

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Usa la sintaxis GitHub Actions en una especificación de compilación en AWS CodeBuild

Puedes usar un corredor de acciones CodeBuild gestionado para ejecutar acciones en él. GitHub CodeBuild Esto es posible añadiendo steps a cualquier fase del archivo de especificaciones de compilación.

CodeBuild Las especificaciones de compilación admiten una lista de pasos de GitHub acción secuenciales que se ejecutan en una fase separada de los comandos. CodeBuild Estas GitHub acciones se integran con CodeBuild las funciones existentes, que incluyen el almacenamiento en caché de dependencias, las compilaciones por lotes, el acceso a AWS Secrets Manager, etc.

¿Cómo puedo empezar a usar una GitHub acción en mi especificación de compilación?

Los pasos generales para usar una GitHub acción en tu especificación de compilación son los siguientes:

  1. Si aún no lo has hecho, conecta tu proyecto a. GitHub

    Para ello, puede hacer una de las acciones siguientes:

    nota

    Esto solo debe hacerse si no te has conectado GitHub a otro proyecto.

  2. En las especificaciones de construcción de tu proyecto, puedes añadirsteps, cada una de las cuales hace referencia a una acción. GitHub Esto se puede editar en la CodeBuild consola o en tu repositorio de código fuente. Cada fase de compilación admite una lista de comandos o una lista de pasos, pero no es posible utilizar ambas cosas en la misma fase. Para obtener más información, consulte Usa la sintaxis GitHub Actions en una especificación de compilación en AWS CodeBuild.

¿Qué GitHub acciones puedo usar en mi especificación de compilación?

Puedes usar cualquier acción disponible en GitHub Marketplace que no entre en conflicto con estas limitaciones.

¿Puedo usar otros proveedores de código fuente además de GitHub usar GitHub Actions en mi especificación de compilación?

Sí, pero GitHub sigue siendo necesario conectarse a para autenticarse y acceder a Actions. GitHub GitHub Para obtener más información, consulte GitHub y un token de acceso a GitHub Enterprise Server.

¿Por qué tengo que conectarme a GitHub un proveedor de código fuente para poder usar GitHub Actions en mi especificación de compilación?

Para usar GitHub Actions en tu especificación de compilación, la fuente debe descargarse en un proceso de compilación. Las descargas anónimas tendrán una velocidad limitada, por lo que conectarte a ellas GitHub te ayudará a garantizar un acceso uniforme.

¿Cuánto cuesta usar GitHub Actions en mi especificación de compilación?

Se admite el uso de GitHub acciones en tu especificación de compilación sin coste adicional.

¿Qué regiones admiten el uso de GitHub Actions en mi especificación de compilación?

El uso de GitHub acciones en tus especificaciones de compilación está permitido en todas las regiones. CodeBuild Para obtener más información sobre Regiones de AWS dónde CodeBuild está disponible, consulta AWS Servicios por región.

Prácticas recomendadas para usar GitHub Actions en tus especificaciones de compilación

GitHub Las acciones son de código abierto, creadas y mantenidas por la comunidad. Seguimos el modelo de responsabilidad compartida y consideramos el código fuente de GitHub Actions como datos de clientes de los que tú eres responsable. GitHub A las acciones se les puede conceder acceso a secretos, fichas de repositorio, código fuente y enlaces de cuentas. Asegúrate de confiar en la fiabilidad y la seguridad de las GitHub acciones que planeas ejecutar.

Directrices más específicas y mejores prácticas de seguridad para Actions: GitHub

Limitaciones del uso de GitHub acciones en tus especificaciones de compilación en CodeBuild

  • GitHub No se admiten las acciones de tu buildspec que dependan internamente del githubcontexto o que hagan referencia a recursos GitHub específicos, como las solicitudes de cambios y los problemas. CodeBuild Por ejemplo, las siguientes acciones no funcionarán en: CodeBuild

    • GitHub Acciones que intentan añadir, cambiar o actualizar GitHub recursos, como las acciones que actualizan las solicitudes de incorporación de cambios o que crean problemas en ellos GitHub.

    nota

    La mayoría de GitHub las acciones oficiales que aparecen en https://github.com/actions se basan en github el contexto. En su lugar, usa las acciones disponibles en GitHub Marketplace.

  • GitHub Las acciones de tu especificación de compilación que sean acciones de contenedor de Docker funcionarán, pero tu proyecto de compilación debe tener habilitado el modo privilegiado y ser ejecutado por el usuario predeterminado de Docker (root).

  • GitHub Las acciones de tu especificación de compilación no se admiten en CodeBuild proyectos configurados para ejecutarse en Windows.

  • GitHub No se admiten los trabajos de acción (grupos de pasos) ni las propiedades de los trabajos de GitHub acción en tu especificación de compilación.

  • GitHub Las acciones de tu buildspec no se admiten en CodeBuild proyectos configurados para ser activados por un webhook para un repositorio Git público. Para obtener más información, consulta. git-credential-helper

  • Las compilaciones de VPC sin acceso público a Internet no pueden ejecutar GitHub acciones en tu especificación de compilación.

  • Cada fase de compilación admite una lista de comandos o una lista de pasos, pero no es posible utilizar ambas cosas en la misma fase. Por ejemplo, en el siguiente ejemplo, los pasos se utilizan en la fase previa a la compilación para enumerar GitHub las acciones, mientras que los comandos se utilizan en la fase de creación para enumerar los comandos. CodeBuild

    version: 0.2 phases: pre-build: steps: - name: Lint Code Base uses: github/super-linter@v4 env: VALIDATE_ALL_CODEBASE: 'true' DEFAULT_BRANCH: main build: commands: - echo "Building..." - npm run build

GitHub Referencia de especificaciones de compilación de Action Runner

Este tema contiene la referencia de especificaciones de compilación para las propiedades de Action Runner. GitHub

pasos

Secuencia opcional. Los pasos se utilizan para ejecutar comandos y acciones en. CodeBuild Para obtener más información, consulte Usa la sintaxis GitHub Actions en una especificación de compilación en AWS CodeBuild.

nota

Cada fase de compilación admite una lista de commands o una lista de steps, pero no es posible utilizar ambas cosas en la misma fase.

Cada paso de compilación contiene las propiedades siguientes.

id

Opcional. Identificador del paso que se puede usar para hacer referencia al paso en otros contextos.

if

Opcional. Declaración condicional que se puede usar para impedir la ejecución de un paso a menos que se cumpla una condición. Esta declaración puede usar cualquier contexto compatible, como hacer referencia a variables de CodeBuild entorno o expresiones.

name

Opcional. Nombre del paso. Si no se especifica el nombre, el nombre predeterminado es el texto especificado en el comando run.

uses

Acción que se ejecuta en el paso. Para algunas acciones es necesario configurar entradas utilizando with. Consulte el README de la acción para determinar qué entradas son necesarias. Para obtener más información, consulte ¿Qué GitHub acciones puedo usar en mi especificación de compilación?.

Si uses está especificado en la fase de compilación, no se puede usar con run.

nota

Se recomienda incluir la versión de la acción que se va a utilizar. Esto se puede hacer especificando una etiqueta Git ref, SHA o Docker. Para obtener más información, consulte la sintaxis de steps.uses.

run

Comando que ejecuta programas de línea de comandos. Pueden ser comandos de una sola línea o de varias líneas. De forma predeterminada, estos comandos se ejecutan mediante intérpretes de comandos sin inicio de sesión. Para elegir un intérprete de comandos distinto, utilice shell.

Si run está especificado en la fase de compilación, no se puede usar con uses.

shell

Opcional. Intérprete de comandos especificado para esta secuencia. Para ver los parámetros de intérprete de comandos compatibles, consulte steps.shell. Si no se especifica, el intérprete de comandos utilizado es bash. Si bash no está disponible, se usa sh.

with

Opcional. Mapa de los parámetros de entrada definidos por la acción. Cada parámetro es un par clave-valor.

with.args

Opcional. Cadena que define las entradas de un contenedor de Docker.

with.entrypoint

Opcional. Punto de entrada de Docker especificado para el Dockerfile.

env

Opcional. Variables especificadas para los pasos que se van a utilizar en el entorno.

continue-on-error

Opcional. Valor booleano que indica si se puede ignorar un error en la secuencia de pasos.

false

Valor predeterminado. Si se produce un error en esta secuencia de pasos, se considerará la compilación como fallida.

true

Si se produce un error en esta secuencia de pasos, todavía es posible finalizar la compilación satisfactoriamente.

timeout-minutes

Opcional. Número máximo de minutos que puede durar el paso antes de finalizar. De forma predeterminada, no hay tiempo de espera. Si el tiempo de espera del paso supera el tiempo de espera de compilación, el paso se detendrá cuando se alcance el tiempo de espera de compilación.

El siguiente es un ejemplo del uso de la acción Super-Linter GitHub :

version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true USE_FIND_ALGORITHM: true FILTER_REGEX_INCLUDE: '/github/workspace/buildspec.yml'

GitHub Ejemplos de sintaxis de acciones con AWS CodeBuild

Puedes usar estos grupos de ejemplos para experimentar con GitHub las acciones incluidas en tus especificaciones de construcción. CodeBuild

Ejemplo de Super-Linter Action GitHub

En este ejemplo se muestra cómo añadir la GitHub acción Super-Linter a un proyecto. CodeBuild La acción Super-Linter inspecciona el código, encuentra áreas en las que el código contiene errores, problemas de formato y construcciones sospechosas y, a continuación, envía los resultados a la consola. CodeBuild

Puedes añadir la GitHub acción Super-Linter a tu CodeBuild proyecto actualizando la sección de fases del archivo buildspec.

version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true

Los registros de Super-Linter tendrán un aspecto similar al siguiente:

/github/workspace/hello-world/app.js:3:13: Extra semicolon. /github/workspace/hello-world/app.js:9:92: Trailing spaces not allowed. /github/workspace/hello-world/app.js:21:7: Unnecessarily quoted property 'body' found. /github/workspace/hello-world/app.js:31:1: Expected indentation of 2 spaces but found 4. /github/workspace/hello-world/app.js:32:2: Newline required at end of file but not found.

Ejemplo de grafo de compilación por lotes

En el siguiente ejemplo, se define un grafo de compilación que crea una cadena de dependencias y ejecuta comandos utilizando steps. En este ejemplo, build1 se ejecuta primero porque no tiene dependencias. Puesto que build2 depende de build1, build2 se ejecuta después de completar build1. Para obtener más información, consulte Grafo de compilación.

version: 0.2 batch: fast-fail: false build-graph: - identifier: build1 env: variables: BUILD_ID: build1 ignore-failure: false - identifier: build2 env: variables: BUILD_ID: build2 depend-on: - build1 phases: build: steps: - run: echo $BUILD_ID

Ejemplo de Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer encuentra problemas en el código de Java y Python y recomienda cómo solucionarlos. En el siguiente ejemplo, se utiliza CodeGuru Reviewer para proporcionar revisiones completas del código de análisis del repositorio. Estas revisiones de código analizan todo el código de una rama específica. Para obtener más información, consulte Crear revisiones de código con GitHub acciones en la Guía del usuario de Amazon CodeGuru Reviewer.

version: 0.2 phases: build: steps: - name: Amazon CodeGuru Reviewer Scanner if: ${{ always() }} uses: aws-actions/codeguru-reviewer@v1.1 with: s3_bucket: codeguru-reviewer-user artifacts: files: - codeguru-results.sarif.json
nota

El bucket de Amazon S3 debe comenzar por el prefijo codeguru-reviewer-.

Los registros tendrán un aspecto similar al siguiente:

INFO CodeReview created with arn=arn:aws:codeguru-reviewer:region:account-id:association:id:code-review:RepositoryAnalysis-job for job=job INFO SARIF persisted to /github/workspace/codeguru-results.sarif.json INFO Amazon CodeGuru Reviewer job execution completed

Una vez finalizada la tarea de Amazon CodeGuru Reviewer, se genera un informe sarif como CodeBuild artefacto. Para obtener más información, consulte Análisis completo del repositorio en la Guía del usuario de Amazon CodeGuru Reviewer.

AWS Secrets Manager muestra

AWS Secrets Manager le ayuda a gestionar, recuperar y rotar las credenciales de las bases de datos, las credenciales de las aplicaciones, los tokens de OAuth, las claves de API y otros secretos a lo largo de sus ciclos de vida. El ejemplo siguiente define un secreto mediante Secrets Manager y ejecuta comandos mediante steps. Para obtener más información, consulta ¿Qué es? AWS Secrets Manager en la Guía AWS Secrets Manager del usuario.

version: 0.2 env: secrets-manager: SECRET_VALUE: "arn:aws:secretsmanager:us-east-1:xxxx:secret:/secret-l3IJg9:my_super_secret_key" phases: build: steps: - run: echo $SECRET_VALUE

Los registros tendrán un aspecto similar al siguiente:

echo $SECRET_VALUE env: SECRET_VALUE: *** ***

Archivo de variables de entorno

El siguiente ejemplo define las variables de entorno en la secuencia env. La variable S3_BUCKET se define en la especificación de compilación y se le asigna <bucket-name> como valor. Se hace referencia a esta variable en el condicional if como a una variable de entorno normal mediante el signo de dólar ($) para acceder al contexto ambiental de GitHub Action. Para obtener más información consulte Secuencia de env.

version: 0.2 env: variables: S3_BUCKET: "<bucket-name>" phases: build: steps: - if: ${{ env.S3_BUCKET == '<bucket-name>' }} run: echo "S3 bucket is $S3_BUCKET"

Los registros tendrán un aspecto similar al siguiente:

echo "S3 bucket is $S3_BUCKET" env: S3_BUCKET: my-s3-bucket S3 bucket is my-s3-bucket

Ejemplo de variable de entorno exportada

Las variables de entorno exportadas se utilizan junto con ellas CodePipeline para exportar variables de entorno desde la fase de creación actual a las etapas siguientes del proceso de creación. En el ejemplo siguiente, se define una variable de entorno exportada en la secuencia env denominada MY_VARIABLE y se escribe en el archivo de entorno GITHUB_ENV.

version: 0.2 env: exported-variables: - MY_VARIABLE phases: build: steps: - run: echo "MY_VARIABLE=my-value" >> $GITHUB_ENV

Para obtener más información, consulta ExportedEnvironmentVariablela referencia de la AWS CodeBuild API.