A conexão é uma tomada entre a AWS e o seu GitHub (ou GitLab, ou Bitbucket): você autoriza uma vez, no console, e a esteira passa a ler o repositório sozinha — sem senha, sem token copiado num arquivo.
A maioria das empresas guarda o código no GitHub ou no GitLab, não no CodeCommit. Pra esteira da AWS enxergar esse código, ela precisa de uma conexão. É por isso que, em vaga de DevOps com AWS, "CodePipeline + GitHub" aparece muito mais que "CodePipeline + CodeCommit". O serviço já se chamou CodeStar Connections — o comando antigo, aws codestar-connections, ainda funciona.
Cada um deles roda de verdade no terminal do CLImb, com a mesma saída e as mesmas mensagens de erro que a AWS devolve.
aws codeconnections list-connectionsUSO
aws codeconnections list-connections [--provider-type-filter GitHub] [--host-arn-filter <arn>]
aws codeconnections create-connectionUSO
aws codeconnections create-connection --connection-name <nome> --provider-type GitHub|GitLab|Bitbucket aws codeconnections create-connection --connection-name <nome> --host-arn <arn-do-host>
aws codeconnections get-connectionUSO
aws codeconnections get-connection --connection-arn <arn>
aws codebuild create-projectUSO
aws codebuild create-project --name <nome> \ --source type=GITHUB,location=https://github.com/<org>/<repo> \ --artifacts type=NO_ARTIFACTS \ --environment type=LINUX_CONTAINER,image=aws/codebuild/standard:7.0,computeType=BUILD_GENERAL1_SMALL \ --service-role arn:aws:iam::<conta>:role/<role>
aws codepipeline create-pipelineUSO
aws codepipeline create-pipeline --cli-input-json file://<planta>.json
aws codepipeline start-pipeline-executionUSO
aws codepipeline start-pipeline-execution --name <esteira>
aws codeconnections create-hostUSO
aws codeconnections create-host --name <nome> --provider-type GitHubEnterpriseServer|GitLabSelfManaged --provider-endpoint https://<servidor>
aws codeconnections get-hostUSO
aws codeconnections get-host --host-arn <arn>
aws codeconnections list-hostsUSO
aws codeconnections list-hosts
aws codeconnections delete-hostUSO
aws codeconnections delete-host --host-arn <arn>
aws codeconnections delete-connectionUSO
aws codeconnections delete-connection --connection-arn <arn>
Cada atividade é um pedido de trabalho, do jeito que ele chega no dia a dia — você resolve digitando os comandos, não escolhendo alternativa.
O time da vitrine (a loja online) guarda o código no GitHub, na organização climb-labs — não no CodeCommit. Pra esteira da AWS enxergar esse código, ela precisa de uma conexão. Veja se já existe alguma.
Crie a conexão github-climb-labs com o provedor GitHub. É o marco da trilha — e repare no aviso: ela nasce pendente.
Consulte a conexão github-climb-labs pelo ARN que voltou e veja o ConnectionStatus.
A Paula, do time de plataforma, entrou no console e autorizou o app da AWS no GitHub (esse passo não existe na CLI). Confira de novo — agora só o status, em texto.
A conta vai ter conexões de vários provedores. Liste só as do GitHub.
A planta da esteira da vitrine já está pronta: esteira-github.json. Leia e repare no estágio de origem: o provider é CodeStarSourceConnection, com o ConnectionArn da sua conexão e o repositório climb-labs/vitrine.
A esteira precisa do bucket de artefatos vitrine-artefatos antes de nascer. Crie.
Crie o projeto de build vitrine-build no CodeBuild, com fonte e artefato CODEPIPELINE, máquina LINUX_CONTAINER com aws/codebuild/standard:7.0 no tamanho BUILD_GENERAL1_SMALL e a role arn:aws:iam::123456789012:role/codebuild-servico.
Crie a esteira pela planta esteira-github.json. Ela já sai rodando — e o primeiro estágio vai buscar o código no GitHub pela conexão.
Acompanhe a vitrine-esteira até os dois estágios ficarem Succeeded. No Source, o currentRevision é o commit que veio do GitHub.
Um parceiro de frete usa o GitLab. Crie a conexão gitlab-parceiro (provedor GitLab) e, sem esperar ninguém autorizar, crie a esteira da esteira-gitlab.json e olhe o painel. Descubra por que o Source falhou.
O parceiro autorizou no console. Confirme que a gitlab-parceiro ficou AVAILABLE e rode a frete-esteira de novo até o Source passar.
A mesma conexão serve pra qualquer repositório da organização. Crie a esteira da esteira-testes-github.json (repositório climb-labs/testes-quebrados), acompanhe e veja em que estágio ela para — agora o problema não é a conexão.
A área de folha de pagamento usa um GitHub Enterprise instalado no datacenter, em https://git.climb-labs.internal. Registre ele como o host ghe-empresa (provedor GitHubEnterpriseServer).
Consulte o host ghe-empresa pelo ARN — e de novo, depois que o time de rede terminar a configuração no console.
A equipe de dados roda um GitLab próprio em https://gitlab.dados.climb-labs.internal. Registre como o host gitlab-dados (provedor GitLabSelfManaged) e acompanhe até ficar AVAILABLE.
Crie a conexão ghe-folha em cima do host ghe-empresa (em vez do --provider-type, vai o --host-arn) e confira até ela ficar AVAILABLE.
Liste os hosts registrados na conta.
Antes de mexer no GitHub Enterprise, veja quais conexões dependem dele: liste as conexões filtrando pelo host ghe-empresa, e confira a lista de hosts.
A equipe de dados desistiu do GitLab próprio e ninguém chegou a criar conexão nele. Apague o host gitlab-dados e confira a lista de hosts.
O contrato com o parceiro de frete acabou. Corte o acesso: apague a conexão gitlab-parceiro.
A folha migrou pro GitHub.com. Desligue o host ghe-empresa — na ordem que a AWS exige: primeiro a conexão ghe-folha, depois o host.
Ler explica. Digitar fixa. No CLImb você roda os comandos de verdade num terminal AWS simulado — o estado persiste entre eles, como na nuvem real.
As 3 primeiras atividades desta trilha são abertas; o resto faz parte do plano Pro.
Começar — 3 atividades grátis