La página Integración continua en la sección Plataforma del menú Administrador te permite configurar los parámetros de configuración de la función integración continua (CI) de Looker. Configura los parámetros de configuración de CI de Looker (Google Cloud Core) para garantizar la calidad y la confiabilidad de tus proyectos de LookML. La CI evita los errores de consulta y detecta problemas con SQL, pruebas de datos, contenido y LookML antes de que lleguen a la producción. También puedes configurar los validadores de CI para que se ejecuten automáticamente cuando se envíe una solicitud de extracción a tu repositorio de LookML, lo que optimiza tu flujo de trabajo de desarrollo.
Capacidades de cumplimiento de la integración continua
La CI de Looker no se incluye en los límites de autorización de FedRAMP High, FedRAMP Moderate ni DoD Impact Level 5 (IL5).
Antes de habilitar el parámetro de configuración de CI de Looker para tu instancia de Looker, consulta con tu organismo autorizador para determinar si las ofertas de cumplimiento de la CI de Looker cumplen con los requisitos de seguridad y reglamentarios específicos de tu organización.
En el caso de las instancias de Looker (Google Cloud Core), cada paquete de control de Assured Workloads que esté disponible agregará funciones de CI de Looker como ofertas predeterminadas a medida que se cumplan los requisitos y procesos de cambio de ese paquete.
Habilitar la integración continua
La función de integración continua (CI) de Looker te permite ejecutar pruebas en tu proyecto de LookML para ofrecer experiencias de datos más confiables, eficientes y fáciles de usar. Puedes usar los validadores de CI para identificar problemas con SQL, pruebas de datos, contenido y LookML antes de que lleguen a la producción para verificar tu LookML y evitar errores de consulta para tus usuarios. También puedes configurar los validadores de CI para que se ejecuten automáticamente según una programación o cuando se envíe una solicitud de extracción a tu repositorio de LookML.
Un administrador de Looker puede usar el botón de activación Habilitar la integración continua para habilitar la CI en tu instancia.
Usuarios de CI de Looker
Cuando habilitas la integración continua en tu instancia, Looker crea automáticamente 10 usuarios de CI de Looker en el grupo de usuarios Usuarios de CI de Looker con el rol Usuarios de CI de Looker. Un administrador de Looker puede ver los usuarios de CI de Looker en la pestaña Cuentas de servicio de la página Usuarios del administrador.
Si tu instancia usa permisos de acceso para controlar el acceso a las exploraciones, los usuarios de CI de Looker deben incluirse en esos permisos de acceso. Para incluir a los usuarios de CI, asigna los valores de atributos de usuario pertinentes al grupo Usuarios de CI de Looker , como se describe en la página de documentación Configuración del administrador: Atributos de usuario.
Integraciones
La integración continua te permite ejecutar paquetes de CI automáticamente cuando se producen solicitudes de extracción o confirmaciones en tu repositorio de Git remoto. Puedes configurar la integración continua para que se integre con los siguientes proveedores de Git:
- GitHub (usa la app de GitHub de CI de Looker)
- GitLab (usa la API de Looker y GitLab CI)
- Bitbucket (usa la API de Looker y Bitbucket Pipelines)
- Acciones de GitHub (usa la API de Looker y las acciones de GitHub)
GitHub
Si tienes un repositorio de GitHub basado en la nube como repositorio remoto para tu proyecto de LookML, puedes configurar la integración continua para que ejecute automáticamente paquetes de CI cuando los desarrolladores de LookML envíen solicitudes de extracción a tu repositorio de LookML.
Para ejecutar automáticamente paquetes de CI en tu repositorio, la integración continua necesita los siguientes permisos:
- Acceso de lectura a los metadatos y las solicitudes de extracción de tu repositorio
- Acceso de lectura y escritura a los estados de confirmación, los hooks de repositorio y los flujos de trabajo de tu repositorio
Estos permisos no se configuran cuando configuras una conexión de Git para tu proyecto de LookML en el IDE de Looker. Si deseas usar la activación de solicitud de extracción para las ejecuciones de CI, tu proyecto de LookML debe configurarse con una conexión de Git (como se describe en la página Configura y prueba una conexión de Git), y también debes configurar la app de GitHub de CI como se describe en la sección Configura la app de GitHub de CI.
Tabla de GitHub
En la tabla GitHub de la página Integración continua del administrador, se enumeran los repositorios de GitHub configurados para los proyectos de LookML en tu instancia de Looker. Tus desarrolladores de LookML configuraron estos repositorios de GitHub como se describe en la página de documentación Configura y prueba una conexión de Git.
Para cada repositorio de GitHub que aparece en la lista, la tabla muestra si el repositorio se configuró con la app de GitHub de CI:
- Instalado: Se otorgó al repositorio la aplicación de GitHub de CI de Looker, que permite que la CI se ejecute automáticamente cuando los desarrolladores de LookML envían solicitudes de extracción a tu repositorio de LookML.
- No instalado: El repositorio no se configuró para la integración de solicitud de extracción con la CI de Looker. Para configurar el repositorio para la integración de solicitud de extracción de CI, consulta la sección Configura la app de GitHub de CI.
Configura la app de GitHub de CI
Para otorgar la aplicación de GitHub de CI para un repositorio, sigue estos pasos:
- En la página Integración continua del administrador en Looker, haz clic en el botón Configurar la app de GitHub. Se abrirá una ventana del navegador en la página web de las apps de GitHub.
- Selecciona la cuenta de GitHub en la que se almacena tu LookML.
- En la sección Acceso al repositorio , selecciona Todos los repositorios para permitir las integraciones de CI para todos los repositorios de Git que posee el propietario del recurso o selecciona Solo repositorios seleccionados para elegir los repositorios con los que deseas usar la integración continua.
- Haz clic en Guardar.
Si la aplicación de GitHub de CI de Looker se otorga correctamente al repositorio, Looker muestra Instalado para el repositorio en la tabla GitHub de la página Integración continua del administrador.
GitLab
Puedes activar las ejecuciones de integración continua de Looker desde GitLab CI con la API de Looker y el SDK oficial de Python de Looker (looker-sdk).
Para activar una ejecución de CI de Looker desde una canalización de GitLab CI, completa los siguientes pasos:
- Configura las variables de CI/CD en GitLab.
- Crea la secuencia de comandos de Python para GitLab CI.
- Configura el flujo de trabajo de GitLab CI.
Configura las variables de CI/CD en GitLab
En tu proyecto de GitLab, ve a Configuración > CI/CD > Variables y crea las siguientes variables de CI/CD. Establece cada variable en Enmascarado para proteger los valores sensibles:
LOOKERSDK_BASE_URL: Es la URL de la API de tu instancia de Looker (por ejemplo,https://example.cloud.looker.com).LOOKERSDK_CLIENT_ID: Es el ID de cliente de API3 generado desde la página Usuarios del administrador en Looker.LOOKERSDK_CLIENT_SECRET: Es el secreto de cliente de API3 correspondiente generado desde la Página de administrador Usuarios en Looker.
Crea la secuencia de comandos de Python para GitLab CI
Crea una secuencia de comandos de Python llamada run_looker_ci.py en tu repositorio. Esta secuencia de comandos usa el SDK de Looker para activar la ejecución de CI y realizar un sondeo hasta que finalice:
import os
import sys
import time
import looker_sdk
from looker_sdk import models as mdls
# Retrieve required settings from environment variables
project_id = os.getenv("LOOKER_PROJECT_ID")
suite_id = os.getenv("LOOKER_SUITE_ID")
# GitLab CI specific environment variables
branch = os.getenv("CI_COMMIT_REF_NAME")
commit = os.getenv("CI_COMMIT_SHA")
if not all([project_id, suite_id, branch, commit]):
print("Error: Missing required environment variables (LOOKER_PROJECT_ID, LOOKER_SUITE_ID, or GitLab vars).")
sys.exit(1)
# Initialize the Looker SDK.
# The SDK automatically picks up LOOKERSDK_BASE_URL, LOOKERSDK_CLIENT_ID, and LOOKERSDK_CLIENT_SECRET.
print("Initializing Looker SDK...")
try:
sdk = looker_sdk.init40()
except Exception as e:
print(f"Failed to initialize Looker SDK: {e}")
sys.exit(1)
# Configure the request body
print(f"Starting Looker CI run for project '{project_id}', suite '{suite_id}'...")
print(f"Branch: {branch} | Commit: {commit}")
request_body = mdls.CreateContinuousIntegrationRunRequest(
suite_id=suite_id,
branch=branch,
commit=commit
)
# Trigger the CI run
try:
run = sdk.create_continuous_integration_run(
project_id=project_id,
body=request_body
)
run_id = getattr(run, "run_id", getattr(run, "id", None))
print(f"Looker CI run created successfully. Run ID: {run_id}")
except looker_sdk.error.SDKError as e:
print(f"Failed to create Looker CI run: {e}")
sys.exit(1)
# Poll for completion
run_status = run.status
terminal_statuses = ["cancelled", "error", "passed", "failed"]
while run_status not in terminal_statuses:
print(f"Run {run_id} status is '{run_status}'. Waiting 15 seconds...")
time.sleep(15)
try:
run = sdk.get_continuous_integration_run(
project_id=project_id,
run_id=run_id
)
run_status = run.status
except looker_sdk.error.SDKError as e:
print(f"Error while polling Looker CI run status: {e}")
sys.exit(1)
print(f"Final Looker CI run status: {run_status}")
if run_status != "passed":
print("Looker CI run did not pass. Failing the GitLab CI job.")
sys.exit(1)
print("Looker CI run passed successfully!")
Configura el flujo de trabajo de GitLab CI
En el directorio raíz de tu repositorio, crea o actualiza tu archivo de configuración de canalización .gitlab-ci.yml para instalar looker-sdk y ejecutar run_looker_ci.py:
stages:
- test
looker-ci:
stage: test
image: python:3.10
variables:
LOOKER_PROJECT_ID: "LOOKER_PROJECT_ID"
LOOKER_SUITE_ID: "LOOKER_SUITE_ID"
script:
- pip install looker-sdk
- python run_looker_ci.py
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
Reemplaza lo siguiente:
LOOKER_PROJECT_ID: Es el ID del proyecto de Looker que deseas probar.LOOKER_SUITE_ID: Es el ID del paquete de CI que deseas ejecutar.
Bitbucket
Puedes activar las ejecuciones de integración continua de Looker desde Bitbucket Pipelines con la API de Looker y el SDK oficial de Python de Looker (looker-sdk).
Para activar una ejecución de CI de Looker desde Bitbucket Pipelines, completa los siguientes pasos:
- Configura las variables de repositorio en Bitbucket.
- Crea la secuencia de comandos de Python para Bitbucket Pipelines.
- Configura el flujo de trabajo de Bitbucket Pipelines.
Configura las variables de repositorio en Bitbucket
En tu repositorio de Bitbucket, ve a Configuración del repositorio > Variables del repositorio y crea las siguientes variables de repositorio. Establece cada variable en Protegido para proteger los valores sensibles:
LOOKERSDK_BASE_URL: Es la URL de la API de tu instancia de Looker (por ejemplo,https://example.cloud.looker.com).LOOKERSDK_CLIENT_ID: Es el ID de cliente de API3 generado desde la página Usuarios del administrador en Looker.LOOKERSDK_CLIENT_SECRET: Es el secreto de cliente de API3 correspondiente generado desde la página Usuarios del administrador en Looker.
Crea la secuencia de comandos de Python para Bitbucket Pipelines
Crea una secuencia de comandos de Python llamada run_looker_ci.py en tu repositorio. Esta secuencia de comandos usa el SDK de Looker para activar la ejecución de CI y realizar un sondeo hasta que finalice:
import os
import sys
import time
import looker_sdk
from looker_sdk import models as mdls
# Retrieve required settings from environment variables
project_id = os.getenv("LOOKER_PROJECT_ID")
suite_id = os.getenv("LOOKER_SUITE_ID")
# Bitbucket Pipelines specific environment variables
branch = os.getenv("BITBUCKET_BRANCH")
commit = os.getenv("BITBUCKET_COMMIT")
if not all([project_id, suite_id, branch, commit]):
print("Error: Missing required environment variables (LOOKER_PROJECT_ID, LOOKER_SUITE_ID, or Bitbucket vars).")
sys.exit(1)
# Initialize the Looker SDK.
# The SDK automatically picks up LOOKERSDK_BASE_URL, LOOKERSDK_CLIENT_ID, and LOOKERSDK_CLIENT_SECRET.
print("Initializing Looker SDK...")
try:
sdk = looker_sdk.init40()
except Exception as e:
print(f"Failed to initialize Looker SDK: {e}")
sys.exit(1)
# Configure the request body
print(f"Starting Looker CI run for project '{project_id}', suite '{suite_id}'...")
print(f"Branch: {branch} | Commit: {commit}")
request_body = mdls.CreateContinuousIntegrationRunRequest(
suite_id=suite_id,
branch=branch,
commit=commit
)
# Trigger the CI run
try:
run = sdk.create_continuous_integration_run(
project_id=project_id,
body=request_body
)
run_id = getattr(run, "run_id", getattr(run, "id", None))
print(f"Looker CI run created successfully. Run ID: {run_id}")
except looker_sdk.error.SDKError as e:
print(f"Failed to create Looker CI run: {e}")
sys.exit(1)
# Poll for completion
run_status = run.status
terminal_statuses = ["cancelled", "error", "passed", "failed"]
while run_status not in terminal_statuses:
print(f"Run {run_id} status is '{run_status}'. Waiting 15 seconds...")
time.sleep(15)
try:
run = sdk.get_continuous_integration_run(
project_id=project_id,
run_id=run_id
)
run_status = run.status
except looker_sdk.error.SDKError as e:
print(f"Error while polling Looker CI run status: {e}")
sys.exit(1)
print(f"Final Looker CI run status: {run_status}")
if run_status != "passed":
print("Looker CI run did not pass. Failing the Bitbucket Pipeline.")
sys.exit(1)
print("Looker CI run passed successfully!")
Configura el flujo de trabajo de Bitbucket Pipelines
En el directorio raíz de tu repositorio, crea o actualiza tu archivo bitbucket-pipelines.yml para instalar looker-sdk y ejecutar run_looker_ci.py:
image: python:3.10
pipelines:
pull-requests:
'**':
- step:
name: Looker CI
script:
- export LOOKER_PROJECT_ID="LOOKER_PROJECT_ID"
- export LOOKER_SUITE_ID="LOOKER_SUITE_ID"
- pip install looker-sdk
- python run_looker_ci.py
Reemplaza lo siguiente:
LOOKER_PROJECT_ID: Es el ID del proyecto de Looker que deseas probar.LOOKER_SUITE_ID: Es el ID del paquete de CI que deseas ejecutar.
Acciones de GitHub
Puedes activar las ejecuciones de integración continua de Looker desde las acciones de GitHub con la API de Looker y el SDK oficial de Python de Looker (looker-sdk).
Para activar una ejecución de CI de Looker desde un flujo de trabajo de acciones de GitHub, completa los siguientes pasos:
- Configura los secretos de repositorio en GitHub.
- Crea la secuencia de comandos de Python para las acciones de GitHub.
- Configura el flujo de trabajo de acciones de GitHub.
Configura los secretos de repositorio en GitHub
En tu repositorio de GitHub, ve a Configuración > Secretos y variables > Acciones y crea los siguientes secretos de repositorio:
LOOKERSDK_BASE_URL: Es la URL de la API de tu instancia de Looker (por ejemplo,https://example.cloud.looker.com).LOOKERSDK_CLIENT_ID: Es el ID de cliente de API3 generado desde la página Usuarios del administrador en Looker.LOOKERSDK_CLIENT_SECRET: Es el secreto de cliente de API3 correspondiente generado desde la página Usuarios del administrador en Looker.
Crea la secuencia de comandos de Python para las acciones de GitHub
Crea una secuencia de comandos de Python llamada run_looker_ci.py en tu repositorio. Esta secuencia de comandos usa el SDK de Looker para activar la ejecución de CI y realizar un sondeo hasta que finalice:
import os
import sys
import time
import looker_sdk
from looker_sdk import models as mdls
# Retrieve required settings from environment variables
project_id = os.getenv("LOOKER_PROJECT_ID")
suite_id = os.getenv("LOOKER_SUITE_ID")
# GitHub Actions specific environment variables
# GITHUB_HEAD_REF is the branch name for PRs.
# GITHUB_REF_NAME can be used as a fallback for non-PR events.
branch = os.getenv("GITHUB_HEAD_REF") or os.getenv("GITHUB_REF_NAME")
# GITHUB_PR_SHA is the head commit SHA for PRs.
# GITHUB_SHA can be used as a fallback for non-PR events.
commit = os.getenv("GITHUB_PR_SHA") or os.getenv("GITHUB_SHA")
if not all([project_id, suite_id, branch, commit]):
print("Error: Missing required environment variables (LOOKER_PROJECT_ID, LOOKER_SUITE_ID, or GitHub vars).")
sys.exit(1)
# Initialize the Looker SDK.
# The SDK automatically picks up LOOKERSDK_BASE_URL, LOOKERSDK_CLIENT_ID, and LOOKERSDK_CLIENT_SECRET.
print("Initializing Looker SDK...")
try:
sdk = looker_sdk.init40()
except Exception as e:
print(f"Failed to initialize Looker SDK: {e}")
sys.exit(1)
# Configure the request body
print(f"Starting Looker CI run for project '{project_id}', suite '{suite_id}'...")
print(f"Branch: {branch} | Commit: {commit}")
request_body = mdls.CreateContinuousIntegrationRunRequest(
suite_id=suite_id,
branch=branch,
commit=commit
)
# Trigger the CI run
try:
run = sdk.create_continuous_integration_run(
project_id=project_id,
body=request_body
)
run_id = getattr(run, "run_id", getattr(run, "id", None))
print(f"Looker CI run created successfully. Run ID: {run_id}")
except looker_sdk.error.SDKError as e:
print(f"Failed to create Looker CI run: {e}")
sys.exit(1)
# Poll for completion
run_status = run.status
terminal_statuses = ["cancelled", "error", "passed", "failed"]
while run_status not in terminal_statuses:
print(f"Run {run_id} status is '{run_status}'. Waiting 15 seconds...")
time.sleep(15)
try:
run = sdk.get_continuous_integration_run(
project_id=project_id,
run_id=run_id
)
run_status = run.status
except looker_sdk.error.SDKError as e:
print(f"Error while polling Looker CI run status: {e}")
sys.exit(1)
print(f"Final Looker CI run status: {run_status}")
if run_status != "passed":
print("Looker CI run did not pass. Failing the GitHub Action.")
sys.exit(1)
print("Looker CI run passed successfully!")
Configura el flujo de trabajo de acciones de GitHub
En tu repositorio, crea un archivo de flujo de trabajo en .github/workflows/looker-ci.yml con la siguiente configuración:
name: Looker CI
on:
pull_request:
branches:
- main
jobs:
run-looker-ci:
runs-on: ubuntu-latest
env:
# Automatically picked up by the Looker SDK
LOOKERSDK_BASE_URL: ${{ secrets.LOOKERSDK_BASE_URL }}
LOOKERSDK_CLIENT_ID: ${{ secrets.LOOKERSDK_CLIENT_ID }}
LOOKERSDK_CLIENT_SECRET: ${{ secrets.LOOKERSDK_CLIENT_SECRET }}
# Passed directly to the script
LOOKER_PROJECT_ID: "LOOKER_PROJECT_ID"
LOOKER_SUITE_ID: "LOOKER_SUITE_ID"
GITHUB_PR_SHA: ${{ github.event.pull_request.head.sha }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install looker-sdk
- name: Run Looker CI
run: python run_looker_ci.py
Reemplaza lo siguiente:
LOOKER_PROJECT_ID: Es el ID del proyecto de Looker que deseas probar.LOOKER_SUITE_ID: Es el ID del paquete de CI que deseas ejecutar.
Configuración de dbt Cloud
Si usas dbt Cloud, puedes configurar la integración continua para que ejecute automáticamente paquetes de CI cuando finalice un trabajo de CI de dbt Cloud. La ejecución del paquete de CI ayuda a garantizar que los cambios en tus modelos de dbt no interrumpan tu proyecto de LookML.
Para configurar la integración de dbt Cloud, sigue estos pasos en la sección Configuración de dbt Cloud:
- En el campo URL del host de dbt Cloud, ingresa la URL de tu cuenta de dbt Cloud.
- En el campo Clave de API de dbt Cloud, ingresa un token de cuenta de servicio de dbt Cloud.
- Haz clic en Test Connection. Looker verificará que pueda conectarse a tu cuenta de dbt Cloud y, luego, recuperará tu ID de cuenta de dbt Cloud.
- Haz clic en Guardar.
Atributos de usuario
Puedes configurar atributos de usuario que la integración continua puede anular durante las ejecuciones de validación. Los atributos de usuario se usan junto con la integración de dbt Cloud para dirigir Looker a esquemas temporales creados por trabajos de CI de dbt Cloud.
Para configurar los valores predeterminados de los atributos de usuario para la CI, sigue estos pasos en la sección Atributos de usuario:
- En el campo Atributo de usuario, selecciona un atributo de usuario de la lista desplegable. Si no se selecciona ningún atributo de usuario, Looker usará el atributo de usuario que se define en el campo Conjunto de datos principal en tu conexión de base de datos para las ejecuciones de CI.
- En el campo Valor para la ejecución de CI, ingresa el valor que se debe usar con este atributo de usuario para las ejecuciones de CI.
- Haz clic en Guardar.
Puedes agregar varios pares de atributos y valores de usuario. Cada atributo de usuario configurado en la sección Atributos de usuario estará disponible para su selección como anulación en las configuraciones de tu paquete de CI.
Para borrar un par de atributos y valores de usuario, haz clic en Quitar.