Para criar um pipeline de integração contínua e entrega contínua (CICD) no Code Stream, é possível usar o modelo de pipeline inteligente de CICD. Para planejar a compilação nativa de CI/CD, colete as informações para o modelo de pipeline inteligente antes de criar o pipeline neste plano de exemplo.

Para criar um pipeline de CI/CD, é necessário planejar os estágios de integração contínua (continuous integration, CI) e entrega contínua (continuous delivery, CD) do pipeline.

Depois que você inserir as informações no modelo de pipeline inteligente e salvá-las, o modelo criará um pipeline que inclui estágios e tarefas. Ele também indica o destino de implantação da sua imagem com base nos tipos de ambiente selecionados, como Dev e Prod. O pipeline publicará a imagem do contêiner e executará as ações necessárias para executá-lo. Após a execução do pipeline, você poderá monitorar as tendências nas execuções de pipeline.

Quando um pipeline inclui uma imagem do Docker Hub, você deve garantir que essa imagem tenha cURL ou wget incorporado antes de executar o pipeline. Quando o pipeline é executado, o Code Stream baixa um arquivo binário que usa cURL ou wget para executar comandos.

Para obter informações sobre a configuração do espaço de trabalho, consulte Como configurar o espaço de trabalho do pipeline.

Como planejar o estágio de integração contínua (CI)

Para planejar o estágio de CI do pipeline, defina os requisitos externos e internos, e determine as informações que serão necessárias à parte de CI do modelo de pipeline inteligente. Aqui está um resumo.

Neste exemplo, é usado um espaço de trabalho do Docker.

Endpoints e repositórios que serão necessários:

  • Um repositório de código-fonte no qual os desenvolvedores verificam seus códigos. O Code Stream recebe o código mais recente para o pipeline quando os desenvolvedores confirmam as alterações.
  • Um endpoint do tipo de serviço GitHub-Enterprise, GitLab-Enterprise ou Bitbucket-Enterprise para o repositório no qual reside o código-fonte do desenvolvedor.
  • Um endpoint do Docker para o host de compilação do Docker que executará os comandos de compilação dentro de um contêiner.
  • Um endpoint do Kubernetes para que o Code Stream possa implantar sua imagem em um cluster do Kubernetes.
  • Uma imagem do construtor que cria o contêiner no qual os testes de integração contínua são executados.
  • Um endpoint de registro de imagem para que o host de compilação do Docker possa receber a imagem do construtor a partir dele.

Você precisará de acesso a um projeto. O projeto agrupa todo o seu trabalho, incluindo pipeline, endpoints e painéis. Verifique se você é membro de um projeto no Code Stream. Se não for, peça a um administrador do Code Stream para adicioná-lo como membro de um projeto. Consulte Como adicionar um projeto no Code Stream.

Você precisará de um webhook Git que permita que o Code Stream use o gatilho Git para disparar o pipeline quando os desenvolvedores confirmam alterações de código. Consulte Como usar o gatilho Git no Code Stream para executar um pipeline.

Seus conjuntos de ferramentas de compilação:

  • Seu tipo de compilação, como Maven.
  • Todas as ferramentas de compilação pós-processo usadas, como JUnit, JaCoCo, Checkstyle e FindBugs.

Sua ferramenta de publicação:

  • Uma ferramenta como o Docker que implantará seu contêiner de compilação.
  • Uma tag de imagem, que é a ID de confirmação ou o número da compilação.

Seu espaço de trabalho de compilação:

  • Um host de compilação do Docker, que é o endpoint do Docker.
  • Um registro de imagem. A parte de CI do pipeline recebe a imagem do endpoint do registro selecionado. O contêiner executa as tarefas de CI e implanta sua imagem. Se o registro precisar de credenciais, será necessário criar um endpoint de Registro de imagem e, em seguida, selecioná-lo aqui para que o host possa extrair a imagem do registro.
  • O URL da imagem do construtor que cria o contêiner no qual as tarefas de integração contínua são executadas.

Como planejar o estágio de entrega contínua (CD)

Para planejar o estágio de CD do pipeline, defina os requisitos externos e internos, e determine as informações que serão inseridas na parte de CD do modelo de pipeline inteligente.

Endpoints que serão necessários:

  • Um endpoint do Kubernetes para que o Code Stream possa implantar sua imagem em um cluster do Kubernetes.

Arquivos e tipos de ambiente:

  • Todos os tipos de ambiente em que o Code Stream implantará seu aplicativo, como Des e Prod. O modelo de pipeline inteligente cria os estágios e as tarefas em seu pipeline com base nos tipos de ambiente selecionados.
    Tabela 1. Estágios de pipeline criados pelo modelo de pipeline inteligente de CICD
    Conteúdo do pipeline O que ele faz
    Estágio de compilação-publicação Compila e testa seu código, cria a imagem do construtor e publica a imagem no host do Docker.
    Estágio de desenvolvimento Usa um cluster de desenvolvimento do Amazon Web Services (AWS) para criar e implantar a imagem. Neste estágio, é possível criar um namespace no cluster e criar uma chave secreta.
    Estágio de produção Usa uma versão de produção do VMware Tanzu Kubernetes Grid Integrated Edition (anteriormente conhecido como VMware Enterprise PKS) para implantar sua imagem em um cluster Kubernetes de produção.
  • Um arquivo YAML do Kubernetes selecionado por você na seção de CD do modelo de pipeline inteligente de CICD.

    O arquivo YAML do Kubernetes inclui três seções necessárias para Namespace, Serviço e Implantação e uma seção opcional para Segredo. Se você planeja criar um pipeline baixando uma imagem de um repositório de propriedade privada, deverá incluir uma seção com o Segredo de configuração do Docker. Se o pipeline criado só usar imagens disponíveis publicamente, um segredo não será necessário. O seguinte arquivo YAML de amostra inclui quatro seções.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: codestream
      namespace: codestream
    ---  
    apiVersion: v1
    data:
      .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZ1234567890lci5pby92MS8iOnsidXNlcm5hbWUiOiJhdXRvbWF0aW9uYmV0YSIsInBhc3N3b3JkIjoiVk13YXJlQDEyMyIsImVtYWlsIjoiYXV0b21hdGlvbmJldGF1c2VyQGdtYWlsLmNvbSIsImF1dGgiOiJZWFYwYjIxaGRHbHZibUpsZEdFNlZrMTNZWEpsUURFeU13PT0ifX19
    kind: Secret
    metadata:
      name: dockerhub-secret
      namespace: codestream
    type: kubernetes.io/dockerconfigjson
    ---   
    apiVersion: v1
    kind: Service
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      ports:
        - port: 80
      selector:
        app: codestream-demo
        tier: frontend
      type: LoadBalancer 
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: codestream-demo
          tier: frontend
      template:
        metadata:
          labels:
            app: codestream-demo
            tier: frontend
        spec:
          containers:
          - name: codestream-demo
            image: automationbeta/codestream-demo:01
            ports:
            - containerPort: 80
              name: codestream-demo
          imagePullSecrets:
          - name: dockerhub-secret
    Observação: O arquivo YAML do Kubernetes também é usado no modelo de pipeline inteligente de CD, como nos seguintes exemplos de caso de uso:

    Para aplicar o arquivo no Modelo Inteligente, clique em Selecionar e selecione o arquivo YAML do Kubernetes. Em seguida, clique em Processo. O modelo de pipeline inteligente exibe os serviços e os ambientes de implantação disponíveis. Selecione um serviço, o endpoint do cluster e a estratégia de implantação. Por exemplo, para usar o modelo de implantação Canário, selecione Canário e digite o percentual da fase de implantação.

    O modelo de pipeline inteligente pode processar o Canary, o upgrade Contínuo e a integração contínua Azul/Verde e implantações de entrega contínua.

Para ver um exemplo sobre como usar o modelo de pipeline inteligente para criar um pipeline para uma implantação Azul-Verde, consulte Como implantar meu aplicativo no Code Stream na implantação Azul-Verde.

Como criar o pipeline de CICD usando o modelo de pipeline inteligente

Depois de reunir todas as informações e definir o que você precisa, veja como criar um pipeline a partir do modelo de pipeline inteligente de CICD.

Em Pipelines, selecione Novo Pipeline > Modelos Inteligentes.

Ao criar um pipeline, você pode usar um modelo de pipeline inteligente.

Você selecionará o modelo de pipeline inteligente de CICD.

Você pode criar uma integração contínua e um pipeline de entrega contínua clicando no cartão de modelo de pipeline inteligente de CI/CD.

Preencha o modelo e salve o pipeline com os estágios criados por ele. Se você precisar fazer quaisquer alterações finais, poderá editar o pipeline e salvá-lo.

O modelo de pipeline inteligente de CI/CD cria o pipeline com estágios que criam e publicam seu aplicativo e o entrega aos ambientes de desenvolvimento e produção.

Em seguida, ative e execute o pipeline. Após a execução, veja algumas coisas que você pode procurar:

  • Verifique se o seu pipeline foi bem-sucedido. Clique em Execuções e pesquise por seu pipeline. Se falhou, corrija todos os erros e execute-o novamente.
  • Verifique se o Git webhook está funcionando corretamente. A guia Git Atividade exibe os eventos. Clique em Gatilhos > Git > Atividade.
  • Observe o painel de pipeline e examine as tendências. Clique em Painéis e pesquise pelo painel do seu pipeline. Também é possível criar um painel personalizado para relatar KPIs adicionais.

Para obter um exemplo detalhado, consulte Como integrar continuamente o código do meu repositório do GitHub ou GitLab ao pipeline no Code Stream.