Como administrador ou desenvolvedor do Code Stream, você pode usar o gatilho Docker no Code Stream. O gatilho do Docker executa um pipeline de entrega contínua (CD) independente sempre que um artefato de construção é criado ou atualizado. O gatilho do Docker executa o pipeline de CD, que envia o artefato novo ou atualizado como uma imagem de contêiner para um repositório do Docker Hub. O pipeline de CD pode ser executado como parte de suas compilações automatizadas.

Por exemplo, para implantar continuamente a imagem do contêiner atualizado por meio do seu pipeline de CD, use o gatilho do Docker. Quando a imagem do contêiner é verificada no registro do Docker, o webhook no Docker Hub notifica o Code Stream que a imagem foi alterada. Essa notificação aciona o pipeline de CD para ser executado com a imagem de contêiner atualizada e carrega a imagem no repositório do Docker Hub.

Para usar o gatilho do Docker, você executa várias etapas no Code Stream.

Tabela 1. Como usar o gatilho do Docker
O que fazer... Mais informações sobre esta ação...

Criar um endpoint de registro do Docker.

Para que o Code Stream dispare o pipeline, é necessário ter um endpoint de registro do Docker. Se o endpoint não existir, é possível selecionar uma opção que o crie ao adicionar o webhook para o gatilho do Docker.

O endpoint de registro do Docker inclui o URL para o repositório do Docker Hub.

Adicionar parâmetros de entrada ao pipeline que injeta parâmetros do Docker automaticamente quando o pipeline é executado.

Você pode injetar parâmetros do Docker no pipeline. Os parâmetros podem incluir o nome do proprietário do evento do Docker, a imagem, o nome do repositório, o namespace do repositório e a tag.

No seu pipeline de CD, inclua parâmetros de entrada que o webhook do Docker passa para o pipeline antes do pipeline disparar.

Criar um webhook do Docker.

Ao criar o webhook do Docker no Code Stream, ele também cria um webhook correspondente no Docker Hub. O webhook do Docker no Code Stream se conecta ao Docker Hub por meio do URL que você inclui no webhook.

Os webhooks se comunicam uns com os outros e disparam o pipeline quando um artefato é criado ou atualizado no Docker Hub.

Se você atualizar ou excluir o webhook do Docker no Code Stream, o webhook no Docker Hub também será atualizado ou excluído.

Adicionar e configurar uma tarefa do Kubernetes no pipeline.

Quando um artefato é criado ou atualizado no repositório do Docker Hub, o pipeline é acionado. Em seguida, ele implanta o artefato pelo pipeline no host do Docker no seu cluster do Kubernetes.

Incluir uma definição de YAML local na tarefa.

A definição de YAML que você aplica à tarefa de implantação inclui a imagem de contêiner do Docker. Se você precisar baixar uma imagem de um repositório de propriedade privada, o arquivo YAML deverá incluir uma seção com o Segredo de configuração do Docker. Consulte a parte sobre CD de Como planejar uma compilação nativa de CICD no Code Stream antes de usar o modelo de pipeline inteligente

Quando um artefato é criado ou atualizado no repositório do Docker Hub, o webhook no Docker Hub notifica o webhook no Code Stream, que dispara o pipeline. As seguintes ações ocorrem:

  1. O Docker Hub envia uma solicitação POST para o URL no webhook.
  2. O Code Stream executa o gatilho do Docker.
  3. O gatilho do Docker inicia seu pipeline de CD.
  4. O pipeline de CD envia o artefato para o repositório do Docker Hub.
  5. O Code Stream dispara o webhook do Docker, que executa um pipeline de CD que implanta o artefato no host do Docker.

Neste exemplo, é criado um endpoint do Docker e um webhook do Docker no Code Stream que implanta seu aplicativo no cluster do Kubernetes de desenvolvimento. As etapas incluem o código de exemplo para o payload que o Docker publica para o URL no webhook, o código de API que ele usa e o código de autenticação com o token seguro.

Pré-requisitos

Procedimento

  1. Criar um endpoint de registro do Docker.
    1. Clique em Endpoints.
    2. Clique em Novo Endpoint.
    3. Comece a digitar o nome do projeto existente.
    4. Selecione o tipo como Registro Docker.
    5. Digite um nome relevante.
    6. Selecione o tipo de servidor como DockerHub.
    7. Digite o URL do repositório do Docker Hub.
    8. Insira o nome e a senha que podem acessar o repositório.
    Ao adicionar um endpoint do Registro Docker, é importante aceitar o certificado porque o endpoint pode exigi-lo.
  2. No seu pipeline de CD, defina as propriedades de entrada para injetar automaticamente os parâmetros do Docker quando o pipeline for executado.
    Ao adicionar parâmetros de entrada a um pipeline, você clica na guia Entrada e seleciona o tipo de parâmetro, como Gerrit, Git ou Docker.
  3. Criar um webhook do Docker.
    1. Clique em Gatilhos > Docker.
    2. Clique em Novo Webhook para Docker.
    3. Selecione um projeto.
    4. Digite um nome relevante.
    5. Selecione o endpoint de registro do Docker.
      Se o endpoint ainda não existir, clique em Criar Endpoint e crie-o.
    6. Selecione o pipeline com os parâmetros injetados do Docker para o webhook disparar. Consulte Etapa 2.
      Se o pipeline tiver sido configurado com os parâmetros de entrada adicionados personalizados, a lista de parâmetros de entrada exibirá parâmetros e valores. É possível digitar valores para os parâmetros de entrada que serão passados para o pipeline com o evento de gatilho. Também é possível deixar os valores em branco ou usar os valores padrão, se definidos.

      Para obter mais informações sobre parâmetros na guia de entrada, consulte Planejando uma compilação nativa de CICD no Code Stream antes de adicionar tarefas manualmente.

    7. Digite o Token de API.
      O token de API do VMware Cloud Services autentica você para conexões de API externas com o Code Stream. Para obter o token de API:
      1. Clique em Gerar Token.
      2. Insira o endereço de e-mail associado ao seu nome de usuário e senha e clique em Gerar.
        O token gerado será válido por seis meses. Ele também é conhecido como token de atualização.
        • Para manter o token como uma variável para uso futuro, clique em Criar Variável, insira um nome para a variável e clique em Salvar.
        • Para manter o token como um valor de texto para uso futuro, clique em Copiar e cole o token em um arquivo de texto para salvar localmente.
        Você pode optar por criar uma variável e armazenar o token em um arquivo de texto para uso futuro.
      3. Clique em Fechar.
    8. Insira a imagem de compilação.
    9. Insira uma tag.
      Ao criar um webhook para o trigger Docker, você deve fornecer um token de API que o autentica para conexões de API externas com o Code Stream.
    10. Clique em Salvar.
      O cartão de webhook aparece com o webhook do Docker habilitado. Se você quiser fazer um envio fictício ao repositório do Docker Hub sem disparar o webhook do Docker e executar um pipeline, clique em Desativar.
  4. No pipeline de CD, configure a tarefa de implantação do Kubernetes.
    1. Nas propriedades de tarefa do Kubernetes, selecione o cluster do Kubernetes de desenvolvimento.
    2. Selecione a ação Criar.
    3. Selecione a Definição Local para a fonte de payload.
    4. Em seguida, selecione seu arquivo YAML local.
      Por exemplo, o Docker Hub pode publicar essa definição de YAML local como o payload para o URL no webhook:
      {
      "callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/",
      "push_data": {
      "images": [
      "27d47432a69bca5f2700e4dff7de0388ed65f9d3fb1ec645e2bc24c223dc1cc3",
      "51a9c7c1f8bb2fa19bcd09789a34e63f35abb80044bc10196e304f6634cc582c",
      "..."
      ],
      "pushed_at": 1.417566161e+09,
      "pusher": "trustedbuilder",
      "tag": "latest"
      },
      "repository": {
      "comment_count": 0,
      "date_created": 1.417494799e+09,
      "description": "",
      "dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\n\n\nVOLUME\u0009\u0009[\/var/cache/apt-cacher-ng\]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n",
      "full_description": "Docker Hub based automated build from a GitHub repo",
      "is_official": false,
      "is_private": true,
      "is_trusted": true,
      "name": "testhook",
      "namespace": "svendowideit",
      "owner": "svendowideit",
      "repo_name": "svendowideit/testhook",
      "repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/",
      "star_count": 0,
      "status": "Active"
      }
      }
      A API que cria o webhook no Docker Hub usa o formulário: https://cloud.docker.com/v2/repositories/%3CUSERNAME%3E/%3CREPOSITORY%3E/webhook_pipeline/
      O corpo do código JSON é semelhante a:
      {
      "name": "demo_webhook",
      "webhooks": [
      {
      "name": "demo_webhook",
      "hook_url": "http://www.google.com"
      }
      ]
      }
      Para receber eventos do servidor Docker Hub, o esquema de autenticação do webhooker do Docker que você criar no Code Stream usará um mecanismo de autenticação de lista de permissões com um token de cadeia de caracteres aleatório no webhook. Ele filtra eventos com base no token seguro, que pode ser anexado a hook_url.
      O Code Stream pode verificar qualquer solicitação do servidor Docker Hub usando o token seguro configurado. Por exemplo: hook_url = IP:Port/pipelines/api/docker-hub-webhooks?secureToken = ""
  5. Crie um artefato do Docker no repositório do Docker Hub. Ou atualize um artefato existente.
  6. Para confirmar que o disparo ocorreu e ver a atividade no webhook do Docker, clique em Gatilhos > Docker > Atividade.
    Você pode observar os tempos de confirmação do webhook do Docker, imagens, tags e muito mais na guia Atividade do Docker.
  7. Clique em Execuções e observe seu pipeline enquanto ele é executado.
    Conforme o pipeline é executado, ele exibe o status RUNNING e os ícones de estágio exibem o progresso.
  8. Clique no estágio de execução e exiba as tarefas à medida que o pipeline é executado.
    Ao clicar em um dos ícones de estágio, você pode observar o status de cada tarefa no estágio conforme o pipeline é executado.

Resultados

Parabéns! Configure o gatilho do Docker para executar o pipeline de CD continuamente. Seu pipeline agora pode carregar artefatos novos e atualizados do Docker para o repositório Docker Hub.

O que Fazer Depois

Verifique se o artefato novo ou atualizado está implantado no host do Docker no cluster do Kubernetes de desenvolvimento.