Para executar tarefas de integração contínua e tarefas personalizadas, você deve configurar um espaço de trabalho para seu pipeline do Code Stream.

No espaço de trabalho do pipeline, selecione Tipo como Docker ou Kubernetes e forneça o respectivo endpoint. As plataformas Docker e Kubernetes gerenciam todo o ciclo de vida do contêiner que o Code Stream implanta para execução da tarefa de integração contínua (continuous integration, CI) ou personalizada.

  • O espaço de trabalho do Docker requer o endpoint do host do Docker, a URL da imagem do construtor, o registro da imagem, o diretório de trabalho, o cache, as variáveis de ambiente, o limite de CPU e o limite de memória. Você também pode criar um clone do repositório Git.
  • O espaço de trabalho do Kubernetes requer o endpoint API do Kubernetes, a URL da imagem do construtor, o registro de imagem, o namespace, a NodePort, a Reivindicação de Volume Persistente (Persistent Volume Claim, PVC), o diretório de trabalho, as variáveis de ambiente, o limite de CPU e o limite de memória. Você também pode criar um clone do repositório Git.

A configuração do espaço de trabalho do pipeline tem muitos parâmetros comuns e outros parâmetros que são específicos para o tipo de espaço de trabalho, conforme descrito na tabela a seguir.

Tabela 1. Áreas, detalhes e disponibilidade do espaço de trabalho
Seleção Descrição Detalhes e disponibilidade
Tipo Tipo de espaço de trabalho. Disponível com Docker ou Kubernetes.
Endpoint do Host Endpoint do host no qual as tarefas de integração contínua (continuous integration, CI) e personalizadas são executadas.

Disponível com o espaço de trabalho do Docker quando você seleciona o endpoint do host do Docker.

Disponível com o espaço de trabalho do Kubernetes quando você seleciona o endpoint da API do Kubernetes.

URL da imagem do construtor Nome e localização da imagem do construtor. Um contêiner é criado usando essa imagem no host do Docker e no cluster do Kubernetes. As tarefas de integração contínua (CI) e personalizadas são executadas nesse contêiner.

Exemplo: fedora:latest

A imagem do construtor deve ter curl ou wget.

Registro de imagem Se a imagem do construtor estiver disponível em um registro, e se o registro exigir credenciais, você deverá criar um endpoint de Registro de Imagem e, depois, selecioná-lo aqui para que a imagem possa ser extraída do registro. Disponível com os espaços de trabalho do Docker e do Kubernetes.
Diretório de trabalho O diretório de trabalho é o local dentro do contêiner onde as etapas da tarefa de integração contínua (CI) são executadas e onde o código é clonado quando um webhook do Git dispara uma execução de pipeline. Disponível com Docker ou Kubernetes.
Namespace Se você não inserir um namespace, o Code Stream criará um nome exclusivo no cluster do Kubernetes que você especificou. Específico para o espaço de trabalho do Kubernetes.
Proxy

Para se comunicar com o pod do workspace no cluster do Kubernetes, o Code Stream implanta uma única instância de proxy no namespace codestream-proxy para cada cluster do Kubernetes. Você pode selecionar o tipo NodePort ou LoadBalancer com base na configuração do cluster.

A opção selecionada depende da natureza do cluster do Kubernetes implantado.

  • Normalmente, se a URL do servidor da API do Kubernetes que é especificada no endpoint for exposta por meio de um dos nós principais, selecione NodePort.
  • Se a URL do servidor da API do Kubernetes for exposta por um Balanceador de Carga, como no Amazon EKS (Elastic Kubernetes Service), selecione LoadBalancer.
NodePort

O Code Stream usa NodePort para se comunicar com o contêiner executado no cluster do Kubernetes.

Se você não selecionar uma porta, o Code Stream usará uma porta efêmera atribuída pelo Kubernetes. Você deve garantir que a configuração das regras de firewall permita o ingresso no intervalo de portas efêmeras (30000-32767).

Se você inserir uma porta, deverá garantir que outro serviço no cluster ainda não a esteja usando e que as regras de firewall permitam a porta.

Específico para o espaço de trabalho do Kubernetes.
Reivindicação de Volume Persistente

Oferece uma maneira para o espaço de trabalho do Kubernetes persistir os arquivos em todas as execuções do pipeline. Quando você especifica um nome de reivindicação de volume persistente, ele pode armazenar os logs, os artefatos e o cache.

Para obter mais informações sobre como criar uma reivindicação de volume persistente, consulte a documentação do Kubernetes em https://kubernetes.io/docs/concepts/storage/persistent-volumes/.

Específico para o espaço de trabalho do Kubernetes.
Variáveis de ambiente Os pares de chave-valor especificados aqui estarão disponíveis para todas as tarefas de integração contínua (CI) e personalizadas em um pipeline quando ele for executado.

Disponível com Docker ou Kubernetes.

As referências a variáveis podem ser transmitidas aqui.

As variáveis de ambiente inseridas no espaço de trabalho são transmitidas para todas as tarefas de integração contínua (CI) e personalizadas no pipeline.

Se as variáveis de ambiente não forem especificadas aqui, elas deverão ser inseridas claramente em cada tarefa de integração contínua (CI) e personalizada no pipeline.

Limites de CPU Os limites de recursos de CPU para o contêiner de integração contínua (CI) ou de tarefa personalizada. O padrão é 1.
Limites de memória Os limites de memória para o contêiner de integração contínua (CI) ou de tarefa personalizada. A unidade é MB.
Clone do Git Quando você seleciona Clone do Git, e um webhook do Git invoca o pipeline, o código é clonado no espaço de trabalho (contêiner). Se você não ativar o Clone do Git, deverá configurar outra tarefa de integração contínua (CI) explícita no pipeline para clonar o código primeiro e, depois, realizar outras etapas, como compilação e teste.
Cache

O espaço de trabalho do Code Stream permite que você armazene em cache um conjunto de diretórios ou arquivos para acelerar as execuções de pipeline subsequentes. Alguns exemplos desses diretórios são .m2 e npm_modules. "Se você não precisar de cache de dados entre execuções de pipeline, uma reivindicação de volume persistente não será necessária."

Artefatos, como arquivos ou diretórios no contêiner, são armazenados em cache para reutilização nas execuções de pipeline. Por exemplo, é possível armazenar as pastas node_modules ou .m2 em cache. Cache aceita uma lista de caminhos.

Por exemplo:

workspace:
  type: K8S
  endpoint: K8S-Micro
  image: fedora:latest
  registry: Docker Registry
  path: ''
  cache:
    - /path/to/m2
    - /path/to/node_modules

Específico para o tipo de espaço de trabalho.

No espaço de trabalho do Docker, você acessa o Cache por um caminho compartilhado no host do Docker para persistir os dados, artefatos e logs armazenados em cache.

No espaço de trabalho do Kubernetes, para permitir o uso do Cache, você deve fornecer uma reivindicação de volume persistente. Caso contrário, o Cache não estará disponível.

Ao usar um endpoint API do Kubernetes no espaço de trabalho do pipeline, o Code Stream cria os recursos do Kubernetes necessários, como ConfigMap, Segredo e Pod, para executar a tarefa de integração contínua (CI) ou personalizada. O Code Stream se comunica com o contêiner usando a NodePort.

Para compartilhar os dados em todas as execuções do pipeline, você deve fornecer uma reivindicação de volume persistente, e o Code Stream montará a reivindicação de volume persistente no contêiner para armazenar os dados e a usará nas execuções seguintes do pipeline.