Creación de una canalización con la configuración Inferred DevSecOps
Una vez que hayas añadido tu propia aplicación o microservicio a la cadena de herramientas de integración continua (CI) de DevSecOps, puedes utilizar la función «Configuración de canalización de DevSecOps inferida» para ponerte en marcha rápidamente. Esta función:
- Infiere el contenido del archivo de configuración del canal DevSecOps '
.pipeline-config.yaml - Identifica las secuencias de comandos necesarias para compilar, probar e implantar el código
- Proporciona el código para estas secuencias de comandos, para que pueda centrarse en su aplicación
Al utilizar esta función, puede incorporar fácilmente sus microservicios o aplicaciones a DevSecOps los procesos y optimizar su DevSecOps adopción.
No es necesario realizar ningún paso adicional para configurar la configuración inferida DevSecOps de la canalización, ya que ya está integrada en el DevSecOps.
DevSecOps La cadena de herramientas de implementación continua (CD) también cuenta con una configuración predeterminada del proceso de trabajo. Permite a los usuarios que utilizan la configuración de « DevSecOps » de Inferred en el lado de la
integración continua (CI) ampliar de forma segura ese mismo enfoque a sus procesos de entrega continua (CD). Las acciones de implementación se determinan a partir de los metadatos de « app_artifacts » de las entradas del inventario.
DevSecOps La cadena de herramientas de cumplimiento continuo (CC) también puede beneficiarse de la configuración de la interfaz de programación de aplicaciones ( DevSecOps ) inferida. La configuración del proceso se deduce a partir del contenido de los repositorios que figuran en las entradas del inventario.
Requisitos previos
-
Configure sus cadenas de herramientas DevSecOps e integre el repositorio de código fuente de su aplicación.
No utilice el repositorio de aplicaciones de ejemplo predeterminado. En su lugar, incorpore el repositorio de su propia aplicación.
-
Revise el " fundamentos de la personalización del oleoducto ' DevSecOps " para saber más sobre las distintas plantillas disponibles, las opciones de asistencia y otra información importante para empezar con el " DevSecOps.
cómo empezar
Para empezar, configure sus cadenas de herramientas para utilizar su propio repositorio de código fuente. A continuación, ejecute su primera canalización deDevSecOps CI. Esta función está activada por defecto, por lo que no es necesaria ninguna configuración adicional. Infiere dinámicamente la configuración de la canalización DevSecOps y las secuencias de comandos necesarias para crear, probar y desplegar su aplicación o servicio.
Para desactivar esta función, establezca un valor ' pipeline-config ' que coincida con un archivo existente en su repositorio.
Puntos con configuración de canalización DevSecOps inferida
La función Inferred DevSecOps Pipeline Configuration utiliza la introspección de fuentes y la definición del lenguaje para identificar ' spots ' en su repositorio de fuentes. Un ' spot ' es una ubicación en su código
que requiere que se realice una acción específica.
Cada punto tiene las siguientes propiedades:
| Propiedad | Descripción |
|---|---|
| Origen | Identifica una ubicación en el repositorio de código fuente como contexto del punto. |
| Procesos | Uno o varios procesos que indican el tipo de operación a realizar. |
| Herramientas | Una matriz asociada a un proceso que enumera las herramientas que deben iniciarse para realizar la acción. Cada herramienta puede tener su propio conjunto de propiedades. |
| configuración de entorno | Hace referencia a un archivo de secuencia de comandos (o comandos de secuencia de comandos) que se iniciará para configurar el entorno para la operación de proceso (invocaciones de herramientas) que se va a realizar. |
Puntos identificados
La función Inferred DevSecOps Pipeline Configuration identifica actualmente los siguientes tipos de " spots: puntos "code, puntos " deployment, puntos " acceptance-test,
puntos " dynamic-scan y puntos " release".
Puntos de código
Los puntos de código están relacionados con un lenguaje de código fuente compatible, incluido:
- Node.js (con npm, Yarn o Gradle)
- Java (con Maven o Gradle)
- Golang
- Python
- Dockerfile
- Lenguaje de configuración de Terraform
Los puntos ' code ' gestionan los siguientes procesos:
building: Define las herramientas que realizan la compilación del código fuente dado.unit-testing: Localiza las herramientas que realizan las pruebas unitarias del resultado de la compilación.
Puntos de despliegue
Los puntos " deployment " localizan un vehículo de despliegue, incluidos los recursos y herramientas de despliegue. los puntos deployment " tienen un proceso de despliegue que enumera las herramientas
de despliegue. Los vehículos de despliegue admitidos actualmente son:
-
Definiciones de recursos Kubernetes como '
Pod, 'ReplicaSet, 'ReplicationController, 'Deployment, 'Daemonset, 'StatefulSet, 'Job, 'Cronjob, 'NetworkPolicy, 'Ingress, 'Service, 'Route- kubectl como herramienta -
Websphere Liberty Application Custom Resource- kubectl como herramienta
-
Open Liberty Application Custom Resource- kubectl como herramienta
-
Mapa delHelm- el timón como herramienta
-
Configuración de Terraform- IBM Cloud Schematics o Terraform CLI como herramienta
-
Wazi DeploymentMethod Recurso Personalizado- Wazi Deploy como herramienta
-
Dockerfile cuando IBM Cloud Code Engine ha sido configurado para el despliegue- IBM Cloud Code Engine CLI como herramienta
Puntos de prueba de aceptación
Los puntos " acceptance-test " localizan un conjunto de pruebas de aceptación que hay que ejecutar. los puntos " acceptance-test " tienen un proceso " acceptance-testing "
que identifica las herramientas para ejecutar el conjunto de pruebas de aceptación.
Puntos de escaneado dinámico
Los puntos " dynamic-scan " identifican ubicaciones para una exploración dinámica. Los puntos de escaneo dinámico tienen un proceso ' scanning ' para listar las herramientas de escaneo invocadas durante
el escaneo dinámico.
El escaneo OWASP ZAP es la única herramienta soportada para iniciar un sub-webhook trigger.
Puntos de liberación
Los puntos ' release ' localizan el proceso de liberación. Los puntos de publicación tienen un proceso " releasing " que enumera las herramientas que deben ejecutarse durante la fase de publicación. Actualmente,
las herramientas admitidas para el proceso de liberación son:
- liberación semántica
- maven con fase '
maven deploy'.
Muestra de contenido polyglot-spots.json
La función Inferred DevSecOps Pipeline Configuration extrae puntos y genera el siguiente contenido JSON para activar acciones y herramientas específicas durante las etapas de CI pipeline.
{
"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": []
}
Configuración avanzada
Inyección de ficheros
La función de configuración de canalización inferida ' DevSecOps ' utiliza el contenido de los archivos ' polyglot-spots.json y ' .pipeline-config.yaml ' para personalizar la ejecución del proceso de canalización
' DevSecOps '.
Durante la etapa ' finish de un CI pipeline, tanto ' polyglot-spots.json como ' .pipeline-config.yaml (correspondientes a la configuración estática de la ejecución del CI pipeline) se añaden a una rama
llamada ' inferred-devsecops (por defecto) en el repositorio del código fuente de la aplicación.
La configuración de la tubería con la versión de formato 2 (utilizable con compliance-pipelines branch v11 por ejemplo) también se puede generar si la propiedad create-inferred-pipeline-configuration-v2 se establece en true (Por defecto en false ). A continuación, se añade un archivo de configuración de canalización adicional como .pipeline-config-v2.yaml a la rama denominada inferred-devsecops (por defecto) en el repositorio de código fuente de la aplicación.
Configuración de la rama de inyección
Puede configurar el nombre de la rama para inyectar archivos inferidos DevSecOps utilizando la propiedad de canalización ' inferred-devsecops-branch. El valor predeterminado es inferred-devsecops.
Utilice la propiedad push-inferred-pipeline-configuration-files pipeline (la propiedad push-polyglot-files está obsoleta en favor de la propiedad push-inferred-pipeline-configuration-files ) para activar
o desactivar la creación y actualización de la rama inferred-devsecops:
| Valor | Descripción |
|---|---|
true (Valor predeterminado) |
Los archivos de configuración se añaden y se envían a la rama ' inferred-devsecops ' del repositorio del código fuente de la aplicación. |
false |
Los archivos de configuración no se añaden a la rama inferred-devsecops. |
Configuración de la extracción de manchas
Configure la extracción de manchas utilizando las siguientes propiedades de entorno de canalización:
Ignorar las manchas
Puede ignorar puntos específicos durante la extracción utilizando expresiones regulares. Están disponibles las opciones de configuración siguientes:
ignore-code-spot-pattern: Ignora los puntos de código que coincidan con la expresión regular especificada.ignore-deployment-spot-pattern: Ignora los puntos de despliegue que coincidan con la expresión regular especificada.ignore-dynamic-scan-spot-pattern: Ignora los puntos de escaneo dinámico que coincidan con la expresión regular especificada.ignore-acceptance-test-spot-pattern: Ignora los puntos de la prueba de aceptación que coincidan con la expresión regular especificada.ignore-release-spot-pattern: Ignora los puntos de liberación que coinciden con la expresión regular especificada.
Configuración Code Engine
Si utiliza IBM Cloud Code Engine para la implantación, especifique el proyecto Code Engine y configure el proceso de compilación con las siguientes propiedades de entorno de canalización:
code-engine-project: Especifica el proyecto Code Engine.code-engine-build-use-native-docker: (Por defecto: 'false) Indica si se debe utilizar Docker CLI en lugar del comando 'ibmcloud code-engine buildrun.code-engine-disable-buildpacks-strategy: (Por defectofalse) Indica que el proceso de compilación no debe utilizar la estrategiabuildpacks(sólo válido si se ha establecidocode-engine-project)root-as-build-context: (Predeterminado:false) indica que el contexto de compilación para una herramienta de compilación relacionada conDockerfile(comodockerocode-engine) debe utilizar la raíz del repositorio como contexto de compilación y no la carpeta que contiene el Dockerfile.
Configuración de la compilación de la imagen del contenedor
container-image-builder: (Predeterminadodocker) Para compilaciones relacionadas con Dockerfile, especifique la herramienta que se utilizará (dockeropodman) para compilar la imagen del contenedor.root-as-build-context: (Predeterminado:false) indica que el contexto de compilación para la herramientaDockerfilede compilación relacionada (comodocker,podmanocode-engine) debe utilizar la raíz del repositorio como contexto de compilación y no la carpeta que contiene el archivo Dockerfile.
Golang Configuración
Para configurar el proceso de extracción puntual para Golang, establezca las siguientes propiedades de entorno de canalización:
go-ignore-main: (Por defecto: 'false) Indica si la extracción de puntos de código no debe centrarse en la detección del paquete principal y la función principal para el argumento fuente principal.go-output: Especifica el archivo de salida ejecutable del comando go build.
Configuración de Gradle
Para configurar las tareas de Gradle para la configuración, las pruebas unitarias, el artefacto de compilación y las pruebas de aceptación, utilice las siguientes propiedades de entorno de canalización:
gradle-setup-tasks: (Por defecto: 'assemble) Lista separada por comas de tareas Gradle para la etapa de configuración.gradle-unit-testing-tasks: (Por defecto: 'test) Lista separada por comas de tareas Gradle para la etapa de prueba unitaria.gradle-build-artifact-tasks: (Por defecto: 'build) Lista separada por comas de tareas Gradle para la etapa build-artifact.gradle-acceptance-testing-tasks: Lista separada por comas de tareas Gradle para la etapa de prueba de aceptación.
Configuración de NPM
Puede configurar la detección de secuencias de comandos de pruebas unitarias y pruebas de aceptación de NPM.
hint-npm-unit-testing-script: (Por defecto: 'test) Sugerencias para la detección de scripts de pruebas unitarias NPM.hint-npm-acceptance-testing-script: (Por defecto: 'acceptance-test) Sugerencias para la detección de scripts de pruebas de aceptación de NPM.
Configuración de Python
Para configurar la versión de Python Poetry, utilice las siguientes propiedades de entorno de canalización:
hint-python-poetry-version: (Por defecto: '1.8.2) Sugerencias para la versión de Python Poetry.discover-python-unittest-from-ancestor: (Por defecto:false) indica que el directorio antecesor se utiliza como punto de partida para el descubrimiento de pythonunittest(por ejemplo, para descubrir pruebas unitarias desde el directorio que contiene elrequirements.txten la raíz del repositorio y no elrequirements.txt(si existe) que está más cerca de los archivos unittest de python).
Configuración de Terraform
Para configurar el proceso de despliegue de Terraform, utilice las siguientes propiedades de entorno de canalización:
terraform-deployment: (Por defecto: 'false) Desactiva Schematics como vehículo de despliegue en favor de Terraform y Cloud Object Storage para el almacenamiento de estados.
Helm configuración
Para configurar el proceso de lanzamiento de Helm, utilice las siguientes propiedades del entorno de canalización:
helm-oci-registry-support: (Predeterminadofalse) Habilitar el envío del gráfico Helm al registro OCI en el paso de lanzamiento.configuration-file-pattern-<config_file_type>: Define un patrón para identificar los archivos de configuración de un tipo determinado. Por ejemplo,configuration-file-pattern-dev-config=chart/dev-values.yamlseleccionará los archivoschart/dev-values.yamlcomo artefactos de tipodev-config.
Carga de artefactos
Para configurar el proceso de carga de artefactos, utilice las siguientes propiedades de entorno de canalización:
artifact-upload-to-devsecops-cos: (Predeterminado: 'false) Habilita la carga de artefactos en un bucket Cloud Object Storage mediante la carga de artefactos de la CLI de DevSecOps para artefactos no guardados en imágenes.
Configuración del entorno Archivos
Cada repositorio de código fuente requiere una configuración o personalización específica para una etapa determinada. bash La función de configuración de canalización de Inferred DevSecOps proporciona una forma de especificar
una propiedad de configuración de entorno que puede definirse como un script de Inferred. Esta secuencia de comandos se obtiene antes de ejecutar la acción correspondiente para un proceso.
Durante la extracción de spots, esta función de configuración inferida de devsecops utiliza una pista basada en el nombre del archivo para determinar los archivos de configuración del entorno. Por ejemplo, un archivo llamado .env.npm-test.sh se seleccionará como el script de configuración del entorno que se invocará antes de ejecutar la prueba unitaria npm.
El formato normalizado para un archivo de configuración de entorno es como .env.<process>.sh o .env.<tool>-<process>.sh.
El valor de <process> puede ser uno de los siguientes: build, test, acceptance-test, deploy, dynamic-scan o release.
Para el proceso de build, el valor de <tool> puede ser uno de los siguientes: code-engine, docker, docker-maven-plugin, go, gradle, helm,
maven, npm, pip, pipenv, poetry, terraform o yarn.
Para los procesos test y acceptance-test, el valor de <tool> puede ser uno de go, gradle, helm, maven, npm, pytest,
python o terratest.
Para el proceso de deploy, el valor de <tool> puede ser uno de los siguientes: code-engine,helm, kubectl-liberty-app, kubectl, schematics o terraform.
Para un proceso de " dynamic-scan ", el valor de " <tool> " puede ser " trigger-async-zap".
Para el proceso release, el valor de <tool> puede ser uno de maven, poetry o semantic-release.
Aquí hay algunos ejemplos:
.env.build.shestá asociado como entorno de configuración para la construcción de procesos en puntos de código. Puede ser anulado por un archivo de configuración de entorno para una herramienta con ámbito (como docker, maven...) como.env.docker-build.sh,.env.maven-build.sh,....env.test.shestá asociado como configuración de entorno para la unidad de proceso de prueba en puntos de código. Puede ser anulado por un archivo de configuración de entorno para una herramienta con ámbito (como go, npm...) como.env.go-test.sh,.env.npm-test.sh,....env.deploy.shestá asociado como configuración de entorno para el proceso en los puntos de implementación. Puede ser anulado por un archivo de configuración de entorno para una herramienta con ámbito (como code-engine, helm, kubectl...) como.env.code-engine-deploy.sh,.env.helm-deploy.sh,....env.acceptance-test.shestá asociado como configuración de entorno para el proceso en los puntos de prueba de aceptación. Puede ser anulado por un archivo de configuración de entorno para una herramienta con ámbito (como go, maven, npm...) como.env.maven-acceptance-test.sh,.env.python-acceptance-test.sh,....env.dynamic-scan.shestá asociado como entorno-configuración para el proceso en puntos de escaneo dinámicos..env.release.shestá asociado como configuración de entorno para el proceso en puntos de liberación. Puede ser anulado por un archivo de configuración de entorno para una herramienta con ámbito (como maven, semantic-release...) como.env.maven-acceptance-test.sh,.env.semantic-release-acceptance-test.sh,...
Para ver un ejemplo de cómo utilizar este script, consulte el repositorio de Hello Compliance App en IBM Cloud.
Inyección de contexto ambiental
La función Inferred DevSecOps Pipeline Configuration incorpora variables de entorno de las propiedades de pipeline y trigger en varios contextos de proyecto. Los contextos del proyecto son los siguientes:
- Etapas de ejecución de la tubería
- Despliegues de Helm
- Despliegue Code Engine
Esta función le permite inyectar o establecer contexto, como variables de entorno, desde propiedades de canalización y activación basadas en nombres de propiedades normalizados.
Algunas herramientas manejan propiedades con nombres normalizados que se inyectan en contextos específicos, como:
- argumentos de docker build y/o secretos de docker build
- archivos complementarios '
values.yaml' para despliegues Helm configmapo "secretpara las implantaciones Code Engine
Al utilizar nombres de propiedades normalizados, puede inyectar variables de entorno y otros contextos en sus canalizaciones e implantaciones.
Inyección de variables de entorno en etapas de ejecución de canalizaciones
La función Inferred DevSecOps Pipeline Configuration proporciona una utilidad " export-properties " para exportar propiedades de canalización y activación como variables de entorno durante la ejecución de la etapa.
Esta utilidad se invoca en cada etapa personalizada:
export-properties "GLOBAL" && export-properties "${STAGE^^}"
Variables de entorno globales
El comando ' export-properties "GLOBAL" ' exporta propiedades de pipeline y trigger con nombres normalizados con ' ENV_GLOBAL_<XXX> ' como variables de entorno como ' XXX ' en cada
contexto de ejecución de etapa de pipeline.
Ejemplo de variable de entorno global
| Nombre de propiedad | Tasador | Variable de entorno resultante |
|---|---|---|
ENV_GLOBAL_my_var |
my_value |
my_var=my_value |
Variables de entorno específicas de cada etapa
El comando ' export-properties "${STAGE^^}" ' exportará las propiedades del pipeline o trigger relevantes para la etapa actual ejecutada con el nombre normalizado ' ENV_<stage in upper case>_<XXX> como variables de entorno en la etapa ejecutada dada.
Ejemplo de variables de entorno específicas de una etapa
| Nombre de propiedad | Tasador | Variable de entorno resultante |
|---|---|---|
ENV_SETUP_CGO_ENABLED |
true |
CGO_ENABLED=true |
En el proceso CI, el paso ' code-setup - run-stage ' tiene la variable de entorno ' CGO_ENABLED ' establecida en el valor adecuado.
Consulte las descripciones de las etapas para ver la lista de etapas y sus descripciones.
Un caso de uso típico para esta función es inyectar variables de entorno antes de ejecutar pruebas unitarias para proporcionar configuración. En este caso, el nombre normalizado de las propiedades sería ' ENV_TEST_<a_var> siendo ' <a_var> ' el nombre de la variable de entorno exportada que estará disponible para la ejecución de la etapa test`.
Ejemplo
| Nombre de propiedad | Tasador | Variable de entorno resultante |
|---|---|---|
ENV_TEST_MY_VAR |
my_value |
MY_VAR=my_value |
Utilice esta función para simplificar la configuración de sus canalizaciones y mejorar la coherencia entre sus implantaciones.
Ejecución y configuración de herramientas
Algunas herramientas de la función Inferred DevSecOps Pipeline Configuration utilizan propiedades de canalización y activación para inferir la configuración complementaria.
Docker
- Argumentos de construcción: El comando docker build se completa con parámetros --build-arg basados en propiedades pipeline y trigger con un nombre normalizado como '
DOCKER_BUILD_ARG_.- Ejemplo: Añadir una propiedad llamada '
DOCKER_BUILD_ARG_my_arginyecta el parámetro '--build-arg="my_arg="en el comando docker build.
- Ejemplo: Añadir una propiedad llamada '
- Construir secretos: El comando docker build se completa con parámetros --secret basados en las propiedades pipeline y trigger con un nombre normalizado como '
DOCKER_BUILD_SECRET_.- Por ejemplo, añadir una propiedad llamada DOCKER_BUILD_SECRET_my_secret inyecta el parámetro --secret id=my_secret,env= en el comando docker build.
Para obtener más información, consulte docker build arguments y docker build secret
Helm
- Despliegue del tratamiento: Se pueden inyectar valores adicionales en el proceso de despliegue de ' Helm ' basándose en las propiedades normalizadas de canalización y activación.
- Si una propiedad tiene un nombre como '
HELM_VALUE_,, el archivo de valores complementarios gestionado por la herramienta de procesamiento Helm añade una entrada 'a_value_propertycon el valor de la propiedad pipeline o trigger. - El archivo de valores complementarios se utiliza como argumento del último parámetro '
-f | --values' del comando helm.
- Si una propiedad tiene un nombre como '
Para saber más, consulte el contenido sobre valores complementarios.
Terraform
- Proceso de despliegue La herramienta Terraform se basa en las funciones de ayuda de Terraform proporcionadas por compliance-commons terraform.
- Para obtener más información sobre las propiedades de configuración para la inyección de contexto, consulte Configuración de las variables de entrada de Terraform.
Schematics
- Proceso de despliegue: La herramienta Schematics se basa en las funciones de ayuda de Schematics proporcionadas por compliance-commons schematics.
- Para obtener más información sobre las propiedades de configuración para la inyección de contexto, consulte Configuración de las variables declaradas del espacio de trabajo Schematics.
Code Engine
- Proceso de despliegue: Se puede crear configuración adicional para la aplicación definiendo configmap complementario o secreto asociado a la aplicación.
- Para las propiedades pipeline y trigger con un nombre normalizado como '
CE_ENV_<XXXX>, se creará una entrada en un configmap o secreto complementario (asociado a la aplicación o trabajo Code Engine ) con la clave '<XXXX>y su valor establecido en función del valor de la propiedad pipeline o trigger correspondiente.
- Para las propiedades pipeline y trigger con un nombre normalizado como '
Para más información, consulte " configmap(s)del motor de código para configurar aplicaciones o trabajos " y " código secreto para configurar aplicaciones o trabajos"
Biblioteca de scripts comunes DevSecOps
Inferred DevSecOps Pipeline Configuration utiliza scripts/funciones en ciertas etapas de los scripts de la biblioteca común, que ofrece un conjunto de scripts reutilizables que pueden ayudarte si quieres empezar con la personalización.
Para obtener más información sobre la biblioteca de scripts comunes, incluidos scripts, herramientas, uso y parámetros, consulte ' Biblioteca de guiones comunes.
Preguntas frecuentes
Protección de ramas
Activar la protección de ramas por defecto
Los pipelines DevSecOps PR y CI habilitan la protección de ramas en el repositorio de código fuente por defecto. Esta verificación tiene lugar durante la fase de configuración del código.
Desactivar la protección de rama
Para desactivar la protección de ramas, establezca la propiedad " setup-branch-protection " en " false.
Personalizar las comprobaciones de estado de la protección de sucursales
Para personalizar el prefijo de las comprobaciones del estado de protección de la rama, establezca la propiedad ' branch-protection-status-check-prefix.
El prefijo por defecto es ' tekton.
Configuración y ejecución de ganchos previos a la confirmación
De forma predeterminada, los pipelines de PR y CI con configuración de inferencia de configuración ( DevSecOps ) ejecutan ganchos de pre-commit en la etapa de configuración si existe un archivo de configuración
de pre-commit en el repositorio de código fuente (por defecto, .pre-commit-config.yaml ). El nombre del archivo de configuración previo al compromiso puede especificarse mediante la propiedad de canalización/activación pre-commit-config-file,
establecida en el nombre del archivo de configuración.
Algunos ganchos previos al compromiso pueden omitirse (por ejemplo, porque un gancho determinado como detect-secrets se ejecuta en una etapa específica de las canalizaciones de PR o CI). Para especificar los hooks que se deben
omitir, establezca la propiedad pipeline/trigger pre-commit-skip-hooks en una lista separada por comas de los id de hook que se deben omitir.
Servidor Sonarqube con certificado autofirmado
si el sonarqube-config está configurado en custom para utilizar un servidor sonarqube existente y el servidor tiene un certificado
autofirmado, entonces para que el escáner sonar se conecte correctamente al servidor sonarqube, el certificado autofirmado debe añadirse a los certificados de CA de confianza.
Al proporcionar el certificado en formato PEM como valor de la propiedad pipeline/trigger sonarqube-root-certificate, la implementación de escaneo estático en la configuración del pipeline Inferred DevSecOps lo añadirá en consecuencia
para el uso del SonarScanner para maven, SonarScanner para gradle sonar o SonarScanner invocado con Docker.
Poesía y repositorios privados
Configurar Poesía para Repositorios Privados
Cuando se utiliza Poetry (pyproject.toml se identifica como un punto de código) y se define una fuente o repositorio alternativo para obtener las dependencias, como por ejemplo:
[[tool.poetry.source]]
name = "local"
url = "<artifactory-url>"
secondary = true
o cuando se trata de Poesía (es decir, pyproject.toml que contiene una sección build-system con build-backend igual a poetry.core.masonry.api es un punto de liberación
identificado) entonces puede ser necesario proporcionar credenciales para autenticarse en los registros privados.
Autenticación con repositorios privados en IBM Cloud
Es necesario proporcionar credenciales para este repositorio de fuentes ' local '. La documentación de Poetry sobre la configuración para las credenciales indica que las variables de entorno para proporcionar el usuario y la contraseña http deben ser ' POETRY_HTTP_BASIC_LOCAL_USERNAME y ' POETRY_HTTP_BASIC_LOCAL_PASSWORD.
Utilice la función de inyección de variables de entorno y añada las siguientes propiedades de entorno de canalización:
ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(texto) con el valor apropiadoENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(asegurado) con el valor asegurado apropiado
Autenticarse para publicar en repositorios privados
Cuando se trata de Poesía (es decir, pyproject.toml que contiene una sección build-system con build-backend igual a poetry.core.masonry.api es un punto de liberación identificado),
la configuración para token o nombre de usuario se puede definir utilizando propiedades de entorno de canalización como (para un repositorio llamado local):
ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(texto) con el valor apropiadoENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(asegurado) con el valor asegurado apropiado
o
ENV_GLOBAL_POETRY_PYPI_TOKEN_LOCAL(asegurado) con el valor asegurado apropiado correspondiente al token
Maven, pom.xml, settings.xml y resolución de entornos
Configurar Maven para archivos de configuración personalizados en IBM Cloud
Si tu proyecto Maven define un archivo de configuración específico con un nombre de archivo personalizado, como ' ci-settings.xml, define una propiedad de entorno de canalización maven-user-settings-file-path con el valor establecido a ' ci_settings.xml en las propiedades PR, CI pipeline, o trigger level.
Además, si hay algún ' env.<VARIABLE> ' que resolver como:
<server>
<username>${env.MAVEN_USERNAME}</username>
<password>${env.MAVEN_PASSWORD}</password>
<id>central</id>
</server>
Utilice la función de inyección de variables de entorno para proporcionar estas variables mediante la adición de 2 propiedades de canalización (en la canalización PR y CI):
ENV_GLOBAL_MAVEN_USERNAME(texto) con el valor a utilizar para maven usernameENV_GLOBAL_MAVEN_PASSWORD(asegurado) con el valor a utilizar para la contraseña de maven
Forzar la vinculación estática para Go Builds
Activar la vinculación estática para Go Builds
Por defecto, ' go build ' produce un binario enlazado dinámicamente. Para utilizarlo en un contenedor Docker, active la vinculación estática estableciendo ' CGO_ENABLED=0 ' durante la compilación.
Configurar la variable de entorno para la compilación Go
Para habilitar la vinculación estática, utilice la función de inyección de variables de entorno para añadir la siguiente propiedad de entorno de canalización en la canalización de CI:
ENV_SETUP_CGO_ENABLED" con el valor "0"
Obtención de soporte
IBM Cloud watsonx, que funciona con la tecnología de IBM, está diseñado para ayudarle a aprender a trabajar en IBM Cloud y a crear soluciones con el catálogo de ofertas disponible. Consulte Cómo obtener ayuda del asistente de IA.
Si todavía no puede resolver el problema, puede abrir un tíquet de soporte de IBM. Para obtener más información, consulte Creación de casos de soporte. Y, si desea enviar comentarios, consulte Envío de comentarios.