Semaphore UI frente a GitLab CI/CD

Denis GukovFundador y CTO de Semaphore UI
20 min de lectura

GitLab CI/CD y Semaphore UI ejecutan automatización de infraestructura. GitLab conecta los jobs con la revisión del código, las pruebas y la entrega de aplicaciones. Semaphore UI organiza Ansible, Terraform/OpenTofu y los procedimientos de mantenimiento como operaciones compartidas con inventarios, credenciales, formularios y programaciones. Esta comparación abarca GitLab 19.5 y Semaphore UI 2.20.0.

Comenta este artículo con IA

Descripción general

El lanzamiento de una aplicación y una comprobación de certificados de todos los servidores pueden utilizar los mismos playbooks, pero necesitar rutinas de trabajo distintas. Un lanzamiento suele partir de un cambio de código, producir un artefacto y registrar sus pruebas. El mantenimiento puede comenzar cuando un operador elige un servicio, un entorno y una acción preparada. Ambos necesitan automatización fiable, pero las personas que inician el trabajo y la configuración que manejan no siempre son las mismas.

GitLab combina repositorios, merge requests y CI/CD en una plataforma de desarrollo más amplia. El YAML del pipeline define los jobs, GitLab Runners los ejecuta y los resultados permanecen vinculados al cambio de código propuesto. Los lanzamientos manuales y las programaciones también cubren trabajo independiente de un nuevo commit. GitLab.com, Self-Managed y Dedicated ofrecen distintas formas de obtener y operar la plataforma.

Semaphore UI se conecta a repositorios Git existentes y prepara la automatización mediante plantillas de tareas. Los inventarios Ansible, las credenciales y los grupos de variables son recursos compartidos del proyecto. Los formularios recogen valores de cada ejecución, las programaciones repiten tareas preparadas y los workflows unen operaciones entre herramientas compatibles. Los playbooks pueden permanecer en GitLab mientras el equipo utiliza Semaphore UI para desplegar, aprovisionar y realizar el mantenimiento posterior.

Plantillas de Semaphore UI para varias herramientas en un proyecto.
Semaphore UI. Operaciones preparadas de Ansible, infraestructura como código y línea de comandos comparten la lista de tareas del proyecto.
Detalles de un pipeline GitLab con jobs agrupados por etapa.
GitLab. Jobs agrupados en etapas del pipeline. Ejemplo de la documentación oficial. Fuente

Comparación rápida

Para la automatización habitual, ambos admiten lanzamientos manuales, programaciones y registros de ejecución. Las diferencias están en dónde se define la operación, cómo se reutilizan destinos y credenciales y cuánto se vinculan los resultados con la revisión del código y la entrega.

GitLab y Semaphore UI: características principales
Criterios Semaphore UI GitLab
Configuración de jobs Plantillas de tareas específicas para cada herramienta Jobs en .gitlab-ci.yml y componentes reutilizables
Herramientas de automatización Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell, Python Herramientas de línea de comandos en jobs de runners
Alojamiento Autogestionado, binario, paquetes, Docker o Kubernetes GitLab.com, Self-Managed o Dedicated
Ejecución En el servidor o en runners GitLab Runners con ejecutores shell, contenedor o Kubernetes
Inventario de Ansible Recursos de inventario reutilizables, archivos en Git y plugins de descubrimiento Ansible Archivos de inventario y plugins de descubrimiento configurados en el job
Entradas y variables Formularios, grupos de variables y variables de inventario Parámetros tipados, variables CI/CD y ámbitos de entorno
Flujos de trabajo Grafo visual que conecta plantillas específicas de cada herramienta Pipelines YAML, dependencias de jobs y componentes reutilizables
Credenciales Almacén de claves e integraciones con almacenes de secretos externos Variables CI/CD e integraciones con secretos externos
Control de acceso Roles de proyecto, roles personalizados y permisos de plantillas en Enterprise Roles de grupo y proyecto, ramas y entornos protegidos
Estado de Terraform Backend HTTP integrado en Pro o backend externo Backend HTTP de estado gestionado por GitLab, incluido Free
Licencia y planes Community con MIT, Pro y Enterprise Community Edition con MIT, funciones comerciales de Enterprise Edition

Semaphore UI ofrece un lugar para reutilizar un inventario, sus credenciales de conexión y las variables de varios playbooks. Una tarea puede presentarse como formulario, operación programada de mantenimiento o paso de un workflow de aprovisionamiento. GitLab ofrece su propia configuración reutilizable de pipelines y variables, más vinculada a merge requests, artefactos y entornos de despliegue. La diferencia es el modelo de configuración que rodea la automatización, no si el producto puede ejecutar un comando de mantenimiento.

Comparación de características

Considere toda la vida de un entorno: aprovisionarlo, configurar sus hosts, desplegar una versión y seguir manteniéndolo. El mismo código puede participar en varios pasos. Lo que cambia es cómo la plataforma reutiliza destinos y credenciales, recoge parámetros, ejecuta el trabajo y conecta el resultado con la siguiente acción.

Instalación y configuración

Un servicio compartido de automatización necesita un servidor, una base de datos y un proceso de actualización. Estos requisitos importan incluso si el trabajo es una copia de seguridad nocturna y no una build de aplicación.

CompatibleParcialmente compatibleNo compatible
Instalación y configuración: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Despliegue autogestionado Sí Sí
Paquetes nativos Linux Sí Sí
Servidor nativo Windows Sí NoEl servidor compatible se ejecuta en Linux
Implementación de Kubernetes SíChart de Helm SíChart de Helm u Operator

GitLab.com ofrece alojamiento Git, CI/CD y el resto de la plataforma como servicio gestionado. En GitLab Self-Managed, las instalaciones mediante paquetes Linux, Docker o Kubernetes incluyen varios servicios coordinados, como PostgreSQL, Redis y procesos de trabajo en segundo plano. Un equipo que ya opera GitLab puede usar esa instalación para automatizar sin añadir otro servicio web.

Semaphore UI puede ejecutarse como binario independiente, paquete nativo de Linux, contenedor Docker o despliegue Kubernetes, con su servicio de aplicación y base de datos. Los binarios nativos también cubren macOS, Windows y FreeBSD. Así, un equipo que solo necesita una interfaz de automatización dispone de una aplicación más pequeña que desplegar junto a su alojamiento Git.

Las plataformas del servidor y de los ejecutores se eligen por separado. GitLab Runner puede ejecutarse en Windows y macOS, aunque el servidor compatible de GitLab Self-Managed requiere Linux. La ejecución de Ansible necesita un entorno de control compatible, como Linux, WSL o un runner Linux, incluso cuando el servicio web de Semaphore UI está en Windows.

Herramientas de automatización e IaC

El aprovisionamiento, la configuración de hosts y el mantenimiento de servicios suelen utilizar herramientas diferentes. La diferencia está en cómo se prepara y reutiliza cada operación, no en si una shell puede ejecutar su comando.

CompatibleParcialmente compatibleNo compatible
Herramientas de automatización e IaC: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Playbooks de Ansible SíPlantilla de tareas SíComando de un job del pipeline
Terraform/OpenTofu SíPlantilla de tareas SíComando de un job del pipeline
Terragrunt SíPlantilla de tareas SíComando de un job del pipeline
Bash SíPlantilla de tareas SíComando de un job del pipeline
PowerShell SíPlantilla de tareas SíComando de un job del pipeline
Python SíPlantilla de tareas SíComando de un job del pipeline
Almacenamiento integrado de estado de Terraform SíProBackend HTTP SíBackend HTTP, incluido Free

Los jobs de GitLab ejecutan comandos definidos en YAML con herramientas instaladas en el runner o incluidas en una imagen de contenedor. Ansible, Terraform/OpenTofu y Terragrunt pueden participar en el mismo pipeline que pruebas y despliegues o en un pipeline independiente de mantenimiento. GitLab también documenta componentes OpenTofu y workflows de infraestructura para cambios revisados mediante merge requests.

Semaphore UI ofrece plantillas propias para Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell y Python. Los ingenieros seleccionan repositorio, ajustes, credenciales y variables compartidas en la interfaz, mientras el código permanece en Git. Una tarea de aprovisionamiento Terraform o una comprobación de disponibilidad en Python puede ejecutarse por separado, programada o en un workflow. Esto encaja con equipos que quieren mantener los ajustes compartidos en Semaphore UI y ofrecer operaciones preparadas desde la interfaz. El YAML del pipeline es útil cuando los cambios en la propia orquestación, incluida la secuencia y configuración de jobs, requieren revisión de código e historial de versiones.

Para el aprovisionamiento, Semaphore UI Pro añade un backend HTTP de estado con espacios de trabajo, historial de versiones y gestión desde la interfaz. El estado compartido de Terraform/OpenTofu puede permanecer junto a las operaciones IaC preparadas, sin otro servicio. El estado gestionado por GitLab está disponible en Free y también admite backend HTTP y bloqueo. Ambos productos permiten conservar backends externos. Los comandos predeterminados plan y apply de Semaphore UI desactivan el bloqueo salvo que se modifiquen, por lo que el soporte del backend no basta para activarlo en esas ejecuciones.

Introducir Semaphore UI no obliga a trasladar los repositorios. Un proyecto puede registrar varios repositorios Git con sus URL, ramas y credenciales y seleccionar el adecuado en cada plantilla. GitLab CI/CD también funciona con alojamientos Git externos: la integración de repositorios externos de Premium y Ultimate crea un proyecto espejo en GitLab. La configuración del pipeline puede estar en otra ruta, en otro proyecto o en una URL YAML externa, y un job puede clonar otro repositorio expresamente. Los pipelines siguen perteneciendo a un proyecto GitLab. Así, el proyecto de operaciones de Semaphore UI puede convivir con los alojamientos Git existentes, mientras GitLab sigue siendo una opción para pipelines de entrega y mantenimiento.

Operaciones guardadas y programaciones

Un reinicio de servicio, una renovación de certificado o una publicación de aplicación deben conservar su configuración. Así, los compañeros seleccionan la operación, proporcionan las entradas que cambian y la ejecutan manualmente o según una programación.

CompatibleParcialmente compatibleNo compatible
Operaciones guardadas y programaciones: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Definición de jobs sin YAML de CI/CD SíFormulario de plantilla de tareas NoRequiere YAML de pipeline
Formularios de parámetros de lanzamiento SíCampos obligatorios, enteros y opciones SíParámetros tipados, opciones y validación regex
Variables compartidas SíGrupos de variables SíVariables de grupo y proyecto
Ejecuciones programadas Sí Sí
Versiones de compilación y selección del despliegue SíPlantillas Build y Deploy vinculadas SíJobs del pipeline y referencias a artefactos o versiones
Conexiones guardadas a repositorios SíRepositorios de proyecto con nombre, reutilizados por las plantillas SíRepositorio del proyecto y configuración CI/CD

GitLab define los jobs en YAML. Su editor de pipelines valida y visualiza esa configuración, y Pipeline Wizard genera un archivo que se incorpora al repositorio. El formulario Task Template de Semaphore UI guarda una operación seleccionando herramienta, repositorio, inventario y grupos de variables, sin una definición YAML de CI/CD. La diferencia está en cómo mantienen los ingenieros el procedimiento guardado. Ambos productos pueden lanzar jobs existentes manualmente con parámetros o mediante una programación, sin un nuevo commit para cada ejecución.

Los parámetros de pipeline de GitLab se declaran en YAML con tipos, valores predeterminados, opciones permitidas y validación regex. Las variables CI/CD de grupo y proyecto proporcionan configuración reutilizable, incluidos ámbitos de entorno. Un compañero introduce los parámetros al iniciar el pipeline preparado, mientras la programación proporciona la configuración para ejecuciones desatendidas.

Semaphore UI mantiene la configuración reutilizable en la plantilla de tareas, el inventario elegido y los grupos de variables. Sus formularios ofrecen campos obligatorios, comprobaciones de enteros y opciones predefinidas. No incluyen las reglas regex configurables de GitLab. Por ejemplo, un ingeniero puede preparar una operación con opciones para servicio, estado deseado y entorno. El compañero rellena el formulario, inicia la tarea y consulta su estado y salida. El playbook implementa la acción y los recursos compartidos aportan repositorio, hosts y datos de conexión.

Semaphore UI también vincula plantillas Build y Deploy. Una build registra una versión, y un despliegue selecciona una versión de build correcta o se inicia automáticamente tras ella. La automatización publica y recupera el paquete o imagen del almacenamiento elegido por el equipo. GitLab representa ese lanzamiento mediante jobs, referencias a artefactos y entornos de despliegue, con evidencias integradas de pruebas y entrega.

La misma configuración permite trabajo desatendido. Una plantilla de comprobación de certificados puede ejecutarse cada noche sobre el inventario del entorno e indicar un fallo si el playbook encuentra un certificado próximo a caducar. Una expresión cron como 0 2 * * * programa la ejecución diaria a las 02:00 en la zona horaria configurada, UTC por defecto. Las programaciones únicas cubren ventanas de mantenimiento. GitLab también puede programar el mismo playbook mediante su programación de pipelines y los parámetros configurados.

Inventario

El mantenimiento de hosts depende de una definición reutilizable de los destinos y sus ajustes de conexión. Una ejecución de parches, una copia de seguridad y una comprobación de certificados pueden compartir esa definición.

CompatibleParcialmente compatibleNo compatible
Inventario: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Inventarios de Ansible reutilizables SíRecursos de inventario gestionados desde la interfaz SíArchivos de inventario y plugins en los jobs
Descubrimiento dinámico de hosts SíPlugins de inventario de Ansible SíEjecutar plugins de inventario de Ansible dentro del job
Selección de hosts al iniciar SíEntrada del parámetro limit de Ansible SíParámetro del pipeline pasado a Ansible limit

Semaphore UI convierte el inventario en un recurso de proyecto con nombre que las plantillas pueden compartir. Puede contener INI/YAML editable, referenciar un archivo en Git o utilizar los plugins de inventario dinámico de Ansible. El inventario seleccionado también guarda referencias a las credenciales de los hosts y, opcionalmente, de sudo. Así, cambiar la configuración de los destinos no obliga a editar todas las operaciones de mantenimiento.

GitLab puede utilizar los mismos archivos y plugins de descubrimiento de Ansible. El job obtiene el inventario de su repositorio u otra fuente configurada, instala el plugin necesario y pasa los parámetros seleccionados a Ansible. Ambos pueden descubrir hosts mediante API de la nube u otros sistemas compatibles con los plugins instalados. La diferencia de Semaphore UI es disponer de un objeto de inventario reutilizable y ajustes de conexión en la interfaz de operaciones.

Para recuperar un servidor concreto, un límite de Ansible permitido acota la ejecución sin crear otro inventario. Esto selecciona hosts dentro de una tarea, no divide automáticamente el conjunto de servidores en jobs independientes. Un inventario en Git sigue siendo útil en ambos productos cuando sus cambios requieren revisión.

Ejecución

La ejecución debe acceder a la red de destino con las dependencias correctas. La ubicación de los workers y el aislamiento por job son cuestiones distintas de la instalación del servidor web.

CompatibleParcialmente compatibleNo compatible
Ejecución: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Ejecución remota SíRunners SíGitLab Runners
Jobs en contenedores SíProEjecutor Docker SíEjecutor Docker
Pods de trabajos de Kubernetes SíEnterprise SíEjecutor Kubernetes
Selección de runners SíProEtiquetas de runners SíEtiquetas de runners
Ejecutores por proyecto SíProRunners asignados a proyectos SíRunners de proyecto

GitLab Runners ejecuta jobs mediante ejecutores shell, Docker o Kubernetes. Semaphore UI puede ejecutar en su servidor de aplicación o en un runner próximo a los sistemas gestionados. Ambos permiten colocar la ejecución dentro de una red privada y mantener la interfaz compartida en otra ubicación.

GitLab admite runners específicos de proyecto y enrutamiento por etiquetas. Semaphore UI Pro añade runners asignados a proyectos, enrutamiento por etiquetas y ejecución Docker por tarea. Enterprise añade ejecución Kubernetes. Estos ajustes permiten elegir recursos con la conectividad y dependencias necesarias. Instalar el servidor de aplicación en un contenedor sigue siendo una decisión distinta de usar un contenedor para cada job.

Flujos de trabajo

Aprovisionar un host, configurarlo y verificar su servicio combina varias operaciones guardadas. Los fallos y los puntos de aprobación determinan si debe ejecutarse el siguiente paso.

CompatibleParcialmente compatibleNo compatible
Flujos de trabajo: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Edición de flujos de trabajo mediante grafos SíConectar visualmente plantillas guardadas NoEdición de YAML y visualización del grafo resultante
Ramas de éxito y fallo SíConexiones visuales del flujo de trabajo SíJobs según éxito o fallo y dependencias needs
Pausa para una decisión manual SíAprobación del workflow SíJob manual bloqueante
Permiso de aprobación independiente No SíPremiumAprobaciones de despliegue en entornos protegidos
Transferencia de valores entre jobs Sí SíArtefactos de informes dotenv
Archivos entre jobs ParcialConfigurar almacenamiento y transferencia SíArtefactos de jobs
Componentes reutilizables de varios pasos ParcialReutilizar tareas y reconstruir la secuencia SíComponentes CI/CD

Los workflows de Semaphore UI conectan operaciones guardadas cuando un procedimiento abarca varias herramientas. Una tarea OpenTofu puede crear un entorno, una tarea Ansible configurar los hosts y una tarea Python registrarlo en otro sistema. Las ramas de éxito y error dirigen el siguiente paso, y una aprobación puede pausar la secuencia antes de un cambio. Las plantillas siguen disponibles por separado para el mantenimiento posterior, de modo que un diagnóstico no exige repetir todo el aprovisionamiento.

El editor de workflows de Semaphore UI permite conectar plantillas guardadas y configurar sus rutas de éxito y error en un grafo. El editor de pipelines de GitLab edita y valida YAML y después visualiza los jobs y las dependencias needs resultantes. La visualización ayuda a inspeccionar el procedimiento, pero cambiar las conexiones sigue implicando cambiar la configuración del pipeline. Esto importa si el operador quiere ensamblar procedimientos visualmente en lugar de mantener su orquestación en YAML.

GitLab puede pasar valores calculados a jobs posteriores mediante artefactos de informes dotenv, como la versión desplegada o la URL del entorno. Los datos JSON complejos o multilínea utilizan un artefacto de archivo normal. Las tareas de Semaphore UI pueden intercambiar valores estructurados entre aprovisionamiento y configuración. Por ejemplo, un output de Terraform/OpenTofu con la dirección de un nuevo host puede convertirse en un parámetro de la siguiente operación. En 2.20, la recogida abarca Ansible set_stats, outputs de Terraform/OpenTofu/Terragrunt y JSON de Bash, PowerShell o Python con el ejecutor local del servidor o de un runner remoto. Los ejecutores Docker y Kubernetes no producen esos outputs de workflow. La plantilla receptora declara el parámetro que su playbook o inventario utiliza para dirigirse al nuevo host.

GitLab puede pausar un pipeline con un job manual bloqueante en todos los planes. Configure when: manual con allow_failure: false, porque los jobs manuales opcionales no bloquean el pipeline. Las aprobaciones de despliegue de Premium y Ultimate añaden requisitos de aprobación asignados de forma independiente para entornos protegidos. En Semaphore UI 2.20, la aprobación sigue el permiso de ejecución de tareas del proyecto, y se ha anunciado un rol de aprobador independiente para 2.21. Utilice las aprobaciones de entornos protegidos de GitLab cuando necesite esa separación de permisos.

Los archivos necesitan otro camino. Un paquete compilado o un plan Terraform guardado debe almacenarse donde la siguiente operación pueda recuperarlo, o transferirse expresamente. Los artefactos de jobs de GitLab ya cubren esa parte del pipeline de entrega. Cuando Semaphore UI gestiona el despliegue, su automatización puede obtener el artefacto publicado mediante la versión o digest proporcionado por CI. Así se conservan las evidencias de build de GitLab y las operaciones posteriores utilizan inventarios, credenciales e historial de Semaphore UI.

Los componentes CI/CD de GitLab empaquetan configuración versionada y reutilizable, incluidas secuencias de jobs. Semaphore UI reutiliza plantillas individuales, mientras cada workflow define su secuencia y no puede insertarse como un workflow anidado. Los componentes son valiosos si muchos pipelines comparten un proceso mantenido de varios pasos. El modelo de Semaphore UI es útil cuando se reutilizan sobre todo las operaciones y se combinan de forma distinta para aprovisionar, desplegar o recuperar.

Control de acceso e inicio de sesión

La persona que ejecuta una operación preparada puede no ser quien la modifica. Los permisos de proyecto, los derechos de ejecución más restringidos y los controles de inicio de sesión resuelven distintas partes de esa delegación.

CompatibleParcialmente compatibleNo compatible
Control de acceso e inicio de sesión: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
RBAC por proyecto SíRoles de proyecto SíRoles de grupo y proyecto
Ejecución sin administrar el proyecto SíTask Runner SíRol Developer, también permite subir código
Controles de ejecución de despliegues SíEnterprisePermisos de plantillas SíPremiumEntornos protegidos
Inicio de sesión con LDAP SíPro SíSelf-Managed
Inicio de sesión con OpenID Connect SíPro SíSelf-Managed
Autenticación multifactor SíProTOTP local o proveedor de identidad SíAutenticador local o clave de acceso

GitLab utiliza roles de grupo y proyecto y controles adicionales para ramas y entornos protegidos. El rol Developer estándar permite ejecutar pipelines y subir código a ramas no protegidas. Para acceso exclusivo al despliegue sin esos permisos de contribución, Premium y Ultimate admiten grupos invitados con rol Reporter y acceso a un entorno protegido. Los equipos que delegan operaciones mediante GitLab configuran expresamente esa frontera de despliegue.

Semaphore UI proporciona al equipo de operaciones un proyecto propio que agrupa plantillas, inventarios, repositorios, credenciales y grupos de variables. Community ya separa administración y ejecución: los Task Runners ejecutan plantillas y tienen acceso de solo lectura a los demás recursos. Los ingenieros mantienen la configuración preparada y sus compañeros ejecutan los procedimientos disponibles.

Los roles personalizados y permisos por plantilla de Enterprise acotan más el acceso. Un compañero de soporte puede tener Guest como rol base y un rol personalizado que permita ejecutar una plantilla concreta de reinicio, en lugar de acceso Task Runner a todo el proyecto. El ingeniero prepara inventario, credenciales y opciones. Esto es útil cuando la acción delegada es más específica que la pertenencia al proyecto completo.

El formulario es la interfaz del procedimiento, no sustituye sus reglas de acceso. El código y las modificaciones permitidas al lanzar deben mantener la operación dentro de sus destinos previstos. Los permisos de plantilla de Semaphore UI no proporcionan permisos independientes de inventario y credenciales para combinaciones arbitrarias de recursos.

GitLab Self-Managed admite LDAP y OpenID Connect, y GitLab también ofrece autenticación de dos factores por cuenta. Semaphore UI Pro proporciona TOTP local y admite LDAP y OIDC. La identidad central verifica quién inicia sesión, mientras los roles y permisos de plantilla definen las operaciones que puede ejecutar.

Secretos

El operador debe seleccionar la conexión preparada en lugar de pegar contraseñas repetidamente en las entradas de inicio. Los almacenes de secretos existentes pueden proporcionar esas conexiones sin convertirlas en parámetros del job.

CompatibleParcialmente compatibleNo compatible
Secretos: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Secretos almacenados SíKey Store y variables secretas SíVariables enmascaradas u ocultas
HashiCorp Vault SíPro SíPremiumSecreto configurado en el job
AWS Secrets Manager SíEnterprise SíPremiumSecreto configurado en el job
Azure Key Vault SíEnterprise SíPremiumSecreto configurado en el job
Secretos de OpenBao externo SíProIntegración del almacén de claves SíObtención mediante CLI configurada en el job
Credenciales de Devolutions Server SíEnterpriseIntegración del almacén de claves SíLlamada a la API de credenciales configurada en el job
Secretos de CyberArk SíEnterpriseAlmacenamiento mediante PVWA REST API SíConsulta a CCP en un job de Ansible

Los jobs de GitLab utilizan variables CI/CD enmascarables u ocultables. Las integraciones de secretos externos de Premium obtienen valores de HashiCorp Vault, AWS Secrets Manager, Azure Key Vault y Google Cloud Secret Manager. GitLab 19.5 también ofrece Secrets Manager basado en OpenBao para Premium y Ultimate, facturado mediante GitLab Credits en licencias en línea y con un complemento para licencias Self-Managed sin conexión. Los jobs solicitan expresamente sus secretos, con acceso regulado por los permisos configurados y registrado en eventos de auditoría.

Key Store de Semaphore UI distingue claves SSH y credenciales de usuario y contraseña, incluidas contraseñas y tokens de acceso. El repositorio selecciona su credencial de checkout, el inventario Ansible elige las credenciales del host y, opcionalmente, sudo, y la plantilla puede usar una contraseña de Ansible Vault. Estas relaciones forman parte de la operación guardada, por lo que quien renueva certificados o ejecuta una tarea de servicio no necesita pegar cada secreto en el formulario.

Para equipos que ya operan un almacén, Semaphore UI Pro integra HashiCorp Vault y OpenBao. Enterprise añade AWS Secrets Manager, Azure Key Vault y Devolutions Server. Para el mismo despliegue, GitLab suministra secretos mediante variables del job o integraciones configuradas. Semaphore UI vincula referencias de credenciales a repositorios, inventarios y plantillas, para reutilizar conexiones preparadas. Cuando una integración nativa no cubre el servicio necesario, un comando también puede recuperar el secreto directamente, con esa consulta configurada y mantenida por el equipo.

Para OpenBao y Devolutions Server, Semaphore UI ofrece integraciones específicas de Key Store en Pro y Enterprise, respectivamente. Los jobs de GitLab pueden obtener un valor OpenBao mediante su CLI o una entrada de Devolutions Credentials mediante su API. El equipo mantiene autenticación, consulta e inyección en el job, en lugar de seleccionar una conexión guardada en Key Store. Es una alternativa viable si el almacén y el código existente ya cubren el procedimiento.

Semaphore UI Enterprise integra CyberArk mediante la API REST de PVWA. Un job de GitLab que ejecute Ansible puede obtener credenciales CyberArk mediante la colección cyberark.pas y Central Credential Provider, configurando la colección y la autenticación de la aplicación en el entorno del job. Son interfaces distintas de CyberArk, por lo que la integración debe corresponder al servicio utilizado.

Registros y auditoría

Tras aplicar parches o desplegar, el equipo necesita tanto los resultados de ejecución como un registro de quién modificó o inició la operación. Esos registros responden a preguntas diferentes.

CompatibleParcialmente compatibleNo compatible
Registros y auditoría: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Historial de ejecución y logs Sí Sí
Presentación de resultados de Ansible SíProResumen integrado de hosts y tareas SíCallback de Ansible JUnit y publicación de informes configurados
Historial de auditoría administrativa SíActivar el registro, vista de administrador SíPremiumEventos de auditoría de proyectos y grupos
Reenvío SIEM SíProTLS Syslog o Splunk HEC SíUltimateTransmisión de eventos de auditoría de grupo

Semaphore UI conserva el estado, los datos de lanzamiento, la revisión del repositorio y la salida. Pro añade un resumen integrado de hosts y tareas de Ansible, que facilita localizar los hosts afectados por una comprobación fallida. GitLab conserva logs y puede mostrar resultados Ansible mediante artefactos JUnit configurados. Los informes también aparecen en las vistas de merge requests y pipelines, algo útil si las comprobaciones de infraestructura forman parte de la revisión del código.

Para revisar accesos e investigar incidentes, Semaphore UI registra autenticación, cambios de recursos y actividad de tareas cuando la auditoría está habilitada. Su vista administrativa abarca todos los proyectos en cualquier edición. GitLab Premium y Ultimate ofrecen páginas de auditoría de grupo y proyecto, mientras el historial de cuenta Free cubre inicios de sesión correctos. Los permisos y tipos de eventos de GitLab siguen el ámbito del grupo, proyecto o instancia.

Semaphore UI Pro añade filtros, exportación CSV o JSONL y reenvío mediante TLS Syslog o Splunk HEC. GitLab Ultimate transmite eventos de auditoría de grupo como JSON a destinos externos. Ambos pueden alimentar un sistema de gestión de información y eventos de seguridad (SIEM), aunque los eventos y su alcance difieren de la salida normal de un job.

Integraciones

Un evento de publicación o un sistema de monitorización puede iniciar una operación preparada y enviar el resultado al equipo. Lo relevante es comparar qué parte de esa conexión se configura en el propio producto.

CompatibleParcialmente compatibleNo compatible
Integraciones: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Iniciar e inspeccionar jobs mediante API Sí Sí
Disparadores de webhooks entrantes SíReglas de coincidencia de solicitudes y extractores de valores SíWebhook de activación de pipelines
Notificaciones en chats SíSlack, Teams, Telegram y otros canales SíIntegraciones de notificaciones del proyecto

Semaphore UI proporciona una API autenticada de tareas y endpoints de integración entrantes. Los matchers filtran solicitudes y los extractores asignan cabeceras o campos del cuerpo a parámetros. GitLab expone API de activación y URL de webhooks que inician pipelines para una rama o etiqueta. Sus integraciones también conectan eventos de entrega con sistemas de incidencias y servicios externos. Así, una alerta de monitorización puede iniciar un diagnóstico preparado sin un nuevo commit.

Semaphore UI incluye notificaciones por correo, Slack, Microsoft Teams, Telegram, Rocket.Chat, DingTalk y Gotify. Las plantillas y alertas del proyecto seleccionan los destinos. GitLab ofrece integraciones como Microsoft Teams, correos de estado del pipeline y su aplicación Slack. Un enlace ayuda a inspeccionar la ejecución, pero no equivale a aprobarla desde el chat.

Automatización asistida por IA

Un asistente de programación puede ayudar a preparar una operación o investigar una ejecución fallida utilizando API documentadas, ejemplos de configuración y los resultados pertinentes.

CompatibleParcialmente compatibleNo compatible
Automatización asistida por IA: GitLab y Semaphore UI
Criterios Semaphore UI GitLab
Acceso mediante MCP SíConector de la comunidad SíServidor MCP de GitLab

Ambos productos ofrecen documentación pública y API que Claude Code o Codex pueden consultar para preparar configuraciones e investigar la salida de jobs. El YAML de GitLab proporciona la configuración de entrega, mientras la API de Semaphore UI expone la operación guardada y los recursos del proyecto. Esto facilita la configuración y el diagnóstico asistidos, sin hacer que los cambios generados sean automáticamente correctos.

GitLab 19.5 incluye un servidor MCP de disponibilidad general, cuyas herramientas dependen del acceso y las funciones licenciadas. Semaphore UI tiene un conector MCP comunitario y ha anunciado soporte MCP oficial para Pro en la versión 2.21.0. El acceso depende de la cuenta y las credenciales proporcionadas, por lo que el asistente debe recibir un alcance adecuado a la operación.

Licencias y soporte

GitLab cubre la plataforma de desarrollo que rodea la automatización, mientras Semaphore UI proporciona un servicio especializado para ejecutarla. La comparación económica depende de qué responsabilidades necesita contratar y operar el equipo, incluidos los sistemas que ya tiene.

Opciones comerciales y de código abierto

GitLab Community Edition tiene licencia MIT, mientras Enterprise Edition incluye capacidades comerciales con licencia independiente. Free, Premium y Ultimate cubren requisitos distintos. Las aprobaciones de despliegue y las integraciones nativas documentadas con secretos externos requieren Premium. El estado gestionado de Terraform/OpenTofu está disponible en Free. Las ofertas alojadas incluyen cuotas de cómputo y almacenamiento, mientras los runners autogestionados utilizan infraestructura aportada por el equipo.

Semaphore UI Community tiene licencia MIT e incluye plantillas, roles de proyecto, programaciones y workflows principales. Pro y Enterprise añaden capacidades dentro de la misma familia. Todos los planes actuales son autogestionados. Si el equipo ya tiene alojamiento Git y necesita un servicio Ansible e IaC, esto centra el nuevo servicio en operar la automatización, sin introducir una plataforma de desarrollo más amplia solo para esos jobs.

Funciones de pago y soporte

Semaphore UI Pro añade el backend de estado, runners de proyecto y ejecución Docker por tarea analizados aquí. Enterprise incorpora ejecución Kubernetes, roles personalizados y permisos por plantilla. La elección de edición depende del modelo de ejecución y delegación necesario, no de que cada operador necesite un control avanzado.

GitLab Free no incluye soporte técnico. Premium y Ultimate incluyen soporte del proveedor con objetivos de respuesta según el impacto. Semaphore UI Community ofrece ayuda sin compromisos garantizados, Pro incluye soporte en horario laboral y Enterprise ofrece compromisos adaptados y asistencia en incorporación, configuración, actualizaciones y migración. Compare el plan y contrato concretos para el entorno operado.

Mantenimiento y responsabilidades

Para el mismo procedimiento de despliegue o mantenimiento, GitLab mantiene comandos, secuencia y referencias de configuración en YAML. Semaphore UI mantiene ajustes de herramientas, inventario, credenciales y grupos de variables en plantillas reutilizables. Trasladar esas operaciones puede sustituir su configuración CI mientras el código y sus revisiones permanecen en GitLab. Conservar los jobs en GitLab es razonable si sus parámetros, permisos y ejecución ya encajan con las personas que los operan.

Cómo elegir

Elija según las personas que utilizan la automatización y los recursos que la plataforma debe organizar para ellas. Ambos productos ejecutan comandos. La diferencia mayor es si el trabajo que los rodea es un pipeline de entrega, una operación preparada de infraestructura o ambos.

Cuándo elegir GitLab CI/CD

Elija GitLab CI/CD cuando la automatización deba seguir estrechamente vinculada al desarrollo y la revisión.

  • La revisión del código, las pruebas y los artefactos forman una cadena. Los cambios de infraestructura y aplicación se verifican en merge requests, junto con los resultados del pipeline y las evidencias de despliegue.
  • Los componentes de pipeline y los controles de entorno son esenciales. Muchos proyectos comparten secuencias versionadas de jobs o los despliegues dependen de reglas de aprobación de entornos protegidos.
  • Los pipelines existentes funcionan bien para los operadores. Sus parámetros, horarios, runners y controles de acceso ya cubren el mantenimiento sin una interfaz separada.

Cuándo elegir Semaphore UI

Elija Semaphore UI cuando compartir y operar automatización de infraestructura sea una necesidad propia, aunque el código siga en GitLab.

  • Los inventarios y las credenciales Ansible se reutilizan a diario. Las actualizaciones, diagnósticos, certificados y despliegues comparten entornos de destino, sin convertir cada operación en otra tarea de configuración de jobs.
  • Sus compañeros necesitan operaciones preparadas. Los ingenieros mantienen plantillas y configuración compartida, mientras los operadores usan formularios, programaciones e historial de tareas. Los roles Community permiten ejecución compartida, y Enterprise añade permisos para plantillas concretas.
  • El procedimiento abarca varias herramientas de automatización. Las plantillas directas de Terraform/OpenTofu, Terragrunt, Bash, PowerShell y Python se unen a Ansible en un workflow y siguen siendo reutilizables por separado.
  • El servicio debe encajar en la infraestructura existente. Las opciones de instalación mediante binario, paquete y Docker permiten alojar la interfaz junto al servicio Git existente, con runners cerca de los sistemas privados.

Usar Semaphore UI junto con GitLab CI/CD

Para lanzar una aplicación, GitLab puede revisar el código, ejecutar pruebas y publicar una imagen o paquete versionado. Un job envía después esa referencia inmutable a una plantilla preparada de Semaphore UI mediante la API autenticada. Semaphore UI utiliza inventario, credenciales y variables guardados para desplegar mediante un runner con acceso al entorno. La automatización recupera el artefacto del registro o repositorio del equipo.

El job de GitLab debe conservar el identificador de tarea devuelto, comprobar su estado final y reflejarlo en el resultado del pipeline. Aceptar la solicitud solo pone la tarea en cola. Un webhook entrante también puede iniciar la operación, con el seguimiento de finalización implementado en la integración. Es una conexión que el equipo construye mediante las API, no una integración bidireccional automática de despliegue.

Tras el lanzamiento, los compañeros pueden usar Semaphore UI para diagnósticos o reinicios, mientras una plantilla de comprobación de certificados continúa su programación nocturna. Estas operaciones utilizan la configuración preparada sin un nuevo commit. GitLab conserva revisión del código, informes de pruebas e historial de artefactos, y Semaphore UI proporciona la interfaz diaria del entorno en ejecución.

Preguntas frecuentes

¿Puede GitLab CI/CD ejecutar Ansible y mantenimiento de infraestructura?

Sí. Los jobs pueden invocar Ansible, Terraform/OpenTofu y otras herramientas en su entorno de runner. Pueden ejecutarse manualmente o programarse sin un nuevo commit. Semaphore UI aporta otro modelo de configuración mediante plantillas específicas, inventarios, credenciales y grupos de variables compartidos.

¿Pueden los playbooks permanecer en GitLab al usar Semaphore UI?

Sí. Conecte el repositorio existente, configure su credencial de checkout y seleccione el playbook e inventario en una plantilla de Semaphore UI. GitLab puede seguir gestionando la revisión del código mientras Semaphore UI ejecuta la operación preparada.

¿Qué producto puede almacenar el estado de Terraform/OpenTofu?

El estado gestionado por GitLab está disponible en Free. Semaphore UI Pro proporciona un backend HTTP con espacios de trabajo y gestión desde la interfaz. Ambos pueden ejecutar código con un backend externo. Configure el bloqueo y el manejo de planes guardados para el proceso real de ejecución, sin deducirlos de la mera existencia de un backend de estado.

¿La ejecución delegada requiere Semaphore UI Enterprise?

No para compartir la ejecución normal de un proyecto. Community incluye Task Runner, que ejecuta plantillas con acceso de solo lectura a los demás recursos. Enterprise añade roles personalizados y permisos por plantilla cuando un compañero solo debe ejecutar operaciones seleccionadas.

¿Puede un pipeline de GitLab esperar a un despliegue de Semaphore UI?

Sí, mediante una integración implementada por el equipo. Inicie la tarea con la API autenticada, conserve su identificador, consulte su estado y comunique el resultado final a GitLab. Que la solicitud se acepte correctamente no demuestra que el despliegue haya terminado.

¿Te resultó útil este artículo?

Fuentes

  1. GitLab, “GitLab Secrets Manager credit usage and licensing”. URL: https://docs.gitlab.com/ci/secrets/secrets_manager/credit_usage/ (consultado el: ).
  2. GitLab, “GitLab Secrets Manager”. URL: https://docs.gitlab.com/ci/secrets/secrets_manager/ (consultado el: ).
  3. Semaphore UI, “Semaphore UI build and deploy templates”. URL: https://semaphoreui.com/docs/user-guide/task-templates/build-deploy (consultado el: ).
  4. Semaphore UI, “Semaphore UI automation applications”. URL: https://semaphoreui.com/docs/user-guide/apps (consultado el: ).
  5. Semaphore UI, “Semaphore UI task templates”. URL: https://semaphoreui.com/docs/user-guide/task-templates (consultado el: ).
  6. Semaphore UI, “Semaphore UI installation methods”. URL: https://semaphoreui.com/docs/admin-guide/installation (consultado el: ).
  7. Semaphore UI, “Semaphore UI runners”. URL: https://semaphoreui.com/docs/admin-guide/runners (consultado el: ).
  8. Semaphore UI, “Semaphore UI workflow nodes and data passing”. URL: https://semaphoreui.com/docs/user-guide/workflows (consultado el: ).
  9. Semaphore UI, “Semaphore UI Terraform HTTP backend”. URL: https://semaphoreui.com/docs/user-guide/apps/terraform/states (consultado el: ).
  10. Semaphore UI, “Semaphore UI project roles and template permissions”. URL: https://semaphoreui.com/docs/user-guide/team (consultado el: ).
  11. Semaphore UI, “Semaphore UI Key Store”. URL: https://semaphoreui.com/docs/user-guide/key-store (consultado el: ).
  12. Semaphore UI, “Semaphore UI Variable Groups”. URL: https://semaphoreui.com/docs/user-guide/environment (consultado el: ).
  13. Semaphore UI, “Semaphore UI schedules”. URL: https://semaphoreui.com/docs/user-guide/schedules (consultado el: ).
  14. Semaphore UI, “Semaphore UI webhook integrations”. URL: https://semaphoreui.com/docs/user-guide/integrations (consultado el: ).
  15. Semaphore UI, “Semaphore UI Community, Pro and Enterprise”. URL: https://semaphoreui.com/pricing (consultado el: ).
  16. Semaphore UI, “Semaphore UI inventories”. URL: https://semaphoreui.com/docs/user-guide/inventory (consultado el: ).
  17. Semaphore UI, “Semaphore UI 2.20 candidate Terraform execution”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/db_lib/TerraformApp.go (consultado el: ).
  18. Semaphore UI, “Semaphore UI 2.20 candidate runner output handling”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/services/runners/job_pool.go (consultado el: ).
  19. GitLab, “GitLab 19.5 release notes”. URL: https://docs.gitlab.com/releases/19/gitlab-19-5-released/ (consultado el: ).
  20. GitLab, “GitLab CI/CD pipelines”. URL: https://docs.gitlab.com/ci/pipelines/ (consultado el: ).
  21. GitLab, “GitLab Runner executors”. URL: https://docs.gitlab.com/runner/executors/ (consultado el: ).
  22. GitLab, “Install GitLab”. URL: https://about.gitlab.com/install/ (consultado el: ).
  23. GitLab, “GitLab CI/CD inputs”. URL: https://docs.gitlab.com/ci/inputs/ (consultado el: ).
  24. GitLab, “GitLab CI/CD variables”. URL: https://docs.gitlab.com/ci/variables/ (consultado el: ).
  25. GitLab, “GitLab scheduled pipelines”. URL: https://docs.gitlab.com/ci/pipelines/schedules/ (consultado el: ).
  26. GitLab, “GitLab deployment approvals”. URL: https://docs.gitlab.com/ci/environments/deployment_approvals/ (consultado el: ).
  27. GitLab, “GitLab-managed Terraform/OpenTofu state”. URL: https://docs.gitlab.com/user/infrastructure/iac/terraform_state/ (consultado el: ).
  28. GitLab, “Infrastructure as Code with OpenTofu and GitLab”. URL: https://docs.gitlab.com/user/infrastructure/iac/ (consultado el: ).
  29. GitLab, “GitLab job artifacts”. URL: https://docs.gitlab.com/ci/jobs/job_artifacts/ (consultado el: ).
  30. GitLab, “GitLab unit test reports”. URL: https://docs.gitlab.com/ci/testing/unit_test_reports/ (consultado el: ).
  31. GitLab, “GitLab roles and permissions”. URL: https://docs.gitlab.com/user/permissions/ (consultado el: ).
  32. GitLab, “Use external secrets in GitLab CI/CD”. URL: https://docs.gitlab.com/ci/secrets/ (consultado el: ).
  33. GitLab, “GitLab Licensing and Compatibility”. URL: https://docs.gitlab.com/development/licensing/ (consultado el: ).
  34. GitLab, “GitLab pricing and hosting offerings”. URL: https://about.gitlab.com/pricing/ (consultado el: ).
  35. GitLab, “GitLab CI/CD components”. URL: https://docs.gitlab.com/ci/components/ (consultado el: ).
  36. GitLab, “CI/CD for external repositories”. URL: https://docs.gitlab.com/ci/ci_cd_for_external_repos/ (consultado el: ).
  37. GitLab, “GitLab Support”. URL: https://support.gitlab.com/hc/en-us/articles/11626483177756-GitLab-Support (consultado el: ).
  38. Semaphore UI, “Semaphore UI REST API, task creation and task status”. URL: https://semaphoreui.com/api-docs (consultado el: ).
  39. Semaphore UI, “Tasks, execution history and Ansible summaries”. URL: https://semaphoreui.com/docs/user-guide/tasks (consultado el: ).
  40. GitLab, “Protected environments”. URL: https://docs.gitlab.com/ci/environments/protected_environments/ (consultado el: ).
  41. Semaphore UI, “Get Started, installation methods and server platforms”. URL: https://semaphoreui.com/docs/getting-started (consultado el: ).
  42. GitLab, “Installation methods and supported server platforms”. URL: https://docs.gitlab.com/install/install_methods/ (consultado el: ).
  43. GitLab, “GitLab Runner requirements and supported platforms”. URL: https://docs.gitlab.com/runner/install/requirements/ (consultado el: ).
  44. GitLab, “Pass dotenv variables to specific jobs”. URL: https://docs.gitlab.com/ci/variables/dotenv_variables/ (consultado el: ).
  45. GitLab, “CI/CD job logs”. URL: https://docs.gitlab.com/ci/jobs/job_logs/ (consultado el: ).
  46. Semaphore UI, “Repositories, reusable Git resources and authentication”. URL: https://semaphoreui.com/docs/user-guide/repositories (consultado el: ).
  47. GitLab, “Pipeline editor, YAML editing and validation”. URL: https://docs.gitlab.com/ci/pipeline_editor/ (consultado el: ).
  48. GitLab, “Customize pipeline configuration, alternate paths and external YAML”. URL: https://docs.gitlab.com/ci/pipelines/settings/ (consultado el: ).
  49. GitLab, “Pipeline Wizard, generated CI configuration and commit step”. URL: https://docs.gitlab.com/development/cicd/pipeline_wizard/ (consultado el: ).
  50. Ansible project, “JUnit callback, structured playbook result reports”. URL: https://docs.ansible.com/projects/ansible/latest/collections/ansible/builtin/junit_callback.html (consultado el: ).
  51. GitLab, “GitLab manual jobs, optional and blocking behavior”. URL: https://docs.gitlab.com/ci/jobs/job_control/ (consultado el: ).
  52. GitLab, “GitLab runner tags and project assignment”. URL: https://docs.gitlab.com/ci/runners/configure_runners/ (consultado el: ).
  53. Semaphore UI, “Semaphore UI authentication”. URL: https://semaphoreui.com/docs/admin-guide/authentication (consultado el: ).
  54. GitLab, “LDAP authentication for GitLab Self-Managed”. URL: https://docs.gitlab.com/administration/auth/ldap/ (consultado el: ).
  55. GitLab, “OpenID Connect authentication for GitLab Self-Managed”. URL: https://docs.gitlab.com/administration/auth/oidc/ (consultado el: ).
  56. GitLab, “GitLab two-factor authentication”. URL: https://docs.gitlab.com/user/profile/account/two_factor_authentication/ (consultado el: ).
  57. GitLab, “HashiCorp Vault integration”. URL: https://docs.gitlab.com/ci/secrets/hashicorp_vault/ (consultado el: ).
  58. GitLab, “AWS Secrets Manager integration”. URL: https://docs.gitlab.com/ci/secrets/aws_secrets_manager/ (consultado el: ).
  59. GitLab, “Azure Key Vault integration”. URL: https://docs.gitlab.com/ci/secrets/azure_key_vault/ (consultado el: ).
  60. Semaphore UI, “Semaphore UI audit history, export and SIEM forwarding”. URL: https://semaphoreui.com/docs/admin-guide/audit-log (consultado el: ).
  61. GitLab, “GitLab audit events and edition scope”. URL: https://docs.gitlab.com/user/compliance/audit_events/ (consultado el: ).
  62. GitLab, “GitLab audit event streaming”. URL: https://docs.gitlab.com/user/compliance/audit_event_streaming/ (consultado el: ).
  63. Semaphore UI, “Semaphore UI notification channels”. URL: https://semaphoreui.com/docs/admin-guide/notifications (consultado el: ).
  64. GitLab, “Pipeline trigger API and incoming webhooks”. URL: https://docs.gitlab.com/ci/triggers/ (consultado el: ).
  65. GitLab, “GitLab project integrations and notifications”. URL: https://docs.gitlab.com/user/project/integrations/ (consultado el: ).
  66. Community connector contributors, “Community MCP connector for Semaphore UI”. URL: https://github.com/cloin/semaphore-mcp (consultado el: ).
  67. GitLab, “GitLab MCP server”. URL: https://docs.gitlab.com/user/model_context_protocol/mcp_server/ (consultado el: ).
  68. OpenBao project, “OpenBao CLI, read a secret”. URL: https://openbao.org/docs/commands/kv/get/ (consultado el: ).
  69. Devolutions, “Devolutions Server REST API, credential retrieval”. URL: https://docs.devolutions.net/server/web-interface/utilities/api-documentation (consultado el: ).
  70. GitLab, “GitLab conditional jobs and pipeline dependencies”. URL: https://docs.gitlab.com/ci/yaml/ (consultado el: ).
  71. GitLab, “GitLab Jobs API, status and logs”. URL: https://docs.gitlab.com/api/jobs/ (consultado el: ).
  72. Semaphore UI, “Semaphore UI CyberArk PVWA secret storage”. URL: https://semaphoreui.com/docs/user-guide/key-store/cyberark (consultado el: ).
  73. CyberArk collection maintainers, “CyberArk collection, CCP credential retrieval”. URL: https://docs.ansible.com/projects/ansible/latest/collections/cyberark/pas/cyberark_credential_module.html (consultado el: ).

Comparación elaborada por el equipo de Semaphore UI a partir de la documentación, los repositorios y la información de producto indicados arriba. Cada fuente incluye su fecha de consulta.