CodePipeline referência de estrutura de tubulação - AWS CodePipeline

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

CodePipeline referência de estrutura de tubulação

Por padrão, todo pipeline criado com êxito no AWS CodePipeline tem uma estrutura válida. No entanto, se um arquivo JSON for criado ou editado manualmente para criar ou atualizar um pipeline do AWS CLI, você poderá criar inadvertidamente uma estrutura inválida. A referência a seguir pode ajudar a entender melhor os requisitos da estrutura do pipeline e como solucionar problemas. Consulte as restrições em Cotas emAWSCodePipeline, que se aplicam a todos os pipelines.

Tipos de ação e provedores válidos em CodePipeline

O formato da estrutura de pipeline é usado para compilar ações e estágios em um pipeline. Um tipo de ação é composto por uma categoria de ação e um tipo de provedor.

Veja a seguir as categorias de ação válidas no CodePipeline:

  • Origem

  • Compilação

  • Teste

  • Implante

  • Aprovação

  • Invoke

Cada categoria de ação tem um conjunto designado de provedores. Cada provedor de ação, como o Amazon S3, tem um nome de provedorS3, como, que deve ser usado noProvider campo na categoria de ação em sua estrutura de pipeline.

Há três valores válidos para o campo Owner na seção da categoria de ação na estrutura do pipeline: AWS, ThirdParty e Custom.

Para localizar o nome do provedor e as informações do proprietário do provedor de ação, consulte Referência da estrutura da ação ou Número de artefatos de entrada e saída para cada tipo de ação.

Essa tabela lista os provedores válidos por tipo de ação.

nota

Para ações do Bitbucket ou do GitHub Enterprise Server, consulte o tópico de referência daCodeStarSourceConnection para ações do Bitbucket GitHub e do GitHub Enterprise Server ação. GitHub

Provedores de ação válidos por tipo de ação
Categoria de ação Provedores de ação válidos Referência da ação
Origem Amazon S3 Ação de origem do Amazon S3
Amazon ECR Amazon ECR
CodeCommit CodeCommit
CodeStarSourceConnection (para ações do Bitbucket GitHub, GitHub Enterprise Server) CodeStarSourceConnection para ações do Bitbucket GitHub e do GitHub Enterprise Server
Compilação CodeBuild AWS CodeBuild
Personalizado CloudBees Número de artefatos de entrada e saída para cada tipo de ação
Jenkins personalizado Número de artefatos de entrada e saída para cada tipo de ação
Personalizado TeamCity Número de artefatos de entrada e saída para cada tipo de ação
Teste CodeBuild AWS CodeBuild
AWS Device Farm Número de artefatos de entrada e saída para cada tipo de ação
Personalizado BlazeMeter Número de artefatos de entrada e saída para cada tipo de ação
ThirdParty GhostInspector Número de artefatos de entrada e saída para cada tipo de ação
Jenkins personalizado Número de artefatos de entrada e saída para cada tipo de ação
ThirdParty StormRunner Carga Micro Focus Número de artefatos de entrada e saída para cada tipo de ação
ThirdParty Nouvola Número de artefatos de entrada e saída para cada tipo de ação
ThirdParty Runscope Número de artefatos de entrada e saída para cada tipo de ação
Implante Amazon S3 Ação de implantação do Amazon S3
AWS CloudFormation AWS CloudFormation
CodeDeploy Número de artefatos de entrada e saída para cada tipo de ação
Amazon ECS Número de artefatos de entrada e saída para cada tipo de ação
Amazon ECS (Azul/Verde) (esta é a ação CodeDeployToECS) Número de artefatos de entrada e saída para cada tipo de ação
Elastic Beanstalk Número de artefatos de entrada e saída para cada tipo de ação
AWS AppConfig AWSAppConfig
AWS OpsWorks Número de artefatos de entrada e saída para cada tipo de ação
Service Catalog Número de artefatos de entrada e saída para cada tipo de ação
Amazon Alexa Número de artefatos de entrada e saída para cada tipo de ação
Personalizado XebiaLabs Número de artefatos de entrada e saída para cada tipo de ação
Aprovação Manual Número de artefatos de entrada e saída para cada tipo de ação
Invoke AWS Lambda AWS Lambda
AWS Step Functions AWS Step Functions

Alguns tipos de ação CodePipeline estão disponíveis somente em determinadasAWS regiões. É possível que um tipo de ação esteja disponível em umaAWS região, mas umAWS provedor para esse tipo de ação não esteja disponível.

Para obter mais informações sobre cada provedor de ações, consulte Integrações aos tipos de ação do CodePipeline.

As seções a seguir fornecem exemplos para informações de provedores e propriedades de configuração para cada tipo de ação.

Requisitos de estrutura de estágios e pipelines no CodePipeline

Um pipeline com dois estágios tem a seguinte estrutura básica:

{ "roleArn": "An IAM ARN for a service role, such as arn:aws:iam::80398EXAMPLE:role/CodePipeline_Service_Role", "stages": [ { "name": "SourceStageName", "actions": [ ... See Requisitos de estrutura de ação em CodePipeline ... ] }, { "name": "NextStageName", "actions": [ ... See Requisitos de estrutura de ação em CodePipeline ... ] } ], "artifactStore": { "type": "S3", "location": "The name of the Amazon S3 bucket automatically generated for you the first time you create a pipeline using the console, such as codepipeline-us-east-2-1234567890, or any Amazon S3 bucket you provision for this purpose" }, "name": "YourPipelineName", "version": 1 }

A estrutura do pipeline tem estes requisitos:

  • Um pipeline deve ter pelo menos dois estágios.

  • O primeiro estágio de um pipeline deve ter pelo menos uma ação de origem. Só pode conter ações de origem.

  • Somente o primeiro estágio de um pipeline pode ter ações de origem.

  • Pelo menos um estágio em cada pipeline deve ter uma ação que não seja uma ação de origem.

  • Os nomes de todos os estágios de um pipeline devem ser exclusivos.

  • Os nomes dos palcos não podem ser editados no CodePipeline console. Se você editar o nome de um estágio usando a AWS CLI e o estágio tiver uma ação com um ou mais parâmetros secretos, como um token OAuth, o valor desses parâmetros secretos não será mantido. É necessário inserir manualmente o valor dos parâmetros (que são mascarados por quatro asteriscos no JSON devolvido pela AWS CLI) e incluí-los na estrutura JSON.

  • OartifactStore campo contém o tipo de compartimento de artefato e a localização de um pipeline com todas as ações na mesmaAWS região. Se você adicionar ações em uma região diferente do seu pipeline, oartifactStores mapeamento será usado para listar o bucket de artefatos para cadaAWS região em que as ações são executadas. Ao criar ou editar um pipeline, é necessário ter um bucket de artefato na região do pipeline e ter um bucket de artefato por região em que planeja executar uma ação.

    O exemplo a seguir mostra a estrutura básica de um pipeline com ações entre regiões que usa o parâmetro artifactStores:

    "pipeline": { "name": "YourPipelineName", "roleArn": "CodePipeline_Service_Role", "artifactStores": { "us-east-1": { "type": "S3", "location": "S3 artifact bucket name, such as codepipeline-us-east-1-1234567890" }, "us-west-2": { "type": "S3", "location": "S3 artifact bucket name, such as codepipeline-us-west-2-1234567890" } }, "stages": [ { ...
  • Os campos de metadados de pipeline são diferentes da estrutura do pipeline e não podem ser editados. Quando você atualiza um pipeline, a data no campo de metadados updated é alterada automaticamente.

  • Quando você edita ou atualiza um pipeline, o nome do pipeline não pode ser alterado.

    nota

    Se você deseja renomear um pipeline existente, pode usar o comando get-pipeline da CLI para criar um arquivo JSON que contenha a estrutura do pipeline. Depois, você pode usar o comando create-pipeline da CLI para criar um pipeline com essa estrutura e dar a ele um novo nome.

O número de versão de um pipeline é gerado e atualizado automaticamente sempre que o pipeline é atualizado.

Requisitos de estrutura de ação em CodePipeline

Uma ação tem a seguinte estrutura de nível elevado:

[ { "inputArtifacts": [ An input artifact structure, if supported for the action category ], "name": "ActionName", "region": "Region", "namespace": "source_namespace", "actionTypeId": { "category": "An action category", "owner": "AWS", "version": "1" "provider": "A provider type for the action category", }, "outputArtifacts": [ An output artifact structure, if supported for the action category ], "configuration": { Configuration details appropriate to the provider type }, "runOrder": A positive integer that indicates the run order within the stage, } ]

Para obter uma lista de exemplos de detalhes de configuration adequados para o tipo de provedor, consulte Detalhes de configuração por tipo de provedor.

A estrutura de ação tem estes requisitos:

  • Os nomes de todas as ações em um estágio devem ser exclusivos.

  • O artefato de entrada de uma ação deve corresponder exatamente ao artefato de saída declarado em uma ação anterior. Por exemplo, se uma ação anterior inclui a seguinte declaração:

    "outputArtifacts": [ { "MyApp" } ],

    e não há outros artefatos de saída, o artefato de entrada de uma ação seguinte deve ser:

    "inputArtifacts": [ { "MyApp" } ],

    Isso ocorre com todas as ações, não importa se estão no mesmo estágio ou em estágios seguintes. No entanto, o artefato de entrada não precisa ser a próxima ação na sequência rígida da ação que forneceu o artefato de saída. Ações em paralelo podem declarar pacotes de artefatos de saída diferentes, que, por sua vez, são usados por ações seguintes diferentes.

  • Os nomes dos artefatos de saída devem ser exclusivos em um pipeline. Por exemplo, um pipeline pode incluir uma ação que tenha um artefato de saída com o nome "MyApp" e outra ação que tenha um artefato de saída com o nome "MyBuiltApp". Mas um pipeline não pode incluir duas ações que tenham um artefato de saída com o nome "MyApp".

  • As ações entre regiões usam oRegion campo para designar aAWS região em que as ações serão criadas. OsAWS recursos criados para essa ação devem ser criados na mesmaregion região da Não é possível criar ações entre regiões para os seguintes tipos de ação:

    • Ações de origem

    • Ações por provedores de terceiros

    • Ações por provedores personalizados

  • As ações podem ser configuradas com variáveis. Use o campo namespace para definir as informações de namespace e de variáveis para as variáveis de execução. Para obter informações de referência sobre variáveis de execução e variáveis de saída de ação, consulte Variáveis.

  • Para todos os tipos de ação atualmente suportados, a única cadeia de caracteres válida do proprietário éAWSThirdParty, ouCustom. Para obter mais informações, consulte a Referência da API do CodePipeline .

  • O valor runOrder padrão de uma ação é 1. O valor deve ser um inteiro positivo (número natural). Não é permitido usar frações, números decimais ou negativos ou o número zero. Para especificar uma sequência de ações em série, use o menor número para a primeira ação e os maiores números para cada uma das ações em sequência restantes. Para especificar ações paralelas, use o mesmo número inteiro para cada ação que deseja executar em paralelo. No console, você pode especificar uma sequência serial para uma ação escolhendo Adicionar grupo de ações no nível do estágio em que deseja que ela seja executada, ou você pode especificar uma sequência parallel escolhendo Adicionar ação. Grupo de ação se refere a uma ordem de execução de uma ou mais ações no mesmo nível.

    Por exemplo, se você deseja que três ações sejam executadas em sequência em um estágio, você daria o valor runOrder de 1 para a primeira ação, o valor runOrder de 2 para a segunda ação e o valor runOrder de 3 para a terceira ação. No entanto, se você deseja que a segunda ação e a terceira ação sejam executadas em paralelo, você daria o valor runOrder de 1 para a primeira ação e o valor runOrder de 2 para a segunda e a terceira.

    nota

    A numeração das ações em série não precisa estar em uma sequência rígida. Por exemplo, se você tem três ações em uma sequência e decide remover a segunda ação, você não precisa numerar novamente o valor runOrder da terceira ação. Como o valor runOrder dessa ação (3) é superior ao valor runOrder da primeira ação (1), ele será executado em série após a primeira ação no estágio.

  • Ao usar um bucket do Amazon S3 como local de implantação, você também especifica uma chave de objeto. Uma chave de objeto pode ser um nome de arquivo (objeto) ou uma combinação de um prefixo (caminho da pasta) e um nome de arquivo. Você pode usar variáveis para especificar o nome do local que deseja que o pipeline use. As ações de implantação do Amazon S3 são compatíveis com o uso das variáveis nas chaves de objeto do Amazon S3 a seguir.

    Uso de variáveis no Amazon S3
    Variável Exemplo de entrada do console Saída
    datetime js-application/{datetime}.zip Timestamp UTC neste formato: <YYYY>-<MM>-DD>_<HH>-<MM>-<SS>

    Exemplo:

    js-application/2019-01-10_07-39-57.zip

    uuid js-application/{uuid}.zip O UUID é um identificador globalmente exclusivo com garantia de diferenciação de qualquer outro identificador. O UUID está neste formato (todos os dígitos no formato hexadecimal): <8 dígitos>-<4 dígitos>-4 dígitos>-<4 dígitos>-<12 dígitos>

    Exemplo:

    js-application/54a60075-b96a-4bf3-9013-db3a9EXAMPLE.zip

  • Estas são asactionTypeId categorias válidas para CodePipeline:

    • Source

    • Build

    • Approval

    • Deploy

    • Test

    • Invoke

    Alguns tipos de provedores e opções de configuração são fornecidos aqui.

  • Os tipos válidos de provedor de uma categoria de ação dependem da categoria. Por exemplo, para um tipo de ação de origem, um tipo de provedor válido é S3, GitHub, CodeCommit ou Amazon ECR. Esse exemplo mostra a estrutura para uma ação de origem com um provedor S3:

    "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3"},
  • Toda ação deve ter uma configuração válida de ação, que depende do tipo de provedor para a ação em questão. A tabela a seguir mostra os elementos de configuração de ação necessários para cada tipo de provedor válido:

    Propriedades de configuração de ação para tipos de provedor
    Nome do provedor Nome do provedor no tipo de ação Propriedades de configuração A propriedade é necessária?
    Amazon S3 (provedor de ações de implantação) Para obter mais informações, incluindo exemplos relacionados aos parâmetros de ação de implantação do Amazon S3, consulteAção de implantação do Amazon S3.
    Amazon S3 (provedor de ações de origem) Para obter mais informações, incluindo exemplos relacionados aos parâmetros de ação de origem do Amazon S3, consulteAção de origem do Amazon S3.
    Amazon ECR Para obter mais informações, incluindo exemplos relacionados aos parâmetros do Amazon ECR, consulteAmazon ECR.
    CodeCommit Para obter mais informações, incluindo exemplos relacionados aos CodeCommit parâmetros, consulteCodeCommit.
    GitHub Para obter mais informações, incluindo exemplos relacionados aos GitHub parâmetros, consulteGitHubreferência da estrutura de ação de origem da versão 1.
    AWS CloudFormation Para obter mais informações, incluindo exemplos relacionados a parâmetros do AWS CloudFormation, consulte AWS CloudFormation.
    CodeBuild Para obter mais descrições e exemplos relacionados aos CodeBuild parâmetros, consulteAWS CodeBuild.
    CodeDeploy Para obter mais descrições e exemplos relacionados aos CodeDeploy parâmetros, consulteAWS CodeDeploy.
    AWS Device Farm Para obter mais descrição e exemplos relacionados a parâmetros do AWS Device Farm, consulte AWS Device Farm.
    AWS Elastic Beanstalk ElasticBeanstalk ApplicationName Obrigatório
    EnvironmentName Obrigatório
    AWS Lambda Para obter mais informações, incluindo exemplos relacionados a parâmetros do AWS Lambda, consulte AWS Lambda.
    AWS OpsWorks Stacks OpsWorks Stack Obrigatório
    Layer Optional
    App Obrigatório
    Amazon ECS Para obter mais descrições e exemplos relacionados aos parâmetros do Amazon ECS, consulteServiço Amazon Elastic Container.
    Amazon ECS e CodeDeploy (azul/verde) Para obter mais descrições e exemplos relacionados ao Amazon ECS e aos parâmetros CodeDeploy azul/verde, consulteAmazon Elastic Service Service Service Service Service ServiceCodeDeploy.
    Service Catalog ServiceCatalog TemplateFilePath Obrigatório
    ProductVersionName Obrigatório
    ProductType Obrigatório
    ProductVersionDescription Optional
    ProductId Obrigatório
    Alexa Skills Kit AlexaSkillsKit ClientId Obrigatório
    ClientSecret Obrigatório
    RefreshToken Obrigatório
    SkillId Obrigatório
    Jenkins O nome da ação que você forneceu no CodePipeline Plugin para Jenkins (por exemplo, MyJenkinsProviderName) ProjectName Obrigatório
    Aprovação manual Manual CustomData Optional
    ExternalEntityLink Optional
    NotificationArn Optional

Número de artefatos de entrada e saída para cada tipo de ação

Dependendo do tipo de ação, você poderá ter o seguinte número de artefatos de entrada e de saída:

Limitações dos tipos de ação dos artefatos
Proprietário Tipo de ação Provedor Número válido de artefatos de entrada Número válido de artefatos de saída
AWS Origem Amazon S3 0 1
AWS Origem CodeCommit 0 1
AWS Origem Amazon ECR 0 1
ThirdParty Origem GitHub 0 1
AWS Compilação CodeBuild 1 – 5 0 – 5
AWS Teste CodeBuild 1 – 5 0 – 5
AWS Teste AWS Device Farm 1 0
AWS Aprovação Manual 0 0
AWS Implante Amazon S3 1 0
AWS Implante AWS CloudFormation 0 – 10 0 – 1
AWS Implante CodeDeploy 1 0
AWS Implante AWS Elastic Beanstalk 1 0
AWS Implante AWS OpsWorks Stacks 1 0
AWS Implante Amazon ECS 1 0
AWS Implante Service Catalog 1 0
AWS Invoke AWS Lambda 0 – 5 0 – 5
ThirdParty Implante Alexa Skills Kit 1 – 2 0
Custom Compilação Jenkins 0 – 5 0 – 5
Custom Teste Jenkins 0 – 5 0 – 5
Custom Qualquer categoria compatível Conforme especificado na ação personalizada 0 – 5 0 – 5

Configurações padrão para o PollForSourceChanges parâmetro

O padrão do parâmetro PollForSourceChanges é determinado pelo método usado para criar o pipeline, conforme descrito na tabela a seguir. Em muitos casos, o parâmetro PollForSourceChanges é padronizado como verdadeiro e deve ser desativado.

Quando o parâmetro PollForSourceChanges for padronizado como verdadeiro, faça o seguinte:

  • Adicione o parâmetro PollForSourceChanges ao arquivo JSON ou ao modelo do AWS CloudFormation.

  • Crie recursos de detecção de alterações (regra deCloudWatch eventos, conforme aplicável).

  • Defina o parâmetro PollForSourceChanges para false.

    nota

    Se você criar uma regra de CloudWatch eventos ou webhook, deverá definir o parâmetro como false para evitar acionar o pipeline mais de uma vez.

    OPollForSourceChanges parâmetro não é usado para ações de origem do Amazon ECR.

  • PollForSourceChanges padrões de parâmetros
    Origem Método de criação Exemplo de saída da estrutura JSON de "configuração"
    CodeCommit O pipeline é criado com o console (e recursos de detecção de alterações são criados pelo console). O parâmetro é exibido na saída da estrutura de pipeline e assume false como padrão.
    BranchName": "main", "PollForSourceChanges": "false", "RepositoryName": "my-repo"
    O pipeline é criado com a CLI ouAWS CloudFormation, e oPollForSourceChanges parâmetro não é exibido na saída JSON, mas é definido comotrue
    BranchName": "main", "RepositoryName": "my-repo"
    Amazon S3 O pipeline é criado com o console (e recursos de detecção de alterações são criados pelo console). O parâmetro é exibido na saída da estrutura de pipeline e assume false como padrão.
    "S3Bucket": "my-bucket", "S3ObjectKey": "object.zip", "PollForSourceChanges": "false"
    O pipeline é criado com a CLI ouAWS CloudFormation, e oPollForSourceChanges parâmetro não é exibido na saída JSON, mas é definido comotrue
    "S3Bucket": "my-bucket", "S3ObjectKey": "object.zip"
    GitHub O pipeline é criado com o console (e recursos de detecção de alterações são criados pelo console). O parâmetro é exibido na saída da estrutura de pipeline e assume false como padrão.
    "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName" "PollForSourceChanges": "false", "Branch": "main" "OAuthToken": "****"
    O pipeline é criado com a CLI ouAWS CloudFormation, e oPollForSourceChanges parâmetro não é exibido na saída JSON, mas é definido comotrue
    "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName", "Branch": "main", "OAuthToken": "****"

    ² SePollForSourceChanges tiver sido adicionado em algum ponto à estrutura JSON ou aoAWS CloudFormation modelo, ele será exibido conforme mostrado:

    "PollForSourceChanges": "true",

    ³ Para obter informações sobre os recursos de detecção de alterações que se aplicam a cada provedor de origem, consulte Métodos de detecção de alterações.

Detalhes de configuração por tipo de provedor

Essa seção lista parâmetros de configuration válidos para cada provedor de ações.

O exemplo a seguir mostra uma configuração válida para uma ação de implantação que usa o Service Catalog, para um pipeline que foi criado no console sem um arquivo de configuração separado:

"configuration": { "TemplateFilePath": "S3_template.json", "ProductVersionName": "devops S3 v2", "ProductType": "CLOUD_FORMATION_TEMPLATE", "ProductVersionDescription": "Product version description", "ProductId": "prod-example123456" }

O exemplo a seguir mostra uma configuração válida para uma ação de implantação que usa o Service Catalog, para um pipeline que foi criado no console com um arquivo desample_config.json configuração separado:

"configuration": { "ConfigurationFilePath": "sample_config.json", "ProductId": "prod-example123456" }

O exemplo a seguir mostra uma configuração válida para uma ação de implantação que usa o Alexa Skills Kit:

"configuration": { "ClientId": "amzn1.application-oa2-client.aadEXAMPLE", "ClientSecret": "****", "RefreshToken": "****", "SkillId": "amzn1.ask.skill.22649d8f-0451-4b4b-9ed9-bfb6cEXAMPLE" }

O exemplo a seguir mostra uma configuração válida para uma aprovação manual:

"configuration": { "CustomData": "Comments on the manual approval", "ExternalEntityLink": "http://my-url.com", "NotificationArn": "arn:aws:sns:us-west-2:12345EXAMPLE:Notification" }