Propriedades e recursos ambientais dos dutos da Tekton

As informações e os recursos a seguir estão disponíveis por padrão em um IBM Cloud® Continuous Delivery Tekton PipelineRun.

Anotações do PipelineRun

A Tabela 1 descreve as anotações que estão incluídas em um Tekton PipelineRun.

Anotações de PipelineRun
Anotação de execução Descrição
devops.cloud.ibm.com/build-number O número da construção do pipeline. Esse número é o total acumulativo de execuções de pipeline de todos os acionadores.
devops.cloud.ibm.com/listener O Tekton eventlistener que é mapeado para o acionador que iniciou essa execução do pipeline.
devops.cloud.ibm.com/pipeline-id O ID exclusivo do pipeline que é usado para essa execução.
devops.cloud.ibm.com/trigger-name O nome do acionador que iniciou essa execução de pipeline.
devops.cloud.ibm.com/trigger-type O tipo do acionador que iniciou essa execução de pipeline. O tipo pode ser manual, timer, scm ou generic.
devops.cloud.ibm.com/triggered-by O usuário que iniciou o acionador. Esse valor é o IBMId do usuário que pressionou executar para os acionadores manual, do usuário que salvou o acionador pela última vez para os acionadores timer ou do usuário que executou a ação Git para os acionadores scm. Esse valor é vazio para os acionadores generic.
devops.cloud.ibm.com/pipeline-run-url A URL da página de detalhes para essa execução de pipeline.
devops.cloud.ibm.com/tekton-pipeline O ID exclusivo dessa execução de pipeline.

Acessando as anotações

É possível acessar as anotações por meio das tarefas dentro de seu arquivo yaml de definição de pipeline. O exemplo a seguir mostra como acessar a anotação devops.cloud.ibm.com/build-number. Para fornecer essa anotação como uma variável de ambiente, substitua-a por uma das anotações de execução da Tabela 1. PipelineRun annotations.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: simple-task
spec:
  steps:
    - name: simple-step
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: BUILD_NUMBER
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['devops.cloud.ibm.com/build-number']
      command: ["bash", "-c"]
      args:
        - echo $BUILD_NUMBER;
          echo "COMPLETED"

ConfigMap e Secret do PipelineRun

O recurso Continuous Delivery Tekton PipelineRun cria um ConfigMap e um Secret específicos para as propriedades do ambiente. As propriedades seguras estão disponíveis no secure-properties do Kubernetes Secret, incluindo qualquer propriedade Tool integration para a qual o campo selecionado contém um valor seguro. As propriedades não seguras estão disponíveis no site environment-properties Kubernetes ConfigMap. As chaves são o nome do campo fornecido na interface do usuário de criação de pipeline.

Ao acessar um ConfigMap ou Secret, certifique-se de localizar as referências e o nome do objeto corretos para que o seu pipeline possa ser concluído com sucesso.

Acessando os valores individuais

É possível acessar chaves/valores individuais dentro de uma Task. O trecho de código a seguir usa o exemplo de nome de propriedade apikey (com propriedades seguras) e o nome de propriedade environment (com propriedades de texto). Esses nomes de propriedades são definidos na página Propriedades do pipeline de entrega.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-echo-props
spec:
  steps:
    - name: cm-show-props
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: SECURE_VALUE
          valueFrom:
            secretKeyRef:
              name: secure-properties
              key: apikey
        - name: ENVIRONMENT
          valueFrom:
            configMapKeyRef:
              name: environment-properties
              key: environment
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "environment from ConfigMap is >>";
          echo $ENVIRONMENT;
          echo "";
          echo -e "apikey from Secrets is >>";
          echo $SECURE_VALUE

Acessando todos os valores

É possível incluir todos os pares de chave/valor do ConfigMap e do Secret em seu ambiente de Task:

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-secrets-props
spec:
  steps:
    - name: cm-show-full-env
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      envFrom:
        - configMapRef:
            name: environment-properties
        - secretRef:
            name: secure-properties
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "The environment for this Step is ";
          env

Dimensionamento da máquina virtual do trabalhador gerenciado

Ao executar um pipeline usando o conjunto do IBM Managed Worker, uma VM com uma memória padrão específica é alocada. Embora a maioria dos trabalhos possa ser executada com êxito com a memória fornecida, determinados pipelines exigem memória adicional para tarefas intensivas.

Os usuários podem especificar um rótulo em suas tarefas para indicar se uma tarefa requer mais (ou menos) memória para uma tarefa específica. Essa capacidade de identificar a quantia específica de recursos que são necessários beneficia o uso de recursos e eventual economia de custo.

Para indicar qual perfil da VM aplicar a uma tarefa específica dentro de um pipeline do Tekton, inclua o rótulo runtimeClassName na tarefa com um dos valores da VM a seguir. Se nenhum rótulo for fornecido, o perfil VM padrão será usado.

  • small: 2Gi
  • medium: 4Gi (padrão)
  • large: 8Gi

Por exemplo:

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: task1
  labels:
    runtimeClassName: medium
    and so on.

Também é possível especificar a mesma configuração no PipelineRun como parte do TriggerTemplate Especificando o runtimeClassName no PipelineRun, os usuários podem selecionar o perfil da VM que desejam usar sem alterar as definições de tarefa.

Por exemplo:

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  generateName: pipeline-run-
spec:
  pipelineRef:
    name: pipeline
  taskRunSpecs:
    - pipelineTaskName: task1
      taskPodTemplate:
        runtimeClassName: medium

Formato do log

Esta seção descreve os recursos e a funcionalidade do visualizador de logs fornecido na página de detalhes PipelineRun e o formato de log suportado para aproveitar esses recursos.

Funcionalidade básica

O visualizador de registros é compatível com códigos de cores ANSI e estilos de texto, e detecta automaticamente URLs no conteúdo do registro e os renderiza como links clicáveis que abrem em uma nova janela.

Barra de ferramentas

A barra de ferramentas exibida no visualizador de registros inclui vários recursos adicionais, como

  • maximizar: aumentar a área disponível para o visualizador de registros ocultando a lista de tarefas e o cabeçalho de execução. Isso permite que o usuário elimine as distrações de outras partes do aplicativo e se concentre no conteúdo do registro.
  • preferências do usuário: essas preferências são mantidas localmente no navegador e aplicadas a todos os registros no aplicativo. Consulte as seções a seguir para obter mais detalhes.

Data e Hora

IBM-os trabalhadores gerenciados e os trabalhadores privados com a versão do agente 0.20.5 ou posterior produzem linhas de registro prefixadas com carimbos de data/hora por padrão. O usuário pode mostrar ou ocultar esses carimbos de data e hora no visualizador de registros alternando a opção no menu de configurações na barra de ferramentas do visualizador de registros.

Os carimbos de data e hora exibidos são localizados com base nas configurações do navegador do usuário, com o valor bruto do carimbo de data e hora recebido do trabalhador fornecido como uma dica de ferramenta ao passar o mouse.

Níveis de Registro

O visualizador de logs analisa as linhas de log para detectar o nível de log associado e decorá-las adequadamente para ajudar no consumo de logs. O formato suportado é o seguinte.

<timestamp> ::<level>::<message>
  • timestamp é fornecido pelo trabalhador
  • level é um dos error, warning, notice, info debug,, trace
    • debug e trace os registros ficam ocultos por padrão
    • qualquer linha de log sem um level explícito é considerada como info, mas não exibirá o emblema de nível de log para evitar redundância na interface do usuário quando os usuários não estiverem usando o formato de log compatível
  • message é qualquer outro conteúdo da linha e pode conter códigos ANSI para formatação, etc.

Por exemplo, o seguinte snippet produziria uma linha de registro no nível warning:

echo '::warning::Something that may require attention but is non-blocking…'

Os níveis de registro exibidos podem ser alterados por meio do menu de configurações na barra de ferramentas do visualizador de registros.

Grupos de registros

Além dos níveis de registro, o visualizador de registros também oferece suporte a grupos recolhíveis nos registros. O formato suportado é o seguinte.

<timestamp> ::group::<message>
…
<timestamp> ::endgroup::

Um comando group marca o início do grupo. O conteúdo de message é exibido como o título/resumo do grupo, juntamente com um indicador do estado atual do grupo (ou seja, expandido ou recolhido). Clicar no resumo alternará o estado do grupo.

Os grupos são renderizados no estado recolhido por padrão, a menos que a etapa ainda esteja em andamento quando os registros forem visualizados. O usuário pode expandir ou recolher grupos conforme desejar e seu estado será mantido até que o usuário navegue para uma visualização diferente.

Os grupos de registro não podem ser misturados com níveis de registro na mesma linha; os comandos group, endgroup e nível de registro são mutuamente exclusivos. No entanto, os registros contidos em um grupo podem usar os níveis de registro normalmente.

Não há suporte para o aninhamento de grupos. Um comando group encerrará implicitamente qualquer grupo anterior não encerrado.

Por exemplo, o seguinte snippet produziria um grupo de registros com o resumo "Additional config" (Configuração adicional) contendo várias mensagens no nível info:

echo '::group::Additional config'
echo 'This extends the base config'
echo '::info:: More info about the config…'
echo '::endgroup::'

Saiba mais sobre os pipelines de entrega do Tekton

Para saber mais sobre o Tekton e o Continuous Delivery, consulte Tekton: uma abordagem moderna para Continuous Delivery.