Saltar a contenido

Utilidades de Pipeline CI/CD de BotCity

La plataforma BotCity tiene soporte nativo para GitHub Actions a través de BotCity Actions - Bots.

Para las demás plataformas de CI/CD, puede usar los scripts Bash descritos en esta página.

Script de Gestión de Bots

bot.sh es un script Bash que ejecuta las tareas más comunes de gestión de bots (deploy, update y release) a través de la API de BotCity Orquestador.

Con él, usted gestiona sus bots directamente desde el pipeline CI/CD, usando una interfaz de línea de comandos.

Funcionalidades

  • Deploy: sube e implementa una nueva versión de un bot.
  • Update: actualiza la versión de un bot existente.
  • Release: libera una versión de un bot en BotCity Orquestador.

Requisitos

  • cURL: se usa para enviar las solicitudes HTTP.
  • Variables de entorno: defina las siguientes variables para la autenticación:
    • SERVER: URL del servidor de la API de BotCity Orquestador.
    • LOGIN: su login de la API de BotCity Orquestador.
    • KEY: su clave de la API de BotCity Orquestador.

Dónde encontrar el login y la clave de la API

Su login y su clave de la API del Orquestador están en el menú Ambiente de Desarrollo. Más información en Ambiente de Desarrollo.

Configurar los Secrets del Repositorio

Antes de ejecutar bot.sh en el pipeline, configure SERVER, LOGIN y KEY como secrets o variables protegidas en su repositorio.

No exponga credenciales en el pipeline

Nunca inserte credenciales directamente en el código fuente del pipeline. Use siempre el mecanismo de secrets de su plataforma.

GitHub Actions

  1. Acceda a Settings > Secrets and variables > Actions en el repositorio.
  2. Haga clic en New repository secret y registre los tres valores:

    Secret Descripción
    SERVER URL de la API de BotCity Orquestador
    LOGIN Su login de la API
    KEY Su clave de la API
  3. En el workflow, exponga los secrets como variables de entorno en el step que ejecuta el script:

- name: Deploy bot
  env:
    SERVER: ${{ secrets.SERVER }}
    LOGIN: ${{ secrets.LOGIN }}
    KEY: ${{ secrets.KEY }}
  run: ./bot.sh deploy -version "1.0.0" -botFile "bot.zip" -botId "MyBotId" -type "python"

Más información en Using secrets in GitHub Actions.

GitLab CI

  1. Acceda a Settings > CI/CD > Variables en el proyecto.
  2. Agregue SERVER, LOGIN y KEY. Marque la opción Masked en cada una para que los valores no aparezcan en los logs.
  3. Las variables quedan disponibles automáticamente en todos los jobs del pipeline:
deploy-bot:
  script:
    - ./bot.sh deploy -version "1.0.0" -botFile "bot.zip" -botId "MyBotId" -type "python"

Más información en GitLab CI/CD variables.

Azure Pipelines

  1. Acceda a Pipelines > Library y cree un Variable Group con los tres valores. Haga clic en el ícono de candado de cada variable para marcarla como secret.
  2. Vincule el variable group al pipeline y haga referencia a las variables en el step:
variables:
  - group: botcity-credentials

steps:
  - script: ./bot.sh deploy -version "1.0.0" -botFile "bot.zip" -botId "MyBotId" -type "python"
    env:
      SERVER: $(SERVER)
      LOGIN: $(LOGIN)
      KEY: $(KEY)
    displayName: "Deploy bot"

Más información en Variable groups en Azure Pipelines.

Woodpecker CI

  1. Acceda a Settings > Secrets del repositorio y agregue SERVER, LOGIN y KEY.
  2. Haga referencia a los secrets en el step del pipeline:
steps:
  deploy:
    image: alpine
    commands:
      - ./bot.sh deploy -version "1.0.0" -botFile "bot.zip" -botId "MyBotId" -type "python"
    secrets:
      - source: SERVER
        target: SERVER
      - source: LOGIN
        target: LOGIN
      - source: KEY
        target: KEY

Más información en Secrets en Woodpecker CI.

Bitbucket Pipelines

  1. Acceda a Repository settings > Repository variables y agregue SERVER, LOGIN y KEY. Marque la opción Secured en cada una para ocultar los valores en los logs.
  2. Las variables quedan disponibles automáticamente en todos los steps:
pipelines:
  default:
    - step:
        script:
          - ./bot.sh deploy -version "1.0.0" -botFile "bot.zip" -botId "MyBotId" -type "python"

Más información en Variables and secrets en Bitbucket Pipelines.

Jenkins

  1. Acceda a Manage Jenkins > Credentials y agregue las tres credenciales como Secret text. Anote el ID de cada una.
  2. En el Jenkinsfile, exponga las credenciales con withCredentials:
withCredentials([
  string(credentialsId: 'botcity-server', variable: 'SERVER'),
  string(credentialsId: 'botcity-login', variable: 'LOGIN'),
  string(credentialsId: 'botcity-key', variable: 'KEY')
]) {
  sh './bot.sh deploy -version "1.0.0" -botFile "bot.zip" -botId "MyBotId" -type "python"'
}

Más información en Using credentials en Jenkins.

Usar el Script

El script tiene tres subcomandos: deploy, update y release.

Hacer el Deploy de un Bot

Use el subcomando deploy para subir e implementar el bot en BotCity Orquestador.

Parámetros:

  • -version: versión del bot.
  • -botFile: ruta del archivo del bot.
  • -botId: identificador único del bot.
  • -type: tecnología del bot (por ejemplo, python o java).
  • -repository (opcional): etiqueta del repositorio. Si no se informa, el valor por defecto es DEFAULT.
./bot.sh deploy -version "1.0.0" -botFile "/ruta/al/bot.zip" -botId "MyBotId" -type "python" -repository "DEFAULT"

Actualizar un Bot

Use el subcomando update para actualizar la versión de un bot en BotCity Orquestador.

Parámetros:

  • -version: versión del bot.
  • -botFile: ruta del archivo del bot.
  • -botId: identificador único del bot.
./bot.sh update -version "1.0.0" -botFile "/ruta/al/bot.zip" -botId "MyBotId"

Hacer el Release de un Bot

Use el subcomando release para liberar una versión del bot. Este subcomando solo necesita el ID del bot y la versión.

Parámetros:

  • -version: versión del bot.
  • -botId: identificador único del bot.
./bot.sh release -version "1.0.0" -botId "MyBotId"

Ejemplos de Comandos

Ejemplo de Deploy

./bot.sh deploy -version "1.2.0" -botFile "/home/usuario/bot.zip" -botId "MiBotGenial" -type "python" -repository "ProductionRepo"

Ejemplo de Actualización

./bot.sh update -version "1.2.0" -botFile "/home/usuario/bot_update.zip" -botId "MiBotGenial"

Ejemplo de Release

./bot.sh release -version "1.2.0" -botId "MiBotGenial"

Manejo de Errores

  • Parámetros obligatorios ausentes: el script muestra un mensaje de uso y se cierra.
  • Falla en la solicitud a la API (código de estado diferente de 200): el script muestra un mensaje de error con los detalles.

Contribuir con el Proyecto

Para enviar issues, abrir pull requests o consultar la licencia, acceda al repositorio cicd-pipeline-utils en GitHub.