En esta página se explica cómo instalar y configurar los componentes necesarios para implementar un flujo de trabajo de CI/CD en Looker.
En estas instrucciones se utiliza un sistema de tres niveles que incluye desarrollo, control de calidad y producción. Sin embargo, los mismos principios se pueden aplicar a un sistema de dos o cuatro niveles.
En estas instrucciones también se presupone que usas GitHub como proveedor de Git. Puedes usar otros proveedores de Git para crear un flujo de trabajo de CI/CD. Sin embargo, debes tener los conocimientos necesarios para modificar estas instrucciones según tu proveedor.
Sigue las instrucciones de la sección que te corresponda:
- Requisitos previos
- Pasos de configuración que solo se realizan la primera vez
- Pasos de configuración para cada desarrollador de Looker
Requisitos previos
Entorno Linux
Este proceso utiliza herramientas llamadas Gazer y Spectacles, que están diseñadas para funcionar con sistemas operativos similares a Unix. Cada desarrollador de LookML debe tener acceso a la línea de comandos en un entorno Linux o macOS en el que tenga previsto ejecutar su flujo de trabajo de CI/CD.
Si usas Windows, puedes usar Gazer y Spectacles en el subsistema Windows para Linux (WSL) de Microsoft. WSL te permite ejecutar una gran variedad de distribuciones de Linux. Si no tienes un sistema operativo Linux preferido, la última versión de Ubuntu Linux es una buena opción debido a su amplia compatibilidad.
Estas instrucciones proporcionan ejemplos para sistemas Linux y pueden requerir modificaciones si usas macOS o WSL.
Una instancia de Looker por nivel
Para habilitar esta configuración, necesitará una instancia de Looker para cada nivel de su sistema. Por ejemplo, un sistema con una fase de desarrollo, una fase de control de calidad y una fase de producción necesitará tres instancias independientes. Las instancias pueden estar alojadas en Google o por el cliente.
Nombres de conexión idénticos
Las conexiones de base de datos deben tener el mismo nombre en cada instancia de Looker, independientemente del nivel que representen. Por ejemplo, una conexión sales
debe tener ese nombre en todas las instancias, en lugar de sales_dev
o sales_qa
.
Las conexiones pueden apuntar a la misma base de datos o a bases de datos diferentes. Sin embargo, si apuntan a la misma base de datos, deben tener definidos esquemas de borrador diferentes para que las tablas derivadas persistentes de la instancia de desarrollo o de control de calidad no interfieran con la producción.
Por ejemplo, si se usa la misma base de datos para las tres instancias, se pueden configurar de la siguiente manera:
Producción | QA | Desarrollo | |
Nombre de la conexión | sales |
sales |
sales |
Base de datos | sales_db |
sales_db |
sales_db |
Esquema de Scratch | prod_sales_scratch |
qa_sales_scratch |
dev_sales_scratch |
Si se usa una base de datos única para las tres instancias, se pueden configurar de la siguiente manera:
Producción | QA | Desarrollo | |
Nombre de la conexión | sales |
sales |
sales |
Base de datos | sales_db_prod |
sales_db_qa |
sales_db_dev |
Esquema de Scratch | sales_scratch |
sales_scratch |
sales_scratch |
Repositorio de Git
Se usará un único repositorio de Git para cada proyecto en los tres niveles. La instancia de desarrollo monitorizará la rama main
, mientras que las instancias de control de calidad y producción suelen apuntar a etiquetas de Git (que se describen con más detalle más adelante).
Pasos de configuración inicial
Los pasos de esta sección solo los debe completar una vez un usuario con permisos de administrador de Looker y permisos de administrador en su proveedor de Git.
Credenciales de Git
El entorno Linux de cada desarrollador debe conectarse al mismo repositorio que usas para gestionar tu LookML. Es probable que se trate de un repositorio externo alojado en un servicio como GitHub. Necesitarás una cuenta de ese servicio con las credenciales adecuadas para configurar el repositorio. Con la cuenta, puedes configurar una clave SSH para que tu entorno Linux se conecte automáticamente a ese servicio.
En el caso de GitHub, sigue las instrucciones que se indican en Adding a new SSH key to your GitHub account (Añadir una nueva clave SSH a tu cuenta de GitHub).
Crear y configurar un repositorio de servidor Git
Para que el flujo de trabajo de CI/CD funcione, LookML debe almacenarse en un repositorio de Git y conectarse a un proyecto de Looker. En la configuración del proyecto, Git Production Branch Name debe tener el valor main
y Enable Advanced Deploy Mode debe estar habilitado.
Si aún no has completado los siguientes pasos, sigue estas instrucciones para GitHub:
Crear repositorio
- En la interfaz de usuario de GitHub, pulsa el botón + de la esquina superior derecha y, a continuación, selecciona New repository (Nuevo repositorio).
- Selecciona el propietario (probablemente tu organización) e introduce un REPOSITORY_NAME.
- Elige si quieres que el repositorio sea público o privado (los repositorios privados requieren una suscripción de pago a GitHub) y marca la casilla para inicializarlo con un archivo README.
- Pulsa el botón Crear repositorio.
- Pulsa el botón verde <> Code (Código) y copia la URL SSH. Tendrá un aspecto similar a este:
git@github.com:org_name/REPOSITORY_NAME.git
. - En Looker, crea un proyecto.
- Activa el modo de desarrollo y elige la opción de configuración del proyecto en la barra lateral de la izquierda. A continuación, selecciona Configurar Git.
- Pega la URL del repositorio (
git@github.com:org_name/REPOSITORY_NAME.git
en este ejemplo) y selecciona Continuar. - Copia la clave de implementación y vuelve a la interfaz de usuario de GitHub de este repositorio.
- Elige Ajustes y, a continuación, Acciones - General.
- En Permisos de flujo de trabajo, comprueba que la opción Permitir que GitHub Actions cree y apruebe solicitudes pull esté marcada y haz clic en Guardar.
- Ve a la página Claves de implementación de la configuración de GitHub.
- Haz clic en el botón Añadir clave de implementación y pega la clave de implementación en el campo Clave.
- Añade un título, como
Looker-REPOSITORY_NAME
, marca la casilla Permitir acceso de escritura y pulsa el botón Añadir clave. - Vuelve a Looker y selecciona Probar y finalizar configuración.
- Vuelve a elegir la configuración del proyecto en la barra lateral de la izquierda. Cambia el nombre de la rama de producción de Git a
main
. - Elige Habilitar el modo de implementación avanzado y selecciona Guardar configuración del proyecto.
Debajo del icono de configuración del proyecto, en la parte izquierda, debería aparecer un icono de implementación de Deployment Manager.
Usar repositorio actual
- Ve al repositorio de GitHub que almacena tu LookML.
- Elige Ajustes y, a continuación, Acciones - General.
- En Permisos de flujo de trabajo, comprueba que la opción Permitir que GitHub Actions cree y apruebe solicitudes pull esté marcada y haz clic en Guardar.
- Ve a la sección <> Code (Código) del repositorio de GitHub.
- Pulsa el botón verde <> Code (Código) y copia la URL SSH. Tendrá un aspecto similar a este:
git@github.com:org_name/REPOSITORY_NAME.git
. - En Looker, crea un proyecto.
- Activa el modo de desarrollo y elige la opción de configuración del proyecto en la barra lateral de la izquierda. A continuación, selecciona Configurar Git.
- Pega la URL del repositorio (
git@github.com:org_name/REPOSITORY_NAME.git
en este ejemplo) y selecciona Continuar. - Copia la clave de implementación y vuelve a la interfaz de usuario de GitHub de este repositorio.
- Elige Configuración y, a continuación, Desplegar claves.
- Haz clic en el botón Añadir clave de implementación y pega la clave de implementación en el campo Clave.
- Añade un título, como
Looker-REPOSITORY_NAME
, marca la casilla Permitir acceso de escritura y pulsa el botón Añadir clave. - Vuelve a Looker y selecciona Probar y finalizar configuración.
- Vuelve a elegir la configuración del proyecto en la barra lateral de la izquierda. Cambia el nombre de la rama de producción de Git a
main
. - Elige Habilitar el modo de implementación avanzado y selecciona Guardar configuración del proyecto.
Debajo del icono de configuración del proyecto, en la parte izquierda, debería aparecer un icono de implementación de Deployment Manager.
Crear acciones de GitHub
Es útil crear varias acciones de GitHub para que se realicen varias comprobaciones automáticamente cada vez que se hagan cambios en LookML. Para añadir estas acciones, debes poder hacer cambios en tu repositorio Git en tu entorno Linux. Si aún no está disponible, sigue las instrucciones para configurar Git.
Para añadir las acciones de GitHub, ve al directorio de tu repositorio en el entorno Linux y añade el subdirectorio .github/workflows
. Una vez configuradas, estas acciones se pueden ejecutar manualmente desde la página Acciones de la interfaz de usuario de GitHub.
Look-At-Me-Sideways (LAMS)
LAMS es un linter de código abierto que inspecciona tu LookML en busca de errores y malas prácticas. Añade un archivo llamado lams.yml
al directorio .github/workflows
con este contenido:
name: LAMS
on:
pull_request:
branches: [ main ]
push:
workflow_dispatch:
jobs:
lams_job:
runs-on: ubuntu-latest
name: LAMS LookML Linter Job
steps:
- name: Checkout your LookML
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '16.x'
- name: Install LAMS
run: npm install -g @looker/look-at-me-sideways@3
- name: Run LAMS
run: lams --reporting=no
LAMS se ejecutará cada vez que se envíe una confirmación a GitHub o se abra una solicitud de extracción para combinar código con la rama main
.
Release Please
Release Please es una herramienta de código abierto que etiqueta automáticamente las versiones con los números de versión adecuados.
Añade un archivo llamado release-please.yml
al directorio .github/workflows
con este contenido:
name: release-please
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: google-github-actions/release-please-action@v3
with:
release-type: simple
Commits convencionales
Esta acción de GitHub verificará que una solicitud de extracción se abra con un título que cumpla el estándar de commit convencional.
Añade un archivo llamado lint_pr_title.yml
al directorio .github/workflows
con este contenido:
name: "Lint Pull Request Title"
on:
pull_request_target:
types:
- opened
- edited
- synchronize
jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
pull-requests:
read statuses: write
Aplicar los cambios en GitHub
Por último, usa los siguientes comandos para confirmar estos cambios en la acción de GitHub y enviarlos a GitHub:
git add .github/workflows/
git commit -m "chore: Added github actions"
git push
Protección de la rama main
En la interfaz de usuario de GitHub, debes habilitar la protección de la rama main
para que los desarrolladores normales no puedan enviar cambios directamente a esa rama. En su lugar, hacen cambios en otra rama y, después, abren una solicitud de extracción. Otro desarrollador puede revisar la solicitud de extracción antes de aprobarla y combinarla con main
.
Para configurar la protección de ramas, ve a la interfaz de usuario de GitHub del repositorio, elige Settings (Configuración) y, a continuación, Branches (Ramas). Después, pulsa el botón Add branch protection rule (Añadir regla de protección de ramas):
Introduce main
como Patrón de nombre de rama y marca las siguientes opciones:
- Requerir una solicitud de extracción antes de combinar
- Requerir aprobaciones
- Rechazar las aprobaciones de solicitudes de extracción obsoletas cuando se envíen nuevos commits
Por último, pulsa el botón Crear situado en la parte inferior de la página.
Cuando se cree una solicitud de extracción, se ejecutarán las acciones de GitHub configuradas anteriormente en estas instrucciones. Después de ejecutarse por primera vez, también se pueden seleccionar en esta interfaz de usuario para que se completen correctamente antes de que se pueda combinar la solicitud de extracción en main
.
Configurar solicitudes de extracción
En Looker, puedes requerir que se usen solicitudes de extracción y hacer que Looker abra solicitudes de extracción en nombre del desarrollador. Esta opción solo debe configurarse en la instancia de desarrollo. Las instancias de control de calidad y de producción usarán el modo de implementación avanzada para recibir sus actualizaciones.
Para habilitar esta opción, ve a la página Configuración del proyecto de cada proyecto y, a continuación, selecciona Solicitudes de extracción obligatorias en el encabezado Integración de GitHub.
Pulsa el botón para definir un secreto de webhook, copia la cadena aleatoria que se genera y pulsa el botón Guardar configuración del proyecto.
En la interfaz de usuario de GitHub de tu repositorio, elige Settings (Configuración) y, a continuación, Webhooks. En la parte superior derecha, pulsa el botón Añadir webhook:
- En el campo URL de carga útil, introduce
https://LOOKER_HOST_NAME/webhooks/projects/PROJECT_NAME/deploy
. - En el campo Secreto, pega el secreto que has guardado de Looker.
- En la pregunta ¿Qué eventos quieres que activen este webhook?, elige Quiero seleccionar eventos concretos.
Comprueba que estén seleccionadas las opciones Pull Requests (Solicitudes de extracción) y Pushes (Pushes):
Por último, pulsa el botón Añadir webhook situado en la parte inferior de la página.
Pasos de configuración para cada desarrollador de Looker
Todos los pasos de instalación que se indican a continuación deben realizarse en tu entorno Linux.
Instalar Ruby
Para ejecutar Gazer, debes instalar el lenguaje de programación Ruby. Cualquier versión de Ruby posterior a la 2.7.7 funcionará con Gazer, pero se recomienda usar Ruby 3.x.x. Para instalar Ruby en Ubuntu Linux, ejecuta estos comandos:
sudo apt update
sudo apt install ruby
Confirma que Ruby se ha instalado correctamente ejecutando ruby -v
. Deberías obtener una respuesta similar a la siguiente:
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]
Estos comandos también funcionarán en Debian Linux, Linux Mint y otras versiones de Linux que usen el gestor de paquetes Aptitude. Es posible que tengas que buscar comandos que funcionen en otras versiones de Linux o comandos para instalar en macOS. Consulta Instalar Ruby para obtener más información.
Instalar Gazer
Gazer es un proyecto de código abierto creado por empleados de Google para desplazarse por los espacios, los looks y los paneles de control, así como gestionarlos, mediante una herramienta de línea de comandos.
Una vez instalado Ruby, puedes usar la herramienta Gem de Ruby para instalar Gazer:
gem install gazer
Confirma que Gazer está instalado con el comando gzr version
. Deberías obtener una respuesta similar a la siguiente:
v0.3.12
Instalar las gafas
Spectacles es una herramienta de código abierto que se usa para probar LookML (su versión de pago ya no está disponible). Puedes consultar los detalles para instalarlo en su página de introducción.
Instalar Git
El software de control de versiones de Git se puede instalar en Ubuntu Linux con este comando:
sudo apt update
sudo apt install git
Confirma que la instalación se ha realizado correctamente con el comando git --version
. Deberías obtener una respuesta similar a la siguiente:
git version 2.42.0.609.gbb76f46606
Estos comandos también funcionarán en Debian Linux, Linux Mint y otras versiones de Linux que usen el gestor de paquetes Aptitude. Es posible que tengas que buscar comandos que funcionen en otras versiones de Linux. Por ejemplo, las instrucciones para Fedora y macOS se pueden encontrar en Getting Started - Installing Git (Empezar - Instalar Git).
Configurar Git
Git en tu entorno Linux debe configurarse para interactuar con el repositorio de Git en el que se almacena tu LookML. Estas instrucciones se han escrito para repositorios de Git de LookML almacenados en GitHub.
Nombre y correo electrónico
GitHub (y la mayoría de las demás implementaciones de Git) necesitan saber tu nombre y tu dirección de correo para poder registrar la actividad. Configura tu nombre y correo en Git ejecutando los siguientes comandos:
git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "EMAIL_ADDRESS"
Credenciales de Git
En la configuración inicial de CI/CD, se crearon credenciales de Git. La clave SSH privada que se ha generado debe configurarse en un archivo $HOME/.ssh/config
. Para crear el archivo, usa estos comandos:
touch $HOME/.ssh/config
chmod 600 $HOME/.ssh/config
Inserta el siguiente texto en el archivo $HOME/.ssh/config
:
Host github.com
User git
IdentityFile ~/.ssh/KEY_NAME
ControlMaster auto
ControlPath ~/.ssh/ctrl-%r@%h:%p
ControlPersist yes
En lugar de KEY_NAME, usa el nombre del archivo de clave privada que has generado siguiendo las instrucciones de Añadir una nueva clave SSH a tu cuenta de GitHub. El archivo de clave privada tiene el mismo nombre que el archivo de clave pública, pero sin la extensión .pub
. Por ejemplo, si has usado la clave pública que se encuentra en el archivo id_ed25519.pub
, la clave privada se llamará id_ed25519
.
Configurar un repositorio de Git local
Después de configurar el repositorio de LookML, debe hacer una copia en su entorno Linux. Para ello, ejecuta este comando:
git clone GIT_URL
Por ejemplo, el comando podría tener el siguiente aspecto:
git clone git@github.com:my_org_name/sales_project.git
De esta forma, el repositorio de LookML se copiará en un subdirectorio, por ejemplo, sales_project
. Usa el comando cd SUB_DIRECTORY
para ir al repositorio. En este ejemplo, el comando sería cd sales_project
.
Una vez que estés en el directorio de tu repositorio, puedes usar los siguientes comandos:
Comando | Finalidad |
---|---|
git checkout BRANCH_NAME |
Se usa para cambiar de rama. En la mayoría de los casos, la rama principal se llama main . Sin embargo, en sistemas más antiguos, puede llamarse master . |
git fetch |
Se usa para recuperar los últimos cambios del servidor. |
git pull |
Se usa para aplicar cambios a los archivos locales extraídos. git pull hace implícitamente un git fetch . |
git tag |
Se usa para crear una etiqueta significativa para una revisión concreta. |
git push |
Se usa para enviar los cambios locales al servidor. |
Configurar Gazer
Para usar Gazer, necesitarás credenciales de API para cada una de las instancias de desarrollo, control de calidad y producción. Para obtener instrucciones sobre cómo crear credenciales de API, consulta la página Configuración de administrador - Usuarios. Es posible que la persona que configuró el flujo de trabajo de CI/CD ya haya creado las credenciales de la API. En ese caso, puedes usar las credenciales que ya tengas. No será necesario generar nuevas credenciales para cada persona.
Guarda tus credenciales de API en un archivo .netrc
con permisos mínimos en tu directorio principal. Puede crear un archivo vacío con los permisos correctos mediante estos comandos:
touch $HOME/.netrc
chmod 600 $HOME/.netrc
Añade al archivo entradas como las siguientes, pero usa tus propios nombres de host del servidor de Looker para machine
, la API client_id
para el inicio de sesión y la API client_secret
para la contraseña. Por ejemplo:
machine dev.example.looker.com
login 80ka7nl6lj87ftmn
password u7kw3mj5h2trfz0
machine qa.example.looker.com
login fi3qtv5at5crvd1q
password bdxtaeghnzyz0wm
machine example.looker.com
login k7lr6yv57wvzy9p2
password wcvr5qjd2isbs2s
Para comprobar que funciona, ejecuta un comando de Gazer en cada servidor, como el siguiente:
gzr user me --host dev.example.looker.com
Debería obtener un resultado similar a este:
+----+---------------+---------+----------+------------------+--------------+
| id|email |last_name|first_name|personal_folder_id|home_folder_id|
+----+---------------+---------+----------+------------------+--------------+
|2345|jsm@example.com|Smith |John | 2161| 708|
+----+---------------+---------+----------+------------------+--------------+
Si el comando anterior no funciona, puede que tengas que añadir --port 443
al final del comando gzr
, como se indica a continuación:
gzr user me --host dev.example.looker.com --port 443
Configurar las gafas Spectacles
Spectacles usa las mismas APIs client_id
y client_secret
que Gazer. En el directorio de Spectacles, crea un archivo para cada nivel llamado config-TIER.yaml
(por ejemplo, config-dev.yaml
). Añade el siguiente contenido a los archivos según corresponda a la instancia de Looker de ese nivel, como se indica a continuación:
config-dev.yaml
base_url: https://dev.example.looker.com/
client_id: 80ka7nl6lj87ftmn
client_secret: u7kw3mj5h2trfz0
config-qa.yaml
base_url: https://qa.example.looker.com/
client_id: fi3qtv5at5crvd1q
client_secret: bdxtaeghnzyz0wm
config-prod.yaml
base_url: https://example.looker.com/
client_id: k7lr6yv57wvzy9p2
client_secret: wcvr5qjd2isbs2s
Para probar cada archivo, ejecuta el siguiente comando y sustituye cada nombre de archivo:
$ spectacles connect --config-file config-dev.yaml
Deberías recibir una respuesta similar a esta:
Connected to Looker version 23.18.60 using Looker API 4.0