Use a sintaxe de GitHub ações em um buildspec em AWS CodeBuild - AWS CodeBuild

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use a sintaxe de GitHub ações em um buildspec em AWS CodeBuild

Você pode usar um executor CodeBuild de ações gerenciado para executar GitHub ações nele. CodeBuild Isso pode ser feito adicionando steps a qualquer fase no arquivo buildspec.

CodeBuild buildspecs suportam uma lista de etapas de GitHub ação sequenciais que são executadas em uma fase separada dos comandos. CodeBuild Essas GitHub ações se integram aos CodeBuild recursos existentes, que incluem cache de dependências, compilações em lote, acesso a AWS Secrets Manager e muito mais.

Como faço para começar a usar uma GitHub ação no meu buildspec?

As etapas de alto nível para usar uma GitHub ação em seu buildspec são as seguintes:

  1. Se você ainda não fez isso, conecte seu projeto GitHub a.

    Para fazer isso, é possível utilizar uma das seguintes opções:

    nota

    Isso só precisa ser feito se você não estiver conectado a GitHub outro projeto.

  2. Na especificação de construção do seu projeto, você pode adicionarsteps, cada uma das quais faz referência a uma Ação. GitHub Isso pode ser editado no CodeBuild console ou no seu repositório de origem. Cada fase de compilação é compatível com uma lista de comandos ou uma lista de etapas, mas as duas não podem ser usadas na mesma fase. Para ter mais informações, consulte Use a sintaxe de GitHub ações em um buildspec em AWS CodeBuild.

Quais GitHub ações posso usar no meu buildspec?

Você pode usar qualquer ação disponível no GitHub Marketplace que não entre em conflito com essas limitações.

Posso usar provedores de origem além do GitHub uso de GitHub ações em meu buildspec?

Sim, mas a conexão ainda GitHub é necessária para se autenticar GitHub e acessar GitHub as Ações. Para ter mais informações, consulte GitHub e token de acesso do GitHub Enterprise Server.

Por que preciso me conectar GitHub como provedor de origem para usar o GitHub Actions em meu buildspec?

Para usar GitHub Actions em seu buildspec, a fonte deve ser baixada em uma computação de compilação. Os downloads anônimos terão uma taxa limitada, portanto, conectando-se a GitHub eles, eles podem ajudar a garantir um acesso consistente.

Quanto custa usar o GitHub Actions no meu buildspec?

O uso de GitHub ações em seu buildspec é suportado sem custo adicional.

Quais regiões oferecem suporte ao uso de GitHub ações em meu buildspec?

O uso de GitHub ações em seu buildspec é suportado em todas as regiões. CodeBuild Para obter mais informações sobre Regiões da AWS onde CodeBuild está disponível, consulte AWS Serviços por região.

Melhores práticas para usar GitHub ações em seu buildspec

GitHub As ações são de código aberto, criadas e mantidas pela comunidade. Seguimos o modelo de responsabilidade compartilhada e consideramos o código-fonte GitHub das ações como dados do cliente pelos quais você é responsável. GitHub As ações podem ter acesso a segredos, tokens de repositório, código-fonte e links de contas. Certifique-se de estar confiante na confiabilidade e na segurança das GitHub ações que planeja executar.

Orientações mais específicas e melhores práticas de segurança para GitHub ações:

Limitações do uso de GitHub ações em seu buildspec em CodeBuild

  • GitHub Ações em seu buildspec que dependem internamente do githubcontexto ou que recursos GitHub específicos de referência, como pull requests e problemas, não são suportadas no. CodeBuild Por exemplo, as ações a seguir não funcionarão em CodeBuild:

    • GitHub Ações que tentam adicionar, alterar ou atualizar GitHub recursos, como ações que atualizam pull requests ou criam problemas em GitHub.

    nota

    A maioria das GitHub ações oficiais listadas em https://github.com/actions depende do github contexto. Em vez disso, use ações disponíveis no GitHub Marketplace.

  • GitHub As ações em seu buildspec que são ações de contêiner do Docker funcionarão, mas seu projeto de compilação deve ter o modo privilegiado ativado e ser executado pelo usuário padrão do Docker (root).

  • GitHub As ações em seu buildspec não são suportadas em CodeBuild projetos configurados para execução no Windows.

  • GitHub Os trabalhos de ação (grupos de etapas) e as propriedades do trabalho de GitHub ação em seu buildspec não são suportados.

  • GitHub As ações em seu buildspec não são suportadas em CodeBuild projetos configurados para serem acionados por um webhook para um repositório Git público. Para obter mais informações, consulte git-credential-helper.

  • As compilações de VPC sem acesso público à Internet não podem executar GitHub ações em seu buildspec.

  • Cada fase de compilação é compatível com uma lista de comandos ou uma lista de etapas, mas as duas não podem ser usadas na mesma fase. Por exemplo, no exemplo a seguir, as etapas são usadas na fase de pré-construção para listar GitHub ações, enquanto os comandos são usados na fase de construção para listar CodeBuild os comandos.

    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 Referência do buildspec do Action Runner

Este tópico contém a referência buildspec para as propriedades do GitHub Action runner.

etapas

Sequência opcional. As etapas são usadas para executar comandos e ações em CodeBuild. Para ter mais informações, consulte Use a sintaxe de GitHub ações em um buildspec em AWS CodeBuild.

nota

Cada fase de compilação é compatível com uma lista de commands ou de steps, mas as duas não podem ser usadas na mesma fase.

Cada etapa de compilação contém as seguintes propriedades:

id

Opcional. O identificador da etapa que pode ser usado para fazer referência à etapa em outros contextos.

if

Opcional. Uma declaração condicional que pode ser usada para impedir que uma etapa seja executada, a menos que uma condição seja atendida. Essa declaração pode usar qualquer contexto compatível, como referenciar variáveis ambientais de CodeBuild, bem como expressão.

name

Opcional. O nome da etapa. Se o nome não for especificado, será usado como padrão o texto especificado no comando run.

uses

A ação que é executada para a etapa. Algumas ações exigem a definição de entradas usando with. Consulte o README da ação para determinar quais entradas são necessárias. Para ter mais informações, consulte Quais GitHub ações posso usar no meu buildspec?.

Se uses for especificado na fase de compilação, não poderá ser usado com run.

nota

É recomendável incluir a versão da ação que você está usando. Isso pode ser feito especificando uma tag Git ref, SHA ou Docker. Para obter mais informações, consulte steps.uses syntax.

run

Um comando que executa programas de linha de comando. Podem ser comandos de linha única ou de várias linhas. Por padrão, esses comandos são executados usando shells sem login. Para escolher outro shell, use shell.

Se run for especificado na fase de compilação, não poderá ser usado com uses.

shell

Opcional. O shell especificado para essa sequência. Para ver os parâmetros de shell compatíveis, consulte steps.shell. Se não especificado, o shell usado será bash. Se bash não estiver disponível, sh será usado.

with

Opcional. Um mapa dos parâmetros de entrada definidos pela ação. Cada parâmetro é um par de chave/valor.

with.args

Opcional. Uma string que define as entradas de um contêiner do Docker.

with.entrypoint

Opcional. O ponto de entrada do Docker especificado para o Dockerfile.

env

Opcional. As variáveis especificadas para as etapas a serem usadas no ambiente.

continue-on-error

Opcional. Um valor booliano que indica se uma falha nessa sequência de etapas pode ser ignorada.

false

O valor padrão. Se essa sequência de etapas falhar, ocorrerá uma falha na compilação.

true

Se essa sequência de etapas falhar, a compilação ainda poderá ser bem-sucedida.

timeout-minutes

Opcional. O número máximo de minutos que a etapa pode ser executada antes de ser encerrada. Por padrão, não há tempo limite. Se o tempo limite da etapa exceder o tempo limite da compilação, a etapa será interrompida quando o tempo limite da compilação for atingido.

Veja a seguir um exemplo usando a ação 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 Amostras de sintaxe de ação com AWS CodeBuild

Esses grupos de amostras podem ser usados para fazer experiências com GitHub ações em seu buildspec em. CodeBuild

Exemplo de ação Super-Linter GitHub

Este exemplo demonstra como adicionar a GitHub ação Super-Linter a um projeto. CodeBuild A ação Super-Linter inspeciona o código, encontra áreas em que o código contém erros, problemas de formatação e construções suspeitas e, em seguida, envia os resultados para o console. CodeBuild

Você pode adicionar a GitHub ação Super-Linter ao seu CodeBuild projeto atualizando a seção de fase do seu arquivo buildspec.

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

Os logs do Super-Linter serão semelhantes ao seguinte:

/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.

Exemplo de grafo de compilação em lote

O exemplo a seguir define um grafo de compilação que cria uma cadeia de dependências e executa comandos usando steps. Neste exemplo, build1 é executado primeiro porque não tem dependências. Como a build2 depende da build1, a build2 é executada após a conclusão da build1. Para mais informações, consulte Grafo de compilação.

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

Amostra do Amazon CodeGuru Reviewer

O Amazon CodeGuru Reviewer encontra problemas em seu código Java e Python e recomenda como corrigi-los. O exemplo a seguir usa o CodeGuru Reviewer para fornecer revisões completas do código de análise do repositório. Essas análises de código verificam todo o código em uma ramificação especificada. Para obter informações, consulte Criar análises de código com GitHub ações no Guia do usuário do 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

O bucket do Amazon S3 deve se iniciar com o prefixo codeguru-reviewer-.

Os logs serão semelhantes ao seguinte:

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

Depois que o trabalho do Amazon CodeGuru Reviewer for concluído, um relatório sarif é gerado como CodeBuild artefato. Para obter informações, consulte Análise completa do repositório no Guia do usuário do Amazon CodeGuru Reviewer.

AWS Secrets Manager amostra

AWS Secrets Manager ajuda você a gerenciar, recuperar e alternar credenciais de banco de dados, credenciais de aplicativos, tokens OAuth, chaves de API e outros segredos em todo o ciclo de vida. O exemplo a seguir define um segredo usando o Secrets Manager e executa comandos usando steps. Para obter informações, consulte O que é AWS Secrets Manager? no Guia do AWS Secrets Manager usuário.

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

Os logs serão semelhantes ao seguinte:

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

Exemplo de variável de ambiente

O exemplo a seguir define as variáveis de ambiente na sequência env. Uma variável S3_BUCKET é definida no buildspec e recebe <bucket-name> como valor. Essa variável é referenciada na condicional if como uma variável de ambiente normal usando o cifrão ($) para acessar o contexto do ambiente de GitHub ação. Para obter mais informações, consulte sequência 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"

Os logs serão semelhantes ao seguinte:

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

Exemplo de variável de ambiente exportada

As variáveis de ambiente exportadas são usadas em conjunto com CodePipeline a exportação de variáveis de ambiente do estágio de construção atual para os estágios subsequentes no pipeline. O exemplo a seguir define uma variável de ambiente exportada na sequência env chamada MY_VARIABLE e grava no arquivo de ambiente GITHUB_ENV.

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

Para obter mais informações, consulte ExportedEnvironmentVariablea Referência AWS CodeBuild da API.