CLI
Optimiza tu CI/CD con la CLI de SleakOps
La CLI de SleakOps es un paquete de Python diseñado para simplificar tus flujos de trabajo de CI/CD. Con solo dos subcomandos sencillos, puedes crear compilaciones y desplegar tus aplicaciones con facilidad, garantizando un proceso de desarrollo fluido y eficiente. Para comenzar, simplemente instala SleakOps usando pip:
pip install sleakops
1. Autenticación
Para autenticarte con el SleakOps CLI, necesitas una API_KEY. Puedes obtener esta clave desde la consola haciendo clic en Generar API-Key. Cada empresa puede tener solo una API_KEY activa a la vez. Si solicitas una nueva API_KEY, la antigua será revocada automáticamente. En la página se muestran las claves de la empresa y quién las generó.
Una vez que tengas tu API_KEY, puedes usarla como argumento al ejecutar comandos de SleakOps o configurarla como una variable de entorno llamada SLEAKOPS_KEY.
Para pipelines de CI/CD, se recomienda configurar SLEAKOPS_KEY como una variable de entorno secreta en tu proveedor de Git:
- GitHub: Agrégala como un secreto de repositorio en Settings → Secrets and variables → Actions
- GitLab: Agrégala como una variable de CI/CD en Settings → CI/CD → Variables
- Bitbucket: Agrégala como una variable de repositorio en Repository settings → Pipelines → Repository variables
Esto asegura el acceso seguro a los servicios de SleakOps sin exponer tu clave API en los archivos de configuración de tu pipeline.
2. Crear un Build
Para crear una compilación de tu aplicación, usa el siguiente comando:
sleakops build [options]
Este comando inicia el proceso de compilación, y SleakOps se encarga de compilar tu código, ejecutar pruebas y empaquetar la aplicación para su despliegue. Puedes especificar opciones adicionales para adaptar el proceso de compilación a tus necesidades específicas.
Hay dos argumentos obligatorios: project y branch, que se utilizan para saber qué compilar. Además, puedes añadir un commit para compilar un commit anterior, una tag para la imagen y el proveedor si necesitas especificarlo.
Como se mencionó anteriormente, la clave puede ser un entrada aquí o una variable de entorno.
También puedes indicar si quieres que el proceso espere a que la compilación termine o no.
También puedes definir DockerArgs cuando uses la CLI de SleakOps para builds. Usa el parámetro --docker-args para pasar argumentos de construcción directamente desde la línea de comandos:
sleakops build -p myproject -b main --docker-args "ARG1=value1,ARG2=value2"
Esto es particularmente útil para pipelines de CI/CD donde quieres pasar diferentes argumentos basados en el entorno o contexto de construcción.
Puedes definir un timeout (en minutos) para un build. Este es el tiempo de vida máximo del build en el backend: si el build tarda más, SleakOps lo detiene y lo marca como fallido, de modo que un build colgado no se queda corriendo para siempre. El valor por defecto es 180 minutos, y todo build queda acotado aunque no lo pases. Cuando además usas wait, --timeout también limita cuánto observa la CLI al build. El valor por defecto de la CLI se puede configurar mediante la variable de entorno BUILD_TIMEOUT_MINUTES.
| Opción | Descripción |
|---|---|
| --wait | Espera a que la compilación termine antes de retornar. |
| --timeout | Tiempo de vida máximo del build en minutos; también limita cuánto observa la CLI con --wait. Por defecto 180. 0 mantiene el valor por defecto de la plataforma y deja que --wait observe indefinidamente. |
--timeout funciona en dos niveles: el backend detiene el build cuando supera el límite (esto ocurre para todo build, incluso sin --wait), y — cuando pasás --wait — la CLI también deja de observar pasado ese tiempo y sale con código 1, de modo que un build colgado hace fallar tu pipeline de CI en vez de quedarse colgado.
3. Realizar un Despliegue
Una vez que tu compilación esté lista, puedes desplegar tu aplicación fácilmente usando el siguiente comando:
sleakops deploy [options]
SleakOps gestiona de manera transparente el proceso de despliegue, asegurando que tu aplicación esté en funcionamiento en poco tiempo. Puedes especificar opciones de despliegue para ajustar el proceso según tus requisitos.
Aquí, project y environment son los argumentos obligatorios. El usuario puede añadir una build o tag de imagen para especificar una imagen. Aquí también están presentes las opciones de wait y key, su uso es el mismo que en el comando de compilación.
Inyectar values en el deploy
Puedes inyectar values de Helm en un deployment puntual, por encima de todo lo configurado en la plataforma (ver Values para los niveles de override):
sleakops deploy -p myapp -e prod -f values.prod.yaml
sleakops deploy -p myapp -e prod --set api_web.replicas=3
cat values.yaml | sleakops deploy -p myapp -e prod -f -
| Opción | Descripción |
|---|---|
| -f, --values | Archivo YAML con values para este deploy (repetible; - lee stdin; el último archivo gana). |
| --set | Define un valor puntual, clave.ruta=valor (repetible; gana sobre -f). Aplica coerción YAML: 5 → int, true → bool. |
| --set-string | Como --set pero el valor se mantiene siempre como string (sin coerción). |
Los values por deploy aplican a ese deployment solamente — ganan sobre todos los values configurados en la plataforma, y el próximo deploy sin -f/--set/--set-string vuelve a los valores de la plataforma. Son la herramienta para ajustes puntuales, no para configuración durable: los cambios durables van a nivel Project o Workload.
Dos consideraciones:
- Para secretos prefiere
-f(o stdin): los argumentos de--sety--set-stringquedan en el historial de tu shell y en los logs del CI. - Dos semánticas de listas distintas: entre tus propios inputs (archivos
-fy flags--set) una lista reemplaza a la anterior, exactamente como Helm. Pero cuando tus values del deploy se mergean contra los niveles de la plataforma, las listas se combinan en lugar de reemplazarse — una entrada que pasás se suma a las generadas, no las descarta.
Ejemplos de CI/CD
Con la CLI de SleakOps, puedes integrar tus tuberías de CI/CD, automatizar el proceso de compilación y despliegue, y concentrarte en entregar aplicaciones excepcionales sin la molestia de intervención manual. Disfruta de una experiencia de desarrollo fluida con SleakOps y crea flujos de trabajo de CI/CD personalizados.
- GitHub
- GitLab
- BitBucket
name: Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install SleakOps CLI
run: pip install sleakops
- name: Run SleakOps build
env:
SLEAKOPS_KEY: ${{ secrets.SLEAKOPS_KEY }}
run: sleakops build -p core -b main -w
deploy:
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install SleakOps CLI
run: pip install sleakops
- name: Run SleakOps deploy
env:
SLEAKOPS_KEY: ${{ secrets.SLEAKOPS_KEY }}
run: sleakops deploy -p core -e main -w
image: python:3.9
stages:
- build
- deploy
build:
stage: build
script:
- apt-get update -qy
- apt-get install -y python3-pip
- pip3 install sleakops
- sleakops build -p core -b main -w
rules:
- if: '$CI_COMMIT_BRANCH == main'
deploy:
stage: deploy
needs:
- build
script:
- apt-get update -qy
- apt-get install -y python3-pip
- pip3 install sleakops
- sleakops deploy -p core -e prod -w
rules:
- if: '$CI_COMMIT_BRANCH == main'
image: python:3.9
pipelines:
branches:
main:
- step:
name: Deploy
script:
- apt-get update -qy
- apt-get install -y python3-pip
- pip3 install sleakops
- sleakops build -p core -b main -w
- sleakops deploy -p core -e main -w
FAQs
¿SleakOps usa webhooks para CI/CD?
No. SleakOps no utiliza webhooks para activar pipelines de CI/CD. En su lugar, el proceso de CI/CD se ejecuta a través de comandos de SleakOps CLI corriendo en los runners de tu pipeline: GitHub Actions, GitLab Runners o Bitbucket Pipelines.
¿Qué debo hacer si la CLI devuelve "Multiple projects found with the same name and branch"?
Este mensaje aparece cuando tenés varios proyectos con el mismo nombre en distintos entornos. Para resolverlo, especificá el entorno usando el parámetro -e o --environment en tus comandos de build o deploy. Si necesitás más información sobre las opciones de este comando, ejecutá sleakops sub-command --help.
El nombre del entorno debe coincidir exactamente con el entorno configurado en SleakOps. Podés encontrar el valor correcto del entorno en los ejemplos de pipelines ubicados en Proyecto → Configuración → Git Pipelines.