Semaphore v2.17 introduce nuevas funciones y mejoras para la automatización de infraestructura y los equipos DevOps. Esta versión se centra en mejorar la experiencia del desarrollador y en simplificar los flujos de trabajo de infraestructura como código.

Resumen de características clave

Funcionalidades

Nombre de emisor personalizado en la app TOTP

Semaphore v2.17 introduce una nueva opción para personalizar el nombre del emisor que se muestra en las apps autenticadoras TOTP (Time-based One-Time Password).

Propósito:
El nombre del emisor ayuda a los usuarios a identificar qué cuenta en su app autenticadora pertenece a Semaphore, especialmente útil cuando se gestionan cuentas de múltiples organizaciones o entornos.

Cómo configurarlo:

Puedes establecer el nombre del emisor de dos maneras:

  1. Variable de entorno

    Establece la variable de entorno SEMAPHORE_TOTP_ISSUER con el nombre de emisor deseado al iniciar Semaphore.

    Ejemplo (Docker Compose):

    environment:
      - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore
    

    Ejemplo (Standalone):

    SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server
    
  2. Archivo de configuración

    En tu archivo config.json, establece la siguiente opción dentro de la sección auth:

    {
      "auth": {
        "totp": {
          "issuer": "MyCompany Semaphore"
        }
      }
    }
    

Precedencia:
Si tanto la variable de entorno como la opción en el archivo de configuración están establecidas, la variable de entorno (SEMAPHORE_TOTP_ISSUER) tiene precedencia.

Valor predeterminado:
Si no se establece, el nombre de emisor predeterminado será Semaphore.

Resultado:
Cuando los usuarios agreguen su cuenta TOTP de Semaphore a una app autenticadora, aparecerá el nombre de emisor seleccionado, lo que facilitará distinguir entre varias cuentas.

Para obtener más detalles sobre todas las variables de entorno disponibles, consulta la documentación de variables de entorno de instalación.

Tareas programadas de una sola ejecución

Semaphore ahora soporta programaciones de una sola ejecución además de las programaciones cron. Utiliza esto cuando necesites que una tarea se ejecute en una fecha y hora específicas y solo una vez.

Casos de uso:

Vistas personalizables

Las vistas de plantilla ahora son más personalizables, lo que te permite adaptar lo que se muestra y cómo se organiza para que coincida mejor con tu flujo de trabajo.

  1. Ahora puedes mover la pestaña All a cualquier posición de la barra.

  2. Puedes ocultar por completo la pestaña All para los usuarios normales del proyecto.

  3. Puedes cambiar la ordenación predeterminada de plantillas para una vista específica.

Las mejoras habituales incluyen:

Detener todas las tareas

Ahora puedes detener todas las tareas en ejecución de una plantilla con una sola acción. Esto te ayuda a detener rápidamente un despliegue o cancelar trabajos que se iniciaron por accidente.

Soporte para servidor syslog

Semaphore ahora puede reenviar logs a un servidor syslog externo, lo que facilita centralizar la recolección de logs e integrarlo con canalizaciones de monitorización y alertas existentes.

config.json:

{
  "syslog": {
    "enabled": true,
    "network": "udp",
    "address": "localhost:514",
    "tag": "semaphore"
  }
}

Variables de entorno:

export SEMAPHORE_SYSLOG_ENABLED=True
export SEMAPHORE_SYSLOG_NETWORK=udp
export SEMAPHORE_SYSLOG_ADDRESS=localhost:514
export SEMAPHORE_SYSLOG_TAG=semaphore

Reversión de migraciones de base de datos

Las migraciones de base de datos ahora se pueden revertir. Esto hace más seguro recuperarse de un problema durante una actualización y puede simplificar las degradaciones cuando sea necesario.

semaphore migrate --undo-to 2.16

Arrastrar y soltar para variables de encuesta, argumentos CLI, etc.

Ahora puedes reordenar variables de encuesta, argumentos de la CLI y otros elementos de lista mediante arrastrar y soltar, lo que hace que las plantillas sean más fáciles de mantener y revisar.

Exportar e importar proyectos vía CLI

Semaphore ahora soporta la importación automática de proyectos.

El contenedor Docker acepta las variables de entorno SEMAPHORE_IMPORT_PROJECT_FILE y SEMAPHORE_IMPORT_PROJECT_NAME para esto.

Si necesitas importar un proyecto desde la CLI, puedes usar el siguiente comando:

semaphore project import --file /path/to/the/backup.json --project-name "Demo project"

Si no se proporciona el nombre del proyecto, se usará el nombre del proyecto en los metadados del respaldo.

Para importar todos los proyectos desde un directorio, usa el siguiente comando:

semaphore project import --dir /path/to/the/dir

Para exportar un proyecto, puedes usar el siguiente comando:

semaphore project export --project-name "Demo project" --file /path/to/the/backup.json

Si quieres exportar todos los proyectos a un directorio:

semaphore project export --dir /path/to/the/dir

Al combinar este comando con cron, puedes implementar respaldos automáticos de proyectos.

Herramienta CLI para migrar de BoltDB a SQLite/MySQL/Postgres

Un nuevo migrador CLI ayuda a mover datos de Semaphore de BoltDB a SQLite, MySQL o Postgres. BoltDB está siendo desaprobado y se eliminará en la v3.0.

semaphore migrate --from-boltdb /path/to/boltdb/file

Soporte de Devolutions Server (Enterprise)

Las instalaciones Enterprise ahora pueden integrarse con Devolutions Server como backend de secretos, similar a HashiCorp Vault.

Roles personalizados y RBAC ampliado (Enterprise)

La interfaz de Semaphore ahora admite roles personalizados a nivel de proyecto y globales, lo que permite un control de acceso granular para tareas y plantillas. El RBAC se ha ampliado con controles más detallados en los recursos de Semaphore, ayudando a los equipos a aplicar el principio de menor privilegio con mayor precisión.

Los usuarios Enterprise pueden definir roles personalizados con permisos a medida para ajustarse a los requisitos de acceso de la organización.

Los propietarios y administradores de proyecto pueden asignar estos roles a plantillas específicas y otorgarles permisos orientados a ejecutar, ver o administrar tareas.

Alta disponibilidad active-active (Enterprise)

En una configuración estándar de un solo nodo, un proceso de Semaphore lo hace todo: sirve la interfaz web, ejecuta trabajos programados, ejecuta tareas y envía actualizaciones en vivo a los navegadores. Si ese proceso cae, todo se detiene.

Con HA active-active, ejecutas varias instancias idénticas de Semaphore detrás de un balanceador de carga. Todas están completamente activas al mismo tiempo: no hay un “primario” ni un “en espera”. Cualquier nodo puede atender cualquier solicitud, ejecutar cualquier tarea o disparar cualquier programación. Se coordinan mediante una instancia de Redis compartida para evitar interferencias.

Todas las instancias se conectan a los mismos dos backends:

{
  "ha": {
    "enabled": true,
    "node_id": "node1",
    "redis": {
      "addr": "localhost:6379"
    }
  }
}

Mejoras en el registro (logging)

El registro se ha mejorado para proporcionar más contexto y claridad, ayudándote a depurar fallos y entender qué ocurrió durante una ejecución.

Clave de suscripción mediante variable de entorno (PRO)

Las claves de suscripción PRO ahora pueden proporcionarse mediante una variable de entorno, lo cual es útil para despliegues en contenedores y despliegues impulsados por CI/CD.