Usa la sintassi GitHub delle azioni in un buildspec in AWS CodeBuild - AWS CodeBuild

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa la sintassi GitHub delle azioni in un buildspec in AWS CodeBuild

È possibile utilizzare un action runner CodeBuild gestito per eseguire Actions all'interno di. GitHub CodeBuild Questo può essere fatto aggiungendolo steps a qualsiasi fase del file buildspec.

CodeBuild buildspecs supporta un elenco di passaggi di GitHub azione sequenziali che vengono eseguiti in una fase separata dai comandi. CodeBuild Queste GitHub azioni si integrano con CodeBuild le funzionalità esistenti, che includono la memorizzazione nella cache delle dipendenze, le build in batch, l'accesso a e altro ancora. AWS Secrets Manager

Come posso iniziare a usare un' GitHub azione nelle mie specifiche di build?

I passaggi di alto livello per utilizzare un' GitHub azione nella tua buildspec sono i seguenti:

  1. Se non l'hai già fatto, collega il tuo progetto a. GitHub

    A tale scopo, puoi effettuare una delle seguenti operazioni:

    Nota

    Questa operazione deve essere eseguita solo se non ti sei connesso GitHub a un altro progetto.

  2. Nelle specifiche di costruzione del tuo progetto, puoi aggiungeresteps, ognuna delle quali fa riferimento a un'azione. GitHub Questo può essere modificato nella CodeBuild console o nel repository di origine. Ogni fase di compilazione supporta un elenco di comandi o un elenco di passaggi, ma entrambi non possono essere utilizzati nella stessa fase. Per ulteriori informazioni, consulta Usa la sintassi GitHub delle azioni in un buildspec in AWS CodeBuild.

Quali GitHub azioni posso usare nel mio buildspec?

Puoi utilizzare qualsiasi azione disponibile nel GitHub Marketplace che non sia in conflitto con queste limitazioni.

Posso utilizzare fornitori di sorgenti diversi da GitHub quando utilizzo GitHub Actions nelle mie specifiche di build?

Sì, ma la connessione a GitHub è comunque necessaria per autenticarsi e accedere ad GitHub Actions. GitHub Per ulteriori informazioni, consulta GitHub e token di accesso GitHub Enterprise Server.

Perché devo connettermi GitHub come provider di origine per poter utilizzare GitHub Actions nelle mie specifiche di build?

Per utilizzare GitHub Actions nel tuo buildspec, il codice sorgente deve essere scaricato su un computer di build. I download anonimi avranno una frequenza limitata, quindi la connessione a può contribuire a GitHub garantire un accesso coerente.

Quanto costa usare GitHub Actions nel mio buildspec?

L'utilizzo di GitHub Actions nella tua buildspec è supportato senza costi aggiuntivi.

Quali regioni supportano l'utilizzo di GitHub Actions nel mio buildspec?

L'utilizzo di GitHub Actions nelle tue specifiche di build è supportato in tutte le regioni. CodeBuild Per ulteriori informazioni su Regioni AWS dove CodeBuild è disponibile, consulta AWS Servizi per regione.

Le migliori pratiche per l'utilizzo di GitHub Actions nelle specifiche di build

GitHub Le azioni sono open source, create e gestite dalla community. Seguiamo il modello di responsabilità condivisa e consideriamo il codice sorgente di GitHub Actions come dati dei clienti di cui sei responsabile. GitHub Ad Actions può essere concesso l'accesso a segreti, token del repository, codice sorgente e link agli account. Assicurati di avere fiducia nell'affidabilità e nella sicurezza delle GitHub azioni che intendi eseguire.

Linee guida più specifiche e migliori pratiche di sicurezza per GitHub Actions:

Limitazioni all'uso delle GitHub azioni nelle specifiche di build in CodeBuild

  • GitHub Le azioni nella tua buildspec che si basano internamente sul githubcontesto o che fanno riferimento a risorse GitHub specifiche, come richieste pull e problemi, non sono supportate in. CodeBuild Ad esempio, le seguenti azioni non funzioneranno in: CodeBuild

    • GitHub Azioni che tentano di aggiungere, modificare o aggiornare GitHub risorse, ad esempio azioni che aggiornano le richieste pull o creano problemi in GitHub.

    Nota

    La maggior parte GitHub delle azioni ufficiali elencate in https://github.com/actions si basano sul github contesto. Utilizza invece le azioni disponibili nel GitHub Marketplace.

  • GitHub Le azioni nella tua buildspec che sono azioni del contenitore Docker funzioneranno, ma il tuo progetto di compilazione deve avere la modalità privilegiata abilitata ed essere eseguito dall'utente Docker predefinito (root).

  • GitHub Le azioni nella tua buildspec non sono supportate nei CodeBuild progetti configurati per l'esecuzione su Windows.

  • GitHub I job Action (gruppi di passaggi) e le proprietà GitHub Action Job nelle tue buildspec non sono supportati.

  • GitHub Le azioni nel tuo buildspec non sono supportate nei CodeBuild progetti configurati per essere attivati da un webhook per un repository Git pubblico. Per ulteriori informazioni, consulta. git-credential-helper

  • Le build VPC senza accesso pubblico a Internet non possono eseguire GitHub azioni nelle specifiche della build.

  • Ogni fase di compilazione supporta un elenco di comandi o un elenco di passaggi, ma entrambi non possono essere utilizzati nella stessa fase. Ad esempio, nell'esempio seguente, i passaggi vengono utilizzati nella fase di precompilazione per elencare GitHub le azioni, mentre i comandi vengono utilizzati nella fase di compilazione per elencare CodeBuild i comandi.

    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 Riferimento buildspec di Action Runner

Questo argomento contiene il riferimento buildspec per le proprietà di Action runner. GitHub

steps

Sequenza opzionale. I passaggi vengono utilizzati per eseguire comandi e azioni in. CodeBuild Per ulteriori informazioni, consulta Usa la sintassi GitHub delle azioni in un buildspec in AWS CodeBuild.

Nota

Ogni fase di compilazione supporta un elenco commands o un elenco disteps, ma entrambi non possono essere utilizzati nella stessa fase.

Ogni fase di compilazione contiene le seguenti proprietà.

id

Facoltativo. L'identificatore del passo che può essere usato per fare riferimento al passo in altri contesti.

if

Facoltativo. Un'istruzione condizionale che può essere utilizzata per impedire l'esecuzione di un passaggio a meno che non venga soddisfatta una condizione. Questa istruzione può utilizzare qualsiasi contesto supportato, ad esempio fare riferimento a variabili ambientali da CodeBuild e a espressioni.

name

Facoltativo. Il nome del passo. Se il nome non è specificato, il nome predefinito sarà il testo specificato nel run comando.

usi

L'azione eseguita per il passaggio. Alcune azioni richiedono l'impostazione degli input utilizzandowith. Fate riferimento al README dell'azione per determinare quali input sono necessari. Per ulteriori informazioni, consulta Quali GitHub azioni posso usare nel mio buildspec?.

Se uses è specificato nella fase di compilazione, non può essere utilizzato con. run

Nota

Si consiglia di includere la versione dell'azione che si sta utilizzando. Questo può essere fatto specificando un tag Git ref, SHA o Docker. Per ulteriori informazioni, consulta la sintassi steps.uses.

eseguire

Comando che esegue programmi da riga di comando. Possono essere comandi a riga singola o comandi su più righe. Per impostazione predefinita, questi comandi vengono eseguiti utilizzando shell diverse da quelle di accesso. Per scegliere una shell diversa, usa. shell

Se run è specificato nella fase di compilazione, non può essere utilizzato conuses.

guscio

Facoltativo. La shell specificata per questa sequenza. Per i parametri di shell supportati, vedere steps.shell. Se non specificata, la shell usata è bash. Se bash non è disponibile, viene usata sh.

con

Facoltativo. Una mappa dei parametri di input definiti dall'azione. Ogni parametro è una coppia chiave/valore.

con.args

Facoltativo. Una stringa che definisce gli input per un contenitore Docker.

con.entrypoint

Facoltativo. Il punto di ingresso Docker specificato per il Dockerfile.

env

Facoltativo. Le variabili specificate per i passaggi da utilizzare nell'ambiente.

continue-on-error

Facoltativo. Un valore booleano che indica se un errore di questa sequenza di passaggi può essere ignorato.

false

Il valore predefinito. Se questa sequenza di passaggi fallisce, la compilazione avrà esito negativo.

true

Se questa sequenza di passaggi fallisce, la compilazione può comunque avere successo.

timeout (minuti)

Facoltativo. Il numero massimo di minuti per cui il passaggio può essere eseguito prima del termine. Per impostazione predefinita, non è previsto alcun timeout. Se il timeout del passaggio supera il timeout di compilazione, il passaggio si interromperà quando viene raggiunto il timeout di compilazione.

Di seguito è riportato un esempio di utilizzo dell'azione 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 Esempi di sintassi delle azioni con AWS CodeBuild

Questi gruppi di esempi possono essere usati per sperimentare GitHub le azioni nel tuo buildspec in. CodeBuild

Esempio di Super-Linter Action GitHub

Questo esempio dimostra come aggiungere l'azione GitHub Super-Linter a un progetto. CodeBuild L'azione Super-Linter ispeziona il codice, trova le aree in cui il codice presenta errori, problemi di formattazione e costrutti sospetti, quindi invia i risultati alla console. CodeBuild

Puoi aggiungere l' GitHub azione Super-Linter al tuo progetto aggiornando la sezione delle fasi del tuo CodeBuild file buildspec.

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

I log di Super-Linter avranno un aspetto simile ai seguenti:

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

Esempio di grafico di creazione in batch

L'esempio seguente definisce un grafico di compilazione che crea una catena di dipendenze ed esegue comandi utilizzandosteps. In questo esempio, build1 viene eseguito per primo perché non ha dipendenze. Since dipende build2 dabuild1, quindi build2 viene eseguito dopo il completamento della build 1. Per informazioni, consulta Crea un grafico.

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

Esempio CodeGuru di Amazon Reviewer

Amazon CodeGuru Reviewer rileva problemi nel codice Java e Python e consiglia come risolverli. L'esempio seguente utilizza CodeGuru Reviewer per fornire revisioni complete del codice di analisi del repository. Queste revisioni del codice scansionano tutto il codice in un ramo specificato. Per informazioni, consulta Create code review with GitHub Actions nella Amazon CodeGuru Reviewer User Guide.

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

Il bucket Amazon S3 deve iniziare con il prefisso. codeguru-reviewer-

I log avranno un aspetto simile ai seguenti:

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 volta completato il processo di Amazon CodeGuru Reviewer, viene generato un report sarif come CodeBuild artefatto. Per informazioni, consulta l'analisi completa del repository nella Amazon CodeGuru Reviewer User Guide.

AWS Secrets Manager esempio

AWS Secrets Manager ti aiuta a gestire, recuperare e ruotare le credenziali del database, le credenziali delle applicazioni, i token OAuth, le chiavi API e altri segreti durante il loro ciclo di vita. L'esempio seguente definisce un segreto utilizzando Secrets Manager ed esegue comandi utilizzandosteps. Per informazioni, consulta What is AWS Secrets Manager? nella Guida AWS Secrets Manager per l'utente.

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

I registri avranno un aspetto simile ai seguenti:

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

Esempio di variabile d'ambiente

L'esempio seguente definisce le variabili di ambiente nella env sequenza. <bucket-name>Una variabile S3_BUCKET è definita in buildspec e assegnata come valore. A questa variabile viene fatto riferimento nel condizionale if come una normale variabile di ambiente utilizzando il simbolo del dollaro ($) per accedere al contesto Action env. GitHub Per ulteriori informazioni, vedere sequenza. 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"

I log avranno un aspetto simile ai seguenti:

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

Esempio di variabile di ambiente esportata

Le variabili di ambiente esportate vengono utilizzate insieme a CodePipeline per esportare le variabili di ambiente dalla fase di compilazione corrente alle fasi successive della pipeline. L'esempio seguente definisce una variabile di ambiente esportata nella env sequenza denominata MY_VARIABLE e la scrive nel file di ambiente GITHUB_ENV.

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

Per ulteriori informazioni, consulta l'API Reference. ExportedEnvironmentVariableAWS CodeBuild