IBM Cloud Docs
Criação de um pipeline com a configuração do Inferred DevSecOps

Criação de um pipeline com a configuração do Inferred DevSecOps

Depois de adicionar seu próprio aplicativo ou microsserviço à cadeia de ferramentas de CI DevSecOps, você pode usar o recurso Inferred DevSecOps Pipeline Configuration para começar rapidamente. Esse recurso:

  • Infere o conteúdo do arquivo de configuração do pipeline DevSecOps ' .pipeline-config.yaml para você
  • Identifica os scripts necessários para criar, testar e implantar seu código
  • Fornece o código para esses scripts, para que você possa se concentrar em seu aplicativo

Ao usar esse recurso, você pode facilmente integrar seus microsserviços ou aplicativos aos DevSecOps pipelines e otimizar sua DevSecOps adoção.

Não são necessárias etapas adicionais para configurar a Configuração do DevSecOps Pipeline Inferido, pois ela já está integrada ao DevSecOps.

Pré-requisitos

  1. Configure suas DevSecOps cadeias de ferramentas e integre o repositório de código-fonte do seu aplicativo. Não use o repositório padrão do aplicativo de amostra. Em vez disso, integre o repositório de seu próprio aplicativo.

  2. Revise os conceitos básicos da personalização do pipeline do DevSecOps para saber mais sobre os diferentes modelos disponíveis, as opções de suporte e outras informações importantes para você começar a usar o DevSecOps.

Introdução

Para começar, configure suas cadeias de ferramentas para usar seu próprio repositório de código-fonte. Em seguida, execute seu primeiro pipeline de CIDevSecOps. Esse recurso é ativado por padrão, portanto, não é necessária nenhuma configuração adicional. Ele infere dinamicamente a configuração do pipeline DevSecOps e os scripts necessários para criar, testar e implantar seu aplicativo ou serviço.

Para desativar esse recurso, defina um valor " pipeline-config que corresponda a um arquivo existente em seu repositório.

Pontos com configuração de pipeline de DevSecOps inferida

O recurso Inferred DevSecOps Pipeline Configuration usa introspecção de origem e definição de linguagem para identificar " spots em seu repositório de origem. Um " spot é um local em seu código que exige a execução de uma ação específica.

Cada ponto tem as seguintes propriedades:

Propriedades do ponto
Propriedade Descrição
Origem Identifica um local no repositório de código-fonte como o contexto do ponto.
Processos Um ou mais processos que indicam o tipo de operação a ser realizada.
Ferramentas Uma matriz associada a um processo que lista as ferramentas a serem iniciadas para executar a ação. Cada ferramenta pode ter seu próprio conjunto de propriedades.
configuração de ambiente Faz referência a um arquivo de script (ou comandos de script) que será iniciado para configurar o ambiente para a operação do processo (invocações de ferramentas) a ser executada.

Pontos identificados

Atualmente, o recurso Inferred DevSecOps Pipeline Configuration identifica os seguintes tipos de " spots: pontos code, " deployment, " acceptance-test, " dynamic-scan e " release.

Pontos de código

Os pontos de código estão relacionados a uma linguagem de código-fonte compatível, incluindo:

Os pontos " code lidam com os seguintes processos:

  • building: Define as ferramentas que executam a compilação do código-fonte fornecido.
  • unit-testing: Localiza as ferramentas que executam o teste de unidade do resultado da compilação.

Pontos de implantação

Os pontos " deployment localizam um veículo de implantação, incluindo recursos e ferramentas de implantação. os pontos deployment têm um processo de implantação que lista as ferramentas de implantação. Os veículos de implantação atualmente suportados são:

Pontos de teste de aceitação

Os pontos " acceptance-test localizam um conjunto de testes de aceitação a ser executado. os pontos acceptance-test têm um processo " acceptance-testing que identifica as ferramentas para executar o conjunto de testes de aceitação.

Pontos de varredura dinâmica

Os pontos " dynamic-scan identificam locais para uma varredura dinâmica. Os pontos de varredura dinâmica têm um processo ' scanning para listar as ferramentas de varredura invocadas durante a varredura dinâmica.

A varredura do OWASP ZAP é a única ferramenta compatível para iniciar um acionador de subwebhook.

Pontos de liberação

Os pontos " release localizam o processo de liberação. Os pontos de liberação têm um processo " releasing que lista as ferramentas a serem executadas durante o estágio de liberação. Atualmente, as ferramentas compatíveis com o processo de liberação são:

Exemplo de conteúdo polyglot-spots.json

O recurso Inferred DevSecOps Pipeline Configuration extrai pontos e gera o seguinte conteúdo JSON para acionar ações e ferramentas específicas durante os estágios do pipeline de CI.

{
  "code": [
    {
      "source": "Dockerfile",
      "language": "Dockerfile",
      "building": {
        "tools": [
          {
            "tool": "docker"
          }
        ]
      }
    },
    {
      "source": "package.json",
      "language": "NodeJS",
      "building": {
        "tools": [
          {
            "tool": "npm"
          }
        ]
      },
      "unit-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "test"
          }
        ]
      }
    }
  ],
  "acceptance-test": [
    {
      "source": "package.json",
      "acceptance-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "run acceptance-test"
          }
        ]
      }
    }
  ],
  "deployment": [
    {
      "source": "deployment_iks.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    },
    {
      "source": "deployment_os.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    }
  ],
  "dynamic-scan": [
    {
      "source": "definitions/definitions1.json",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "api"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    },
    {
      "source": "scripts/zap/uiscripts/run.sh",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "ui"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    }
  ],
  "release": []
}

Configuração avançada

Injeção de arquivos

O recurso Inferred DevSecOps Pipeline Configuration usa o conteúdo dos arquivos " polyglot-spots.json e " .pipeline-config.yaml para personalizar a execução do processo do pipeline do DevSecOps.

Durante o estágio " finish de um pipeline de CI, tanto o " polyglot-spots.json quanto o " .pipeline-config.yaml (correspondentes à configuração estática do pipeline da execução do pipeline de CI) são adicionados a uma ramificação denominada " inferred-devsecops (padrão) no repositório de código-fonte do aplicativo.

A configuração do pipeline com a versão de formato 2 (utilizável com a ramificação de pipelines de conformidade v11, por exemplo) também pode ser gerada se a propriedade create-inferred-pipeline-configuration-v2 for definida como true (padrão para false ). Um arquivo adicional de configuração de pipeline, como .pipeline-config-v2.yaml, é então adicionado à ramificação denominada inferred-devsecops (padrão) no repositório de código-fonte do aplicativo.

Configuração da ramificação de injeção

Você pode configurar o nome da ramificação para injetar arquivos inferidos DevSecOps usando a propriedade de pipeline ' inferred-devsecops-branch. O valor padrão é inferred-devsecops.

Use a propriedade de pipeline push-inferred-pipeline-configuration-files (a propriedade push-polyglot-files está obsoleta em favor da propriedade push-inferred-pipeline-configuration-files ) para ativar ou desativar a criação e a atualização da ramificação inferred-devsecops:

Ativar ou desativar a ramificação inferred-devsecops
Valor Descrição
true (padrão) Os arquivos de configuração são adicionados e enviados para a ramificação ' inferred-devsecops do repositório de código-fonte do aplicativo de origem.
false Os arquivos de configuração não são adicionados à ramificação inferred-devsecops.

Configuração da extração de pontos

Configure a extração de pontos usando as seguintes propriedades de ambiente do pipeline:

Ignorando pontos

Você pode ignorar pontos específicos durante a extração usando expressões regulares. As opções de configuração a seguir estão disponíveis:

  • ignore-code-spot-pattern: Ignora os pontos de código que correspondem à expressão regular especificada.
  • ignore-deployment-spot-pattern: Ignora os pontos de implantação que correspondem à expressão regular especificada.
  • ignore-dynamic-scan-spot-pattern: Ignora os pontos de varredura dinâmica que correspondem à expressão regular especificada.
  • ignore-acceptance-test-spot-pattern: Ignora os pontos de teste de aceitação que correspondem à expressão regular especificada.
  • ignore-release-spot-pattern: Ignora os pontos de liberação que correspondem à expressão regular especificada.

Configuração Code Engine

Se estiver usando o site IBM Cloud Code Engine para implantação, especifique o projeto Code Engine e configure o processo de compilação com as seguintes propriedades de ambiente de pipeline:

  • code-engine-project: Especifica o projeto Code Engine.
  • code-engine-build-use-native-docker: (Padrão: ' false) Indica se deve ser usado o Docker CLI em vez do comando ' ibmcloud code-engine buildrun.
  • root-as-build-context(Padrão: false ) indica que o contexto de construção da ferramenta de construção relacionada a Dockerfile (como docker ou code-engine ) deve usar a raiz do repositório como contexto de construção e não a pasta que contém o Dockerfile.

Configuração da compilação da imagem do contêiner

  • container-image-builder: (Padrão para docker) Para compilações relacionadas ao Dockerfile, especifique a ferramenta a ser usada (docker ou podman) para compilar a imagem do contêiner.
  • root-as-build-context: (Padrão: false) indica que o contexto de compilação para ferramentas de Dockerfile compilação relacionadas (como docker, podman ou code-engine) deve usar a raiz do repositório como contexto de compilação e não a pasta que contém o Dockerfile.

Configuração da Golang

Para configurar o processo de extração de pontos para a Golang, defina as seguintes propriedades de ambiente do pipeline:

  • go-ignore-main: (Padrão: ' false) Indica se a extração de ponto de código não deve se concentrar no pacote principal e na detecção da função principal para o argumento de origem principal.
  • go-output: Especifica o arquivo de saída executável do comando go build.

Configuração Gradle

Para configurar as tarefas do Gradle para instalação, teste de unidade, artefato de compilação e teste de aceitação, use as seguintes propriedades de ambiente de pipeline:

  • gradle-setup-tasks: (Padrão: ' assemble) Lista separada por vírgulas de tarefas Gradle para o estágio de configuração.
  • gradle-unit-testing-tasks: (Padrão: ' test) Lista separada por vírgula de tarefas Gradle para o estágio de teste de unidade.
  • gradle-build-artifact-tasks: (Padrão: ' build) Lista separada por vírgulas de tarefas Gradle para o estágio do artefato de construção.
  • gradle-acceptance-testing-tasks: lista separada por vírgulas de tarefas Gradle para o estágio de teste de aceitação.

Configuração do NPM

Você pode configurar o teste de unidade NPM e a detecção de script de teste de aceitação.

  • hint-npm-unit-testing-script: (Padrão: ' test) Dicas para detecção de script de teste de unidade NPM.
  • hint-npm-acceptance-testing-script: (Padrão: ' acceptance-test) Dicas para detecção de script de teste de aceitação do NPM.

Configuração Python

Para configurar a versão do Python Poetry, use as seguintes propriedades de ambiente do pipeline:

  • hint-python-poetry-version: (Padrão: ' 1.8.2) Dicas para a versão Python Poetry.
  • discover-python-unittest-from-ancestor(Padrão: false) indica que o diretório ancestral é usado como ponto de partida para a descoberta do python unittest (por exemplo, para descobrir testes de unidade do diretório que contém o requirements.txt na raiz do repositório e não o requirements.txt (se houver) que é o mais próximo dos arquivos python unittest).

Configuração do Terraform

Para configurar o processo de implantação do Terraform, use as seguintes propriedades de ambiente de pipeline:

  • terraform-deployment: (Padrão: ' false) Desativa Schematics como veículo de implantação em favor do Terraform e do Cloud Object Storage para armazenamento de estado.

Upload de artefatos

Para configurar o processo de upload de artefatos, use as seguintes propriedades de ambiente do pipeline:

  • artifact-upload-to-devsecops-cos: (Padrão: ' false) Permite o upload de artefatos para um bucket Cloud Object Storage usando o upload de artefatos da CLI DevSecOps para artefatos salvos sem imagem.

Configuração do ambiente Arquivos

Cada repositório de código-fonte requer uma configuração ou personalização específica para um determinado estágio. O recurso Inferred DevSecOps Pipeline Configuration oferece uma maneira de especificar uma propriedade de configuração de ambiente que pode ser definida como um script bash. Esse script é originado antes de executar a ação correspondente para um processo.

Durante a extração de pontos, esse recurso de configuração inferida do devsecops usa uma dica baseada no nome do arquivo para determinar os arquivos de configuração do ambiente. Por exemplo, um arquivo chamado .env.npm-test.sh será escolhido como o script de configuração do ambiente a ser invocado antes da execução do teste de unidade npm.

O formato normalizado para um arquivo de configuração de ambiente é como .env.<process>.sh ou .env.<tool>-<process>.sh.

O valor para <process> pode ser um dos seguintes: build, test, acceptance-test, deploy, dynamic-scan ou release.

Para o processo build, o valor de <tool> pode ser um dos seguintes: code-engine, docker, docker-maven-plugin, go, gradle, helm, maven, npm, pip, pipenv, poetry, terraform ou yarn.

Para os processos test e acceptance-test, o valor de <tool> pode ser um dos seguintes: go, gradle, helm, maven, npm, pytest, python ou terratest.

Para o processo deploy, o valor de <tool> pode ser um dos seguintes: code-engine,helm, kubectl-liberty-app, kubectl, schematics ou terraform.

Para o processo dynamic-scan, o valor de <tool> pode ser trigger-async-zap.

Para o processo release, o valor de <tool> pode ser um de maven, poetry ou semantic-release.

Aqui estão alguns exemplos:

  • .env.build.sh é associado como configuração de ambiente para a criação de processos em pontos de código. Ele pode ser substituído por um arquivo de configuração de ambiente para uma ferramenta com escopo (como docker, maven...), como .env.docker-build.sh, .env.maven-build.sh,...
  • .env.test.sh é associado como configuração de ambiente para o teste de unidade de processo em pontos de código. Ele pode ser substituído por um arquivo de configuração de ambiente para uma ferramenta com escopo (como go, npm...), como .env.go-test.sh, .env.npm-test.sh,...
  • .env.deploy.sh é associado como configuração de ambiente para o processo em pontos de implantação. Ele pode ser substituído por um arquivo de configuração de ambiente para uma ferramenta com escopo (como code-engine, helm, kubectl...), como .env.code-engine-deploy.sh, .env.helm-deploy.sh,...
  • .env.acceptance-test.sh é associado como configuração de ambiente para o processo em pontos de teste de aceitação. Ele pode ser substituído por um arquivo de configuração de ambiente para uma ferramenta com escopo (como go, maven, npm...), como .env.maven-acceptance-test.sh, .env.python-acceptance-test.sh,...
  • .env.dynamic-scan.sh é associado como configuração de ambiente para o processo em pontos de varredura dinâmica.
  • .env.release.sh está associado como configuração de ambiente para o processo em pontos de liberação. Ele pode ser substituído por um arquivo de configuração de ambiente para uma ferramenta com escopo (como maven, semantic-release...), como .env.maven-acceptance-test.sh, .env.semantic-release-acceptance-test.sh,...

Para obter um exemplo de como usar esse script, consulte o repositório do aplicativo Hello Compliance na IBM Cloud.

Injeção de contexto de ambiente

O recurso Inferred DevSecOps Pipeline Configuration incorpora variáveis de ambiente das propriedades do pipeline e do acionador em vários contextos de projeto. Os contextos do projeto são os seguintes:

  • Estágios de execução do pipeline
  • Implementações do Helm
  • Implantações Code Engine

Esse recurso permite que você injete ou defina o contexto, como variáveis de ambiente, a partir do pipeline e acione propriedades com base em nomes de propriedades normalizados.

Algumas ferramentas manipulam propriedades com nomes normalizados que são injetados em contextos específicos, como:

  • argumentos de compilação do docker e/ou segredos de compilação do docker
  • arquivos " values.yaml complementares para implantações Helm
  • configmap ou " secret para implementações Code Engine

Ao usar nomes de propriedades normalizados, você pode injetar variáveis de ambiente e outros contextos no pipeline e nas implementações.

Injeção de variáveis de ambiente nas etapas de execução do pipeline

O recurso Inferred DevSecOps Pipeline Configuration fornece um utilitário ' export-properties para exportar propriedades do pipeline e do acionador como variáveis de ambiente durante a execução do estágio. Esse utilitário é chamado em cada estágio personalizado:

export-properties "GLOBAL" && export-properties "${STAGE^^}"
Variáveis de ambiente global

O comando ' export-properties "GLOBAL" exporta propriedades do pipeline e do acionador com nomes normalizados com ' ENV_GLOBAL_<XXX> como variáveis de ambiente, como ' XXX em cada contexto de execução do estágio do pipeline.

Exemplo de variável de ambiente global
Exemplo de variáveis de ambiente global
Nome da propriedade Avaliador de propriedades Variável de ambiente resultante
ENV_GLOBAL_my_var my_value my_var=my_value
Variáveis de ambiente específicas do estágio

O comando ' export-properties "${STAGE^^}" exportará as propriedades do pipeline ou do acionador relevantes para a etapa atual executada com o nome normalizado ' ENV_<stage in upper case>_<XXX> como variáveis de ambiente na etapa executada em questão.

Exemplo de variáveis de ambiente específicas do estágio
Exemplo de variáveis de ambiente global
Nome da propriedade Avaliador de propriedades Variável de ambiente resultante
ENV_SETUP_CGO_ENABLED true CGO_ENABLED=true

No pipeline de CI, a etapa " code-setup - run-stage tem a variável de ambiente " CGO_ENABLED definida com o valor adequado.

Consulte as descrições dos estágios para obter uma lista dos estágios e suas descrições.

Um caso de uso típico desse recurso é injetar variáveis de ambiente antes de executar testes de unidade para fornecer configuração. Nesse caso, o nome normalizado das propriedades seria " ENV_TEST_<a_var>, sendo " <a_var> o nome da variável de ambiente exportada a ser disponibilizada para a execução do estágio test`.

Exemplo
Exemplo de variáveis de ambiente específicas do estágio
Nome da propriedade Avaliador de propriedades Variável de ambiente resultante
ENV_TEST_MY_VAR my_value MY_VAR=my_value

Use esse recurso para simplificar a configuração do pipeline e melhorar a consistência em suas implementações.

Execução e configuração de ferramentas

Algumas ferramentas do recurso Inferred DevSecOps Pipeline Configuration usam propriedades de pipeline e acionador para inferir a configuração complementar.

Docker
  • Argumentos de compilação: O comando de compilação do docker é concluído com parâmetros --build-arg com base nas propriedades do pipeline e do acionador com um nome normalizado como ' DOCKER_BUILD_ARG_.
    • Exemplo: Adicionar uma propriedade chamada " DOCKER_BUILD_ARG_my_arg injeta o parâmetro " --build-arg="my_arg=" no comando de compilação do docker.
  • Segredos de compilação: O comando de compilação do docker é concluído com parâmetros --secret baseados nas propriedades do pipeline e do acionador com um nome normalizado como ' DOCKER_BUILD_SECRET_.
    • Por exemplo, adicionar uma propriedade chamada DOCKER_BUILD_SECRET_my_secret injeta o parâmetro --secret id=my_secret,env= no comando de compilação do docker.

Para saber mais, consulte argumentos de compilação do docker e segredo de compilação do docker

Helm
  • Processamento de implantação: Valores adicionais podem ser injetados no processo de implantação Helm com base nas propriedades normalizadas do pipeline e do acionador.
    • Se uma propriedade tiver um nome como " HELM_VALUE_,, o arquivo de valores complementares gerenciado pela ferramenta de processamento Helm adicionará uma entrada " a_value_property com o valor da propriedade do pipeline ou do acionador.
    • O arquivo de valores complementares é usado como argumento do último parâmetro " -f | --values do comando helm.

Para saber mais, consulte o conteúdo sobre valores complementares.

Terraform
Schematics
Code Engine
  • Processo de implantação: Configurações adicionais para o aplicativo podem ser criadas definindo um configmap complementar ou um segredo associado ao aplicativo.
    • Para as propriedades do pipeline e do acionador com um nome normalizado, como " CE_ENV_<XXXX>, uma entrada em um configmap ou segredo complementar (associado ao aplicativo ou trabalho Code Engine ) será criada com a chave " <XXXX> e seu valor será definido com base no valor da propriedade correspondente do pipeline ou do acionador.

Para saber mais, consulte Configmap(s)do mecanismo de código para configurar aplicativos ou trabalhos e Segredo do mecanismo de código para configurar aplicativos ou trabalhos

Biblioteca de scripts comuns DevSecOps

O Inferred DevSecOps Pipeline Configuration usa scripts/funções em determinados estágios dos scripts da biblioteca comum, que oferece um conjunto de scripts reutilizáveis que podem ajudá-lo se você quiser iniciar a personalização.

Para obter mais informações sobre a biblioteca de scripts comuns, incluindo scripts, ferramentas, uso e parâmetros, consulte Biblioteca de scripts comuns.

Perguntas frequentes

Proteção de ramificação

Ativar a proteção de ramificação por padrão

Os pipelines de PR e CI DevSecOps ativam a proteção de ramificação no repositório de código-fonte por padrão. Essa verificação ocorre durante o estágio de configuração do código.

Desativar a proteção de ramificação

Para desativar a proteção de ramificação, defina a propriedade ' setup-branch-protection como ' false.

Personalização das verificações de status da proteção de filiais

Para personalizar o prefixo das verificações de status de proteção de ramificação, defina a propriedade ' branch-protection-status-check-prefix. O prefixo padrão é " tekton.

Configuração e execução de ganchos pré-commit

Por padrão, os pipelines de PR e CI com configuração DevSecOps inferida executam ganchos de pré-compromisso no estágio de configuração se houver um arquivo de configuração de pré-compromisso no repositório de código-fonte (padrão para .pre-commit-config.yaml ). O nome do arquivo de configuração de pré-compromisso pode ser especificado pela propriedade do pipeline/trigger pre-commit-config-file definida como o nome do arquivo de configuração.

Alguns ganchos de pré-compromisso podem ser ignorados (por exemplo, porque um determinado gancho, como detect-secrets, é executado em um estágio específico dos pipelines de PR ou CI). Para especificar os hooks a serem ignorados, defina a propriedade pipeline/trigger pre-commit-skip-hooks como uma lista separada por vírgulas do ID do hook a ser ignorado.

Servidor Sonarqube com certificado autoassinado

se o sonarqube-config estiver definido como custom para usar um servidor sonarqube existente e o servidor tiver um certificado autoassinado, para que o scanner sonar se conecte com êxito ao servidor sonarqube, o certificado autoassinado precisará ser adicionado aos certificados CA confiáveis.

Ao fornecer o certificado em um formato PEM como o valor da propriedade sonarqube-root-certificate do pipeline/trigger, a implementação de varredura estática na configuração do pipeline DevSecOps inferido o adicionará de acordo com o uso do SonarScanner para maven, SonarScanner para gradle sonar ou SonarScanner invocado com Docker.

Poesia e repositórios privados

Configurar o Poetry para repositórios privados

Ao usar o Poetry (pyproject.toml é identificado como um ponto de código) e uma fonte ou repositório alternativo é definido para buscar dependências, como:

[[tool.poetry.source]]
name = "local"
url = "https://na-public.artifactory.swg-devops.com/artifactory/api/pypi/ip-devops-team-pypi-virtual/simple"
secondary = true

ou quando a Poesia estiver envolvida (ou seja, pyproject.toml contendo uma seção build-system com build-backend igual a poetry.core.masonry.api é um ponto de liberação identificado), talvez seja necessário fornecer credenciais para autenticar os registros privados.

Autenticação com repositórios privados na IBM Cloud

É necessário fornecer credenciais para esse repositório de origem " local. A documentação do Poetry sobre a configuração de credenciais indica que as variáveis de ambiente para fornecer o usuário e a senha http devem ser ' POETRY_HTTP_BASIC_LOCAL_USERNAME e ' POETRY_HTTP_BASIC_LOCAL_PASSWORD.

Use o recurso de injeção de variável de ambiente e adicione as seguintes propriedades de ambiente de pipeline:

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME (texto) com o valor apropriado
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD (secured) com o valor secured apropriado

Autenticação para publicar em repositórios privados

Quando a Poesia está envolvida (ou seja, pyproject.toml contendo uma seção build-system com build-backend igual a poetry.core.masonry.api é um ponto de lançamento identificado), a configuração do token ou do nome de usuário pode ser definida usando as propriedades do ambiente do pipeline, como (para um repositório chamado local):

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME (texto) com o valor apropriado
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD (secured) com o valor secured apropriado

ou

  • ENV_GLOBAL_POETRY_PYPI_TOKEN_LOCAL (secured) com o valor secured apropriado correspondente ao token

Maven, pom.xml, settings.xml e resolução de ambiente

Configurar o Maven para arquivos de configurações personalizadas no IBM Cloud

Se o seu projeto Maven definir um arquivo de configurações específico com um nome de arquivo personalizado, como " ci-settings.xml, defina uma propriedade de ambiente de pipeline maven-user-settings-file-path com o valor definido como " ci_settings.xml nas propriedades de nível de PR, pipeline de CI ou acionador.

Além disso, se houver algum ' env.<VARIABLE> a ser resolvido, como:

    <server>
      <username>${env.MAVEN_USERNAME}</username>
      <password>${env.MAVEN_PASSWORD}</password>
      <id>central</id>
    </server>

Use o recurso de injeção de variável de ambiente para fornecer essas variáveis, adicionando duas propriedades de pipeline (no pipeline PR e CI):

  • ENV_GLOBAL_MAVEN_USERNAME (texto) com o valor a ser usado para o nome de usuário do maven
  • ENV_GLOBAL_MAVEN_PASSWORD (seguro) com o valor a ser usado para a senha do maven

Forçar vinculação estática para compilações em Go

Habilitar links estáticos para compilações em Go

Por padrão, o ' go build produz um binário vinculado dinamicamente. Para usá-lo em um contêiner Docker, ative a vinculação estática definindo ' CGO_ENABLED=0 durante a compilação.

Configurar a variável de ambiente para a compilação em Go

Para ativar a vinculação estática, use o recurso de injeção de variável de ambiente para adicionar a seguinte propriedade de ambiente de pipeline no pipeline de CI:

  • ENV_SETUP_CGO_ENABLED com o valor definido como ' 0

Obtendo suporte

IBM Cloud o assistente de IA da IBM, que é alimentado pela watsonx, foi projetado para ajudá-lo a aprender sobre como trabalhar na IBM Cloud e criar soluções com o catálogo de ofertas disponível. Consulte Obter ajuda do assistente de IA.

Se ainda não for possível resolver o problema, será possível abrir um caso de suporte. Para obter mais informações, consulte Criando casos de suporte. E, se você quiser fornecer feedback, consulte Envio de feedback.