Use o procedimento a seguir para criar um pipeline que use o CodeBuild para compilar o código-fonte.
Para usar a AWS CLI para criar um pipeline que implante o código-fonte compilado ou que somente o teste, é possível adaptar as instruções em Editar um pipeline (AWS CLI) e em CodePipeline pipeline structure reference no Guia do usuário do AWS CodePipeline.
-
Crie ou identifique um projeto de compilação no CodeBuild. Para obter mais informações, consulte Criar um projeto de compilação.
Importante
O projeto de compilação deve definir as configurações de artefato de saída de compilação (mesmo que o CodePipeline as substitua). Para obter mais informações, consulte a descrição de
artifacts
em Criar um projeto de compilação (AWS CLI). -
Garanta que você configurou a AWS CLI com a chave de acesso AWS e a chave de acesso secreta AWS que correspondam a uma das entidades do IAM descritas neste tópico. Para obter mais informações, consulte Noções básicas de configuração da AWS Command Line Interface no Guia do usuário da AWS Command Line Interface.
-
Crie um arquivo formatado JSON que represente a estrutura do pipeline. Nomeie o arquivo como
create-pipeline.json
ou algo similar. Por exemplo, essa estrutura formatada em JSON cria um pipeline com uma ação de origem que faz referência a um bucket de entrada do S3 e uma ação de compilação que use o CodeBuild:{ "pipeline": { "roleArn": "arn:aws:iam::
<account-id>
:role/<AWS-CodePipeline-service-role-name>
", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "MyApp" } ], "configuration": { "S3Bucket": "<bucket-name>
", "S3ObjectKey": "<source-code-file-name.zip>
" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "default" } ], "configuration": { "ProjectName": "<build-project-name>
" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<CodePipeline-internal-bucket-name>
" }, "name": "<my-pipeline-name>
", "version": 1 } }Nesses dados formatados JSON:
-
O valor de
roleArn
deve corresponder ao ARN do perfil de serviço do CodePipeline que você criou ou identificou como parte dos pré-requisitos. -
Os valores de
S3Bucket
eS3ObjectKey
naconfiguration
presumem que o código-fonte esteja armazenado no bucket do S3. Para configurações de outros tipos de repositório de código-fonte, consulte CodePipeline pipeline structure reference no Guia do usuário do AWS CodePipeline. -
O valor de
ProjectName
é o nome do projeto de compilação do CodeBuild criado anteriormente, neste procedimento. -
O valor de
location
é o nome do bucket S3 usado por este pipeline. Para obter mais informações, consulte Create a policy for an S3 Bucket to use as the artifact store for CodePipeline no Guia do usuário do AWS CodePipeline. -
O valor de
name
é o nome deste pipeline. Todos os nomes de pipeline devem ser únicos em sua conta.
Embora esses dados descrevam somente uma ação de origem e uma ação de build, você pode adicionar ações para atividades relacionadas à execução do teste, implantação do artefato de build, chamada de funções AWS Lambda, entre outras. Para obter mais informações, consulte Referência da estrutura do pipeline do AWS CodePipeline no Guia do usuário do AWS CodePipeline.
-
-
Alterne para a pasta que contém o arquivo JSON e, depois, execute o comando create-pipeline do CodePipeline, especificando o nome do arquivo:
aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json
nota
É necessário criar o pipeline em uma região da AWS onde o CodeBuild seja compatível. Para obter mais informações, consulte AWS CodeBuild no Referência geral da Amazon Web Services.
Os dados formatados em JSON são exibidos na saída e o CodePipeline cria o pipeline.
-
Para obter informações sobre o status do pipeline, execute o comando get-pipeline-state do CodePipeline, especificando o nome do pipeline:
aws codepipeline get-pipeline-state --name
<my-pipeline-name>
Na saída, procure informações que confirme que o build foi executado com sucesso. As elipses (
...
) são usadas para exibir dados que foram omitidos para agilizar.{ ... "stageStates": [ ... { "actionStates": [ { "actionName": "CodeBuild", "latestExecution": { "status": "SUCCEEDED", ... }, ... } ] } ] }
Se você executar esse comando muito cedo, poderá não ver as informações sobre a ação de build. Você pode precisar executar esse comando várias vezes até que o pipeline tenha concluído a execução da ação de build.
-
Depois de um build bem-sucedido, siga estas instruções para obter o artefato de saída de build. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. nota
Você também pode obter o artefato de saída de compilação selecionando o link Criar artefatos na página de detalhes da compilação relacionada, no console do CodeBuild. Para exibir essa página, despreze as etapas restantes deste procedimento e consulte Visualizar detalhes de compilação (console).
-
Na lista de bucket, abra o bucket usado pelo pipeline. O nome do bucket deve seguir o formato
codepipeline-
. É possível obter o nome do bucket pelo arquivo<region-ID>
-<random-number>
create-pipeline.json
ou executando o comando get-pipeline do CodePipeline para obter o nome do bucket.aws codepipeline get-pipeline --name
<pipeline-name>
Na saída, o objeto
pipeline
contém um objetoartifactStore
, que contém um valorlocation
com o nome do bucket. -
Abra a pasta que corresponda ao nome do seu pipeline (por exemplo,
).<pipeline-name>
-
Naquela pasta, abra a pasta denominada
default
. -
Extraia o conteúdo do arquivo . Se houver vários arquivos na pasta, extraia o conteúdo do arquivo com o carimbo Última modificação mais recente. (Talvez você precise atribuir ao arquivo uma extensão
.zip
, de maneira que possa trabalhar com ele no utilitário ZIP do sistema.) O artefato de saída de compilação está no conteúdo extraído do arquivo.