Continuous Testing y extensión de Datadog CI Azure DevOps

Visual Studio Marketplace Version Build Status License

Información general

Con la tarea SyntheticsRunTests, puedes ejecutar tests Synthetic dentro de la configuración de tu pipeline Azure y garantizar que todos tus equipos que utilizan Azure DevOps puedan beneficiarse de los tests Synthetic en cada etapa del ciclo de vida del software.

Para obtener más información sobre la configuración disponible, consulta la documentación de datadog-ci synthetics run-tests.

Autenticación

Conexión al servicio

Para conectarte a tu sitio Datadog, Datadog recomienda configurar una conexión personalizada al servicio al configurar la tarea SyntheticsRunTests.

Debes proporcionar los siguientes datos:

  • Sitio Datadog: Tu sitio Datadog. Los valores posibles se muestran en esta tabla.
  • Subdominio personalizado (por defecto: app): El subdominio personalizado para acceder a tu organización Datadog. Si tu URL es myorg.datadoghq.com, el subdominio personalizado es myorg.
  • Clave de API: Tu clave de API Datadog. Esta clave se crea en tu organización Datadog.
  • Clave de aplicación: Tu clave de aplicación Datadog. Esta clave se crea en tu organización Datadog.

Claves de API y de aplicación

  • Clave de API: Tu clave de API Datadog. Esta clave se crea en tu organización Datadog y debe almacenarse como secreto.
  • Clave de aplicación: Tu clave de aplicación Datadog. Esta clave se crea en tu organización Datadog y debe almacenarse como secreto.
  • Sitio Datadog: Tu sitio Datadog. Los valores posibles se muestran en esta tabla.
  • Subdominio personalizado (opcional): El subdominio personalizado para acceder a tu organización Datadog. Si tu URL es myorg.datadoghq.com, el subdominio personalizado es myorg.

Configuración

Para conectarte a tu cuenta de Datadog, crea una conexión al servicio Datadog CI en tu proyecto de pipelines de Azure. Una vez creado, todo lo que necesitas es el nombre de la conexión al servicio en las tareas.

  1. Instala la extensión de Datadog Continuous Testing del Visual Studio Marketplace en tu organización de Azure.
  2. Añade tu API de Datadog y las claves de la aplicación en la conexión al servicio Datadog CI, o como secretos de tu proyecto de pipelines de Azure.
  3. En tu pipeline Azure DevOps, utiliza la tarea SyntheticsRunTests.

Tu tarea puede ser simple o compleja.

Uso sencillo

Ejemplo de tarea con identificadores públicos

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    publicIds: |
      abc-d3f-ghi
      jkl-mn0-pqr

Ejemplo de tarea utilizando los archivos synthetics.json existentes

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    files: 'e2e-tests/*.synthetics.json'

Para ver un archivo de test de ejemplo, consulta este archivo test.synthetics.json.

Ejemplo de tarea que utiliza secretos de pipeline para la autenticación

- task: SyntheticsRunTests@1
  inputs:
    authenticationType: 'apiAppKeys'
    apiKey: '$(DatadogApiKey)'
    appKey: '$(DatadogAppKey)'
    datadogSite: '$(DatadogSite)'
    subdomain: 'myorg'

Uso complejo

Ejemplo de tarea utilizando la testSearchQuery

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    testSearchQuery: 'tag:e2e-tests'

Ejemplo de tarea que utiliza testSearchQuery y sobreescritura de variables

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    testSearchQuery: 'tag:e2e-tests'
    variables: |
      START_URL=https://staging.website.com
      PASSWORD=$(StagingPassword)

Ejemplo de tarea utilizando un archivo de configuración global con configPath

Por defecto, la ruta al archivo de configuración global es datadog-ci.json. Puedes sobreescribir esta ruta con la entrada config_path.

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    configPath: './global.config.json'
    connectedService: 'my-datadog-ci-connected-service'

Entradas

Para obtener más información sobre la configuración disponible, consulta la documentación de datadog-ci synthetics run-tests.

NombreDescripción
apiKeyTu clave de API Datadog. Esta clave se crea en tu organización Datadog y debe almacenarse como secreto.
Obligatoria cuando authenticationType == apiAppKeys
appKeyTu clave de API Datadog. Esta clave se crea en tu organización Datadog y debe almacenarse como secreto.
Obligatoria cuando authenticationType == apiAppKeys
authenticationType(Obligatorio) Almacenamiento y recuperación de credenciales.
Debe ser apiAppKeys o connectedService
batchTimeoutEspecifica la duración del tiempo de espera en milisegundos para el lote CI. Cuando se agota el tiempo de espera de un lote, el trabajo de CI falla y no se activan nuevas ejecuciones de tests, pero las ejecuciones de tests en curso finalizan normalmente.
Por defecto: 1800000 (30 minutos)
connectedServiceEl nombre de la conexión al servicio Datadog CI.
Obligatorio cuando authenticationType == connectedService
configPathLa ruta al archivo de configuración global que configura datadog-ci.
Por defecto: datadog-ci.json
datadogSiteTu sitio Datadog. Los valores posibles se muestran en esta tabla.
Por defecto: datadoghq.com

Configúralo como (asegúrate de seleccionar el SITIO correcto a la derecha).
failOnCriticalErrorsGenera la falla del trabajo de CI si se produce un error crítico que suele ser transitorio, como límites de frecuencia, fallos de autenticación o problemas en la infraestructura Datadog.
Por defecto: false
failOnMissingTestsGenera la falla del trabajo CI si la lista de tests a ejecutar está vacía o si faltan algunos tests explícitamente mencionados.
Por defecto: false
failOnTimeoutGenera la falla del trabajo CI si el lote CI falla debido al tiempo de espera.
Por defecto: true
filesPatrones glob para detectar archivos de configuración de tests Synthetic, separados por nuevas líneas.
Por defecto: {,!(node_modules)/**/}*.synthetics.json
jUnitReportEl nombre de archivo de un informe JUnit, si quieres generar uno.
Por defecto: ninguno
locationsAnula la lista de ubicaciones desde las que ejecutar el test, separadas por nuevas líneas o comas. Los valores posibles se muestran en esta respuesta de API.
Por defecto: ninguno
publicIdsID públicos de tests Synthetic a ejecutar, separados por nuevas líneas o comas. Si no se proporciona ningún valor, los tests se detectan en los archivos de configuración de tests Synthetic.
Por defecto: ninguno
selectiveRerunSi solo se vuelven a ejecutar tests fallidos o no. Si un test ya ha aprobado un commit dado, no se vuelve a ejecutar en los siguientes lotes de CI. Por defecto, se utiliza la configuración por defecto de tu organización. Configúrala como false para forzar ejecuciones completas cuando tu configuración lo permite por defecto.
Por defecto: ninguno
subdomainEl subdominio personalizado para acceder a tu organización Datadog cuando authenticationType == apiAppKeys. Si tu URL es myorg.datadoghq.com, el subdominio personalizado es myorg.
Por defecto: app
testSearchQueryUtiliza una consulta de búsqueda para seleccionar los tests Synthetic que se van a ejecutar. Utiliza la barra de búsqueda de la página con la lista de tests Synthetic para crear tu consulta, y luego cópiala y pégala.
Por defecto: ninguno
variablesInyecta nuevas variables locales y globales o sobreescribe las existentes en tests Synthetic como pares clave-valor, separadas por nuevas líneas o comas. Por ejemplo: START_URL=https://example.org,MY_VARIABLE=My title.
Por defecto: ninguno

Salidas

NombreDescripción
batchUrlLa URL del lote CI.
criticalErrorsCountEl número de errores críticos que se han producido durante el lote CI.
failedCountEl número de resultados que han fallado durante el lote CI.
failedNonBlockingCountEl número de resultados que han fallado durante el lote CI sin bloquear el CI.
passedCountEl número de resultados que han sido aprobados durante el lote CI.
previouslyPassedCountEl número de resultados que han sido aprobados en lotes CI anteriores en el mismo commit.
testsNotFoundCountEl número de tests que no se han podido encontrar al iniciar el lote CI.
testsSkippedCountEl número de tests que se han omitido al iniciar el lote CI.
timedOutCountEl número de resultados que han fallado debido a la superación del tiempo de espera del lote CI.
rawResultsLa matriz synthetics.Result[], como cadena codificada en JSON.

Referencias adicionales

Documentación útil adicional, enlaces y artículos: