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.yamlpara 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
-
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.
-
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:
| 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:
- Node.js (com npm, Yarn ou Gradle)
- Java (com Maven ou Gradle)
- Golang
- Python
- Dockerfile
- Linguagem de configuração do Terraform
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:
-
Definições de recursos Kubernetes como '
Pod, 'ReplicaSet, 'ReplicationController, 'Deployment, 'Daemonset, 'StatefulSet, 'Job, 'Cronjob, 'NetworkPolicy, 'Ingress, 'Service, 'Route- kubectl como ferramenta -
Recurso personalizado do aplicativo Websphere Liberty- kubectl como ferramenta
-
recurso personalizado do aplicativo Open Liberty- ' kubectl como ferramenta
-
CartaHelm- o leme como ferramenta
-
Configuração do Terraform- IBM Cloud Schematics ou Terraform CLI como ferramenta
-
Recurso personalizado Wazi DeploymentMethod- Wazi Deploy como ferramenta
-
Dockerfile quando IBM Cloud Code Engine tiver sido configurado para implantação- IBM Cloud Code Engine CLI como ferramenta
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:
- liberação semântica
- maven com a fase '
maven deploy.
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:
| 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 aDockerfile(comodockeroucode-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 paradocker) Para compilações relacionadas ao Dockerfile, especifique a ferramenta a ser usada (dockeroupodman) para compilar a imagem do contêiner.root-as-build-context: (Padrão:false) indica que o contexto de compilação para ferramentas deDockerfilecompilação relacionadas (comodocker,podmanoucode-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 pythonunittest(por exemplo, para descobrir testes de unidade do diretório que contém orequirements.txtna raiz do repositório e não orequirements.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.shestá 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.yamlcomplementares para implantações Helm configmapou "secretpara 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
| 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
| 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
| 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_arginjeta o parâmetro "--build-arg="my_arg="no comando de compilação do docker.
- Exemplo: Adicionar uma propriedade chamada "
- 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_propertycom o valor da propriedade do pipeline ou do acionador. - O arquivo de valores complementares é usado como argumento do último parâmetro "
-f | --valuesdo comando helm.
- Se uma propriedade tiver um nome como "
Para saber mais, consulte o conteúdo sobre valores complementares.
Terraform
- Processo de implantação A ferramenta Terraform depende das funções auxiliares do Terraform fornecidas pelo terraform do compliance-commons.
- Para obter mais informações sobre as propriedades de configuração para injeção de contexto, consulte Configuração das variáveis de entrada do Terraform.
Schematics
- Processo de implantação: A ferramenta Schematics depende das funções auxiliares Schematics fornecidas pelos esquemas do compliance-commons.
- Para obter mais informações sobre as propriedades de configuração para injeção de contexto, consulte Configuração de variáveis declaradas do espaço de trabalho do 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 as propriedades do pipeline e do acionador com um nome normalizado, como "
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 apropriadoENV_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 apropriadoENV_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 mavenENV_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_ENABLEDcom 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.