Semaphore UI vs GitLab CI/CD

Denis GukovFundador e CTO do Semaphore UI
20 min de leitura

GitLab CI/CD e Semaphore UI executam automação de infraestrutura. O GitLab conecta jobs à revisão de código, testes e entrega de aplicações. O Semaphore UI organiza Ansible, Terraform/OpenTofu e procedimentos de manutenção como operações compartilhadas, com inventários, credenciais, formulários de execução e agendamentos. Esta comparação abrange GitLab 19.5 e Semaphore UI 2.20.0.

Converse sobre este artigo com IA

Visão geral

Uma release de aplicação e uma verificação de certificados em toda a frota podem usar os mesmos playbooks, mas exigir rotinas diferentes. Uma release costuma começar com uma alteração de código, produzir um artefato e registrar seus testes. A manutenção pode começar com um operador escolhendo serviço, ambiente e ação preparada. Ambas precisam de automação confiável, mas as pessoas que iniciam o trabalho e a configuração com que lidam nem sempre são as mesmas.

O GitLab combina repositórios, merge requests e CI/CD em uma plataforma de desenvolvimento mais ampla. O YAML do pipeline define os jobs, GitLab Runners os executam e os resultados permanecem ligados à alteração de código proposta. Execuções manuais e agendamentos de pipeline também cobrem trabalho independente de um novo commit. GitLab.com, Self-Managed e Dedicated oferecem diferentes formas de obter e operar essa plataforma.

O Semaphore UI se conecta a repositórios Git existentes e prepara automações por Task Templates. Inventários Ansible, credenciais e Variable Groups são recursos compartilhados do projeto. Formulários coletam valores específicos de cada execução, agendamentos repetem tarefas preparadas e workflows conectam operações entre ferramentas suportadas. Playbooks podem permanecer no GitLab enquanto as equipes usam o Semaphore UI como interface para implantações, provisionamento e manutenção posterior.

Modelos de tarefas do Semaphore UI para várias ferramentas de automação em um projeto.
Semaphore UI. Operações preparadas de Ansible, infraestrutura como código e linha de comando compartilham a lista de tarefas do projeto.
Detalhes de pipeline do GitLab com jobs agrupados por etapa.
GitLab. Jobs agrupados em etapas de pipeline. Exemplo da documentação oficial. Fonte

Comparação rápida

Para automações rotineiras, ambos oferecem execuções manuais, agendamentos e logs. As diferenças estão em onde os engenheiros definem a operação, como reutilizam destinos e credenciais e em como os resultados se relacionam à revisão de código e à entrega.

GitLab e Semaphore UI: características principais
Critérios Semaphore UI GitLab
Configuração de jobs Task Templates específicos por ferramenta Jobs em .gitlab-ci.yml e componentes reutilizáveis
Ferramentas de automação Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell, Python Ferramentas de linha de comando em jobs de runners
Hospedagem Hospedagem própria, binário, pacotes, Docker ou Kubernetes GitLab.com, Self-Managed ou Dedicated
Execução No servidor ou em runners GitLab Runners com executores shell, contêiner ou Kubernetes
Inventário Ansible Recursos reutilizáveis de inventário, arquivos no Git e plugins de descoberta do Ansible Arquivos de inventário e plugins de descoberta configurados no job
Entradas e variáveis Formulários, Variable Groups e variáveis de inventário Entradas de pipeline tipadas, variáveis CI/CD e escopos de ambiente
Workflows Grafo visual que conecta Task Templates específicos por ferramenta Pipelines YAML, dependências entre jobs e componentes reutilizáveis
Credenciais Key Store e integrações com armazenamentos de segredos externos Variáveis CI/CD e integrações com segredos externos
Controle de acesso Funções de projeto, funções personalizadas e permissões de modelos no Enterprise Funções de grupo e projeto, branches e ambientes protegidos
State do Terraform Backend HTTP integrado no Pro ou backend externo Backend HTTP de state gerenciado pelo GitLab, inclusive no Free
Licença e planos Community sob MIT, Pro e Enterprise Community Edition sob MIT, recursos comerciais da Enterprise Edition

O Semaphore UI dá à equipe um lugar para reutilizar um inventário, suas credenciais de conexão e as variáveis necessárias a vários playbooks. Uma tarefa pode ser disponibilizada como formulário para um colega, operação de manutenção agendada ou etapa de um workflow de provisionamento. O GitLab oferece sua própria configuração reutilizável de pipeline e variáveis, com vínculos mais fortes a merge requests, artefatos e ambientes de implantação. A distinção está no modelo de configuração em torno da automação, e não na capacidade de executar um comando de manutenção.

Comparação de funcionalidades

Considere o ciclo completo de um ambiente: provisioná-lo, configurar os hosts, implantar uma release e continuar a mantê-lo. O mesmo código pode participar de várias dessas etapas. O que muda é como a plataforma reutiliza destinos e credenciais, coleta entradas, executa o trabalho e conecta o resultado à próxima ação.

Instalação e configuração

Um serviço compartilhado de automação precisa de host, banco de dados e processo de atualização. Esses requisitos importam mesmo quando o trabalho é um backup noturno, e não o build de uma aplicação.

SuportadoParcialmente suportadoNão suportado
Instalação e configuração: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Implantação com hospedagem própria Sim Sim
Pacotes nativos para Linux Sim Sim
Servidor nativo para Windows Sim NãoO servidor suportado executa em Linux
Implantação no Kubernetes SimChart Helm SimChart Helm ou Operator

O GitLab.com fornece hospedagem Git, CI/CD e os recursos da plataforma como serviço gerenciado. Para GitLab Self-Managed, instalações por pacotes Linux, Docker e Kubernetes incluem vários serviços que cooperam entre si, como PostgreSQL, Redis e workers de processamento em segundo plano. Uma equipe que já opera GitLab pode usar essa instalação para automação sem acrescentar outro serviço web.

O Semaphore UI pode executar como binário independente, pacote Linux nativo, contêiner Docker ou implantação Kubernetes, com seu serviço de aplicação e banco de dados. Binários nativos do servidor também atendem a macOS, Windows e FreeBSD. Isso oferece uma aplicação menor para equipes que precisam apenas de uma interface de automação, implantada junto à hospedagem Git existente.

Plataformas de servidor e de workers são escolhas diferentes. O GitLab Runner pode executar em sistemas como Windows e macOS, embora o servidor GitLab Self-Managed suportado execute em Linux. A execução Ansible precisa de um ambiente de controle compatível, como Linux, WSL ou runner Linux, mesmo quando o serviço web do Semaphore UI executa no Windows.

Ferramentas de automação e IaC

Provisionar, configurar hosts e manter serviços frequentemente exige ferramentas diferentes. A distinção está em como cada operação é preparada e reutilizada, e não na capacidade de um shell chamar seu comando.

SuportadoParcialmente suportadoNão suportado
Ferramentas de automação e IaC: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Playbooks do Ansible SimTask Template SimComando de job do pipeline
Terraform/OpenTofu SimTask Template SimComando de job do pipeline
Terragrunt SimTask Template SimComando de job do pipeline
Bash SimTask Template SimComando de job do pipeline
PowerShell SimTask Template SimComando de job do pipeline
Python SimTask Template SimComando de job do pipeline
Armazenamento integrado de state do Terraform SimProBackend HTTP SimBackend HTTP, inclusive no Free

Jobs do GitLab executam comandos definidos no YAML do pipeline, usando ferramentas instaladas no runner ou fornecidas por uma imagem de contêiner. Assim, Ansible, Terraform/OpenTofu e Terragrunt podem participar do mesmo pipeline de testes e implantações ou de um pipeline separado de manutenção. O GitLab também documenta componentes OpenTofu e workflows de infraestrutura para mudanças revisadas por merge requests.

O Semaphore UI oferece Task Templates próprios para Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell e Python. Engenheiros selecionam repositório, configurações da ferramenta, credenciais e variáveis compartilhadas na interface, enquanto o código permanece no Git. Uma tarefa de provisionamento Terraform ou verificação de prontidão Python pode executar de forma independente, por agendamento ou em um workflow. Isso atende a equipes que querem manter configurações compartilhadas de execução no Semaphore UI e disponibilizar operações preparadas pela interface. YAML de pipeline é útil quando alterações na própria orquestração, incluindo sequência e configuração dos jobs, precisam de revisão de código e histórico de versões.

Para provisionamento, o Semaphore UI Pro acrescenta um backend HTTP de state com workspaces, histórico de versões e gestão pela interface. O state compartilhado do Terraform/OpenTofu pode ficar junto às operações IaC preparadas, sem outro serviço. O state Terraform/OpenTofu gerenciado pelo GitLab está disponível no Free e também oferece backend HTTP e bloqueio. Backends externos existentes continuam sendo uma opção para ambos. Os comandos padrão de plan e apply do Semaphore UI desativam o bloqueio, a menos que sejam sobrescritos, portanto o suporte no backend não o ativa por si só nessas execuções.

Não é necessário mover repositórios apenas para introduzir o Semaphore UI. Um projeto pode registrar vários repositórios Git com URLs, branches e credenciais próprios e selecionar o adequado em cada modelo. O GitLab CI/CD também funciona com outras hospedagens Git: sua integração com repositórios externos, nos planos Premium e Ultimate, cria um projeto GitLab espelhado. A configuração do pipeline pode estar em outro caminho, em outro projeto ou em uma URL YAML externa, e um job pode clonar outro repositório explicitamente. Os pipelines GitLab ainda pertencem a um projeto GitLab. Assim, o projeto de operações do Semaphore UI pode coexistir com as hospedagens Git da equipe, enquanto o GitLab continua sendo uma opção para pipelines de entrega e manutenção.

Operações salvas e agendamentos

Uma reinicialização de serviço, renovação de certificado ou release de aplicação deve preservar sua configuração. Assim, os colegas selecionam a operação, fornecem as entradas variáveis e a executam manualmente ou por agendamento.

SuportadoParcialmente suportadoNão suportado
Operações salvas e agendamentos: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Definições de jobs sem YAML de CI/CD SimFormulário Task Template NãoExige YAML de pipeline
Formulários de entrada ao iniciar SimCampos obrigatórios, verificações de inteiros e escolhas SimEntradas tipadas, escolhas e validação por regex
Variáveis compartilhadas SimVariable Groups SimVariáveis de grupo e projeto
Execuções agendadas Sim Sim
Versões de build e seleção para implantação SimModelos Build e Deploy vinculados SimJobs de pipeline e referências de artefatos/versões
Conexões salvas com repositórios SimRepositórios nomeados do projeto reutilizados por modelos SimRepositório do projeto e configuração CI/CD

O GitLab define jobs no YAML do pipeline. Seu editor valida e visualiza essa configuração, e o Pipeline Wizard gera um arquivo de configuração salvo por commit em um repositório. O formulário Task Template do Semaphore UI salva uma operação ao selecionar ferramenta, repositório, inventário e Variable Groups, sem definição YAML de CI/CD. Isso diz respeito a como os engenheiros mantêm o procedimento salvo. Ambos podem iniciar jobs existentes manualmente com entradas ou por agendamento, sem um novo commit a cada execução.

Entradas de pipeline do GitLab são parâmetros tipados declarados em YAML, com valores padrão, escolhas permitidas e validação por regex. Variáveis CI/CD de grupo e projeto fornecem configuração reutilizável, incluindo escopos de ambiente. Um colega informa essas entradas ao iniciar o pipeline preparado, enquanto o agendamento fornece a configuração para execuções sem intervenção.

O Semaphore UI mantém a configuração reutilizável no Task Template, no inventário selecionado e nos Variable Groups. Formulários expõem os valores de execução com campos obrigatórios, verificações de inteiros e escolhas predefinidas. Eles não oferecem as regras regex configuráveis do GitLab. Por exemplo, um engenheiro pode preparar uma operação de serviço com opções de nome do serviço, estado desejado e ambiente. O colega preenche o formulário, inicia a tarefa e consulta status e saída. O playbook implementa a ação solicitada, enquanto os recursos compartilhados fornecem repositório, hosts e detalhes de conexão.

O Semaphore UI também vincula modelos Build e Deploy. Um build registra uma versão, e uma implantação seleciona uma versão de build bem-sucedida ou inicia automaticamente após um build bem-sucedido. A automação publica e recupera o pacote ou imagem do armazenamento escolhido pela equipe. O GitLab representa essa release por jobs de pipeline, referências de artefatos e ambientes de implantação, com evidências integradas de testes e entrega.

A mesma configuração atende a trabalho sem intervenção. Um modelo de verificação de certificados pode executar toda noite no inventário do ambiente e indicar falha quando o playbook encontra um certificado próximo do vencimento. Uma expressão cron como 0 2 * * * agenda a execução diária às 02:00 no fuso configurado no agendador, UTC por padrão. Agendamentos únicos atendem a janelas de manutenção planejadas. O GitLab também pode agendar o playbook equivalente usando agendamento de pipeline e entradas configuradas.

Inventário

A manutenção de hosts depende de uma definição reutilizável dos destinos e de suas configurações de conexão. Aplicação de patches, backups e verificações de certificados podem compartilhar essa definição.

SuportadoParcialmente suportadoNão suportado
Inventário: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Inventários Ansible reutilizáveis SimRecursos de inventário gerenciados pela interface SimArquivos de inventário e plugins em jobs
Descoberta dinâmica de hosts SimPlugins de inventário do Ansible SimExecutar plugins de inventário do Ansible no job
Seleção de hosts ao iniciar SimCampo de limit do Ansible SimEntrada do pipeline passada ao limit do Ansible

O Semaphore UI transforma o inventário em um recurso nomeado do projeto que pode ser compartilhado entre modelos. Ele pode conter INI/YAML editável, referenciar um arquivo no Git ou usar plugins de inventário dinâmico do Ansible. O inventário selecionado também mantém referências às credenciais dos hosts e, opcionalmente, de sudo, para que alterar a configuração dos destinos não exija editar cada operação de manutenção.

O GitLab pode usar os mesmos arquivos e plugins de descoberta do Ansible. Um job busca o inventário em seu repositório ou em outra fonte configurada, instala o plugin de descoberta necessário e passa as entradas selecionadas ao Ansible. Ambos podem descobrir hosts em APIs de nuvem ou outros sistemas suportados pelos plugins Ansible instalados. A diferença do Semaphore UI é o objeto de inventário reutilizável e as configurações de conexão na interface de operações.

Para uma tarefa de recuperação em um servidor, um limit permitido do Ansible restringe a execução sem criar outro inventário. Isso seleciona hosts dentro de uma tarefa, em vez de dividir automaticamente a frota em jobs independentes. Um inventário no Git continua útil em ambos os produtos quando suas alterações precisam de revisão.

Execução

A execução precisa alcançar a rede de destino com as dependências corretas. A localização dos workers e o isolamento por job são decisões separadas da instalação do servidor web.

SuportadoParcialmente suportadoNão suportado
Execução: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Execução remota SimRunners SimGitLab Runners
Jobs em contêineres SimProExecutor Docker SimExecutor Docker
Pods de jobs no Kubernetes SimEnterprise SimExecutor Kubernetes
Roteamento de runners SimProTags de runners SimTags de runners
Workers de execução do projeto SimProRunners atribuídos a projetos SimRunners de projeto

GitLab Runners executam jobs com executores shell, Docker ou Kubernetes. O Semaphore UI pode executar no servidor da aplicação ou em um runner próximo aos sistemas gerenciados. Ambos permitem posicionar a execução em uma rede privada enquanto a interface compartilhada fica em outro local.

O GitLab oferece runners específicos por projeto e roteamento de jobs por tags. O Semaphore UI Pro acrescenta runners atribuídos a projetos, roteamento por tags e execução Docker por tarefa. O Enterprise acrescenta execução Kubernetes. Essas configurações permitem selecionar capacidade de execução com conectividade e dependências necessárias. Instalar o servidor da aplicação em um contêiner continua sendo uma escolha separada de usar um ambiente em contêiner para cada job.

Workflows

Provisionar um host, configurá-lo e verificar seu serviço combina várias operações salvas. Falhas e pontos de aprovação determinam se a próxima etapa deve executar.

SuportadoParcialmente suportadoNão suportado
Workflows: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Edição de workflows em grafo SimConectar modelos salvos visualmente NãoEditar YAML e visualizar o grafo resultante
Ramificações de sucesso e falha SimConexões visuais de workflow SimJobs de sucesso/falha e dependências needs
Pausar para uma decisão manual SimAprovação de workflow SimJob manual bloqueante
Permissão de aprovação separada Não SimPremiumAprovações de implantação em ambientes protegidos
Passagem de valores entre jobs Sim SimArtefatos de relatório dotenv
Arquivos entre jobs ParcialmenteConfigure armazenamento e transferência SimArtefatos de jobs
Componentes reutilizáveis de várias etapas ParcialmenteReutilizar tarefas, reconstruir a sequência SimComponentes CI/CD

Workflows do Semaphore UI conectam operações salvas quando um procedimento abrange várias ferramentas. Uma tarefa OpenTofu pode criar um ambiente, uma tarefa Ansible configurar seus hosts e uma tarefa Python registrá-lo em outro sistema. Ramificações de sucesso e falha direcionam a próxima etapa, e uma aprovação pode pausar a sequência antes de uma mudança. Os modelos continuam disponíveis separadamente para manutenção posterior, portanto executar um diagnóstico não exige repetir todo o provisionamento.

O editor de workflows do Semaphore UI permite conectar modelos salvos e configurar caminhos de sucesso ou falha em um grafo. O editor de pipeline do GitLab edita e valida YAML, depois visualiza os jobs resultantes e suas dependências needs. A visualização ajuda a inspecionar o procedimento, enquanto alterações nas conexões continuam sendo mudanças na configuração do pipeline. Isso importa quando o operador quer montar visualmente procedimentos existentes em vez de manter sua orquestração em YAML.

O GitLab pode passar valores calculados a jobs posteriores por artefatos de relatório dotenv, como uma versão implantada ou URL de ambiente. JSON complexo ou dados multilinha usam um artefato de arquivo comum. Provisionamento e configuração podem passar valores estruturados entre tarefas do Semaphore UI. Por exemplo, um output Terraform/OpenTofu com o endereço de um novo host pode se tornar uma entrada da próxima operação. Na versão 2.20, a coleta de saídas abrange set_stats do Ansible, outputs de Terraform/OpenTofu/Terragrunt e JSON de Bash, PowerShell ou Python pelo executor local no servidor ou em um runner remoto. Os executores Docker e Kubernetes não produzem essas saídas de workflow. O modelo de destino declara a entrada, que seu playbook ou configuração de inventário usa para definir o novo host como alvo.

O GitLab pode pausar um pipeline com um job manual bloqueante em todos os planos. Defina when: manual com allow_failure: false, pois jobs manuais opcionais não bloqueiam o pipeline. Aprovações de implantação nos planos Premium e Ultimate acrescentam exigências de aprovação atribuídas independentemente para ambientes protegidos. A aprovação de workflows do Semaphore UI 2.20 acompanha a permissão de executar tarefas do projeto, com uma função separada de aprovador anunciada para 2.21. Use aprovações de ambientes protegidos do GitLab quando for necessário gerenciar esse limite de aprovação de forma independente.

Arquivos precisam de outro caminho. Um pacote compilado ou plano Terraform salvo precisa ficar onde a operação seguinte possa recuperá-lo ou ser transferido explicitamente. Os artefatos de jobs do GitLab já atendem a essa parte do pipeline de entrega. Quando o Semaphore UI cuida da implantação, sua automação pode buscar o artefato publicado usando a versão ou digest fornecido pelo CI. Isso preserva as evidências de build do GitLab e permite que operações posteriores nos hosts usem inventários, credenciais e histórico do Semaphore UI.

Componentes CI/CD do GitLab empacotam configurações de pipeline versionadas e reutilizáveis, incluindo sequências de jobs. O Semaphore UI reutiliza Task Templates individuais, enquanto a sequência é definida em cada workflow e não pode ser inserida como um workflow aninhado. Componentes são valiosos quando muitos pipelines de entrega precisam compartilhar um processo mantido de várias etapas. O modelo do Semaphore UI é útil quando equipes reutilizam principalmente as operações subjacentes e as conectam de formas diferentes para provisionamento, implantação ou recuperação.

Controle de acesso e autenticação

Quem executa uma operação preparada pode não ser o engenheiro que a modifica. Permissões de projeto, direitos de execução mais restritos e controles de autenticação resolvem partes diferentes dessa delegação.

SuportadoParcialmente suportadoNão suportado
Controle de acesso e autenticação: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
RBAC por projeto SimFunções de projeto SimFunções de grupo e projeto
Executar sem administrar o projeto SimTask Runner SimFunção Developer, também pode enviar código
Controles de execução de implantações SimEnterprisePermissões de modelos SimPremiumAmbientes protegidos
Login LDAP SimPro SimSelf-Managed
Login OpenID Connect SimPro SimSelf-Managed
Autenticação multifator SimProTOTP local ou provedor de identidade SimAutenticador local ou passkey

O GitLab usa funções de grupo e projeto, com controles adicionais para branches e ambientes protegidos. A função Developer padrão pode executar pipelines e também enviar código a branches não protegidas. Para acesso apenas à implantação sem essas permissões de contribuição de código, Premium e Ultimate oferecem grupos convidados com função Reporter e acesso a um ambiente protegido. As equipes que delegam operações pelo GitLab configuram esse limite de implantação explicitamente.

O Semaphore UI dá à equipe de operações seu próprio limite de projeto envolvendo modelos, inventários, repositórios, credenciais e Variable Groups. O Community já separa administração de execução: Task Runners podem iniciar modelos do projeto e têm acesso somente de leitura aos demais recursos. Engenheiros mantêm a configuração preparada enquanto colegas executam os procedimentos disponibilizados pelo projeto.

Funções personalizadas e permissões de modelos do Enterprise restringem isso ainda mais. Um colega de suporte pode ter a função base Guest com uma função personalizada que concede execução em um modelo específico de reinicialização, em vez de acesso Task Runner a todo o projeto. Inventário, credenciais e opções de execução são preparados pelo engenheiro. Isso é útil quando a ação delegada é mais específica que a participação no projeto inteiro de operações.

O formulário é a interface para o procedimento, e não substitui suas regras de acesso. O código de automação e as substituições permitidas ao iniciar precisam manter a operação nos destinos pretendidos. Permissões de modelos do Semaphore UI não fornecem permissões separadas de inventário e credenciais para combinações arbitrárias de recursos.

O GitLab Self-Managed oferece LDAP e OpenID Connect, e o GitLab também fornece autenticação de dois fatores por conta. O Semaphore UI Pro fornece TOTP local e oferece LDAP e OIDC. A identidade central verifica quem faz login, enquanto funções de projeto e permissões de modelos continuam definindo quais operações a pessoa pode executar.

Segredos

O operador deve selecionar a conexão preparada em vez de colar senhas repetidamente nos campos de entrada. Os cofres existentes podem fornecer essas conexões sem transformar as credenciais em parâmetros de job.

SuportadoParcialmente suportadoNão suportado
Segredos: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Segredos armazenados SimKey Store e variáveis secretas SimVariáveis mascaradas ou ocultas
HashiCorp Vault SimPro SimPremiumSegredo configurado no job
AWS Secrets Manager SimEnterprise SimPremiumSegredo configurado no job
Azure Key Vault SimEnterprise SimPremiumSegredo configurado no job
Segredos externos no OpenBao SimProIntegração com Key Store SimRecuperação por CLI configurada no job
Credenciais do Devolutions Server SimEnterpriseIntegração com Key Store SimChamada à API de credenciais configurada no job
Segredos do CyberArk SimEnterpriseArmazenamento via API REST PVWA SimRecuperação de CCP em um job Ansible

Jobs do GitLab usam variáveis CI/CD que podem ser mascaradas ou ocultas, e integrações Premium com segredos externos solicitam valores de serviços como HashiCorp Vault, AWS Secrets Manager, Azure Key Vault e Google Cloud Secret Manager. O GitLab 19.5 também oferece Secrets Manager baseado em OpenBao para Premium e Ultimate, cobrado por GitLab Credits em licenças online, com um complemento para licenças Self-Managed offline. Jobs solicitam esses segredos explicitamente, com acesso regido pelas permissões configuradas e registrado em eventos de auditoria.

O Key Store do Semaphore UI distingue chaves SSH de credenciais de login/senha, incluindo senhas e tokens de acesso. Um repositório seleciona sua credencial de checkout, um inventário Ansible seleciona credenciais de host e, opcionalmente, de sudo, e o modelo pode usar uma senha do Ansible Vault. Essas relações fazem parte da operação salva, portanto um colega que inicia uma renovação de certificado ou tarefa de serviço não precisa colar cada segredo de conexão no formulário.

Para uma equipe que já opera um cofre, o Semaphore UI Pro integra HashiCorp Vault e OpenBao. O Enterprise acrescenta AWS Secrets Manager, Azure Key Vault e Devolutions Server. Para a mesma implantação, o GitLab fornece segredos por variáveis de job ou integrações configuradas. O Semaphore UI associa referências de credenciais a repositórios, inventários e modelos, permitindo que os operadores reutilizem conexões preparadas ao iniciar. Um comando também pode recuperar um segredo diretamente quando não há integração nativa para o serviço necessário, com essa recuperação configurada e mantida pela equipe.

Para OpenBao e Devolutions Server, o Semaphore UI fornece integrações nomeadas de Key Store no Pro e no Enterprise, respectivamente. Jobs GitLab podem recuperar um valor do OpenBao pela CLI ou uma entrada Credentials do Devolutions pela API. A equipe mantém essa autenticação, recuperação e injeção no job, em vez de selecionar uma conexão Key Store salva. É uma alternativa viável quando o cofre e o código de job existentes já cobrem o procedimento.

O Semaphore UI Enterprise se integra ao CyberArk pela API REST PVWA. Um job GitLab que executa Ansible pode recuperar credenciais CyberArk pela collection cyberark.pas e pelo Central Credential Provider, com a collection e a autenticação da aplicação configuradas no ambiente de execução do job. São interfaces CyberArk diferentes, portanto a integração precisa corresponder ao serviço usado pela equipe.

Logs e auditoria

Depois da aplicação de patches ou implantação, a equipe precisa tanto dos resultados da execução quanto de um registro de quem alterou ou iniciou a operação. Esses registros respondem a perguntas diferentes.

SuportadoParcialmente suportadoNão suportado
Logs e auditoria: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Histórico e logs de execução Sim Sim
Apresentação de resultados do Ansible SimProResumo integrado de hosts e tarefas SimCallback JUnit do Ansible e publicação de relatórios configurados
Histórico de auditoria administrativa SimAtivar gravação, visão de administrador SimPremiumEventos de auditoria de projeto e grupo
Encaminhamento para SIEM SimProSyslog com TLS ou Splunk HEC SimUltimateStreaming de eventos de auditoria de grupo

O Semaphore UI preserva status da tarefa, detalhes da execução, revisão do repositório e saída. O Pro acrescenta um resumo integrado de hosts e tarefas Ansible, facilitando acompanhar uma verificação com falhas na frota até os hosts afetados. O GitLab mantém logs dos jobs e pode exibir resultados Ansible por artefatos de relatórios JUnit configurados. Relatórios de testes também alimentam as telas de merge requests e pipelines, úteis quando verificações de infraestrutura fazem parte de uma revisão de código.

Para revisões de acesso e investigações de incidentes, o Semaphore UI registra autenticação, mudanças em recursos e atividade de tarefas quando a auditoria está habilitada. Sua visão de auditoria administrativa abrange projetos em todas as edições. GitLab Premium e Ultimate fornecem páginas de auditoria de grupos e projetos, enquanto o histórico de conta do Free cobre logins bem-sucedidos. As permissões e os tipos de eventos de auditoria do GitLab seguem o escopo de grupo, projeto e instância.

O Semaphore UI Pro acrescenta filtros, exportação CSV ou JSONL e encaminhamento por Syslog com TLS ou Splunk HEC. O GitLab Ultimate transmite eventos de auditoria de grupos em JSON para destinos externos. Ambos podem alimentar um sistema de gestão de informações e eventos de segurança (SIEM), mas os eventos e o escopo diferem da saída comum de jobs.

Integrações

Um evento de release ou sistema de monitoramento pode iniciar uma operação preparada e enviar o resultado à equipe. A comparação útil é quanto dessa conexão é configurado no próprio produto.

SuportadoParcialmente suportadoNão suportado
Integrações: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Iniciar e consultar jobs pela API Sim Sim
Gatilhos de webhook de entrada SimRegras de correspondência de solicitações e extração de valores SimWebhook para acionar pipeline
Notificações em chats SimSlack, Teams, Telegram e outros canais SimIntegrações de notificações do projeto

O Semaphore UI fornece uma API autenticada de tarefas e endpoints de integração de entrada. Regras filtram a solicitação e extratores mapeiam cabeçalhos ou campos do corpo para entradas da tarefa. O GitLab expõe APIs de acionamento de pipelines e URLs de webhook que iniciam um pipeline para uma branch ou tag. Suas integrações de projeto também conectam eventos de entrega a rastreadores de issues e serviços externos. Assim, um alerta de monitoramento pode iniciar um diagnóstico preparado sem um novo commit.

O Semaphore UI inclui canais de notificação por email, Slack, Microsoft Teams, Telegram, Rocket.Chat, DingTalk e Gotify. Modelos e alertas de projeto selecionam os destinos dos resultados. O GitLab fornece integrações de projeto como notificações do Microsoft Teams, emails de status do pipeline e seu aplicativo Slack. Um link de notificação ajuda os colegas a consultar uma execução, mas não constitui aprovação dentro do chat.

Automação assistida por IA

Um assistente de programação pode ajudar a preparar uma operação ou investigar uma falha usando APIs documentadas, exemplos de configuração e a saída relevante.

SuportadoParcialmente suportadoNão suportado
Automação assistida por IA: GitLab e Semaphore UI
Critérios Semaphore UI GitLab
Acesso por MCP SimConector da comunidade SimServidor MCP do GitLab

Os dois produtos fornecem documentação pública e APIs que assistentes como Claude Code e Codex podem consultar ao elaborar configurações ou investigar saídas de jobs. O YAML de pipeline do GitLab fornece a configuração de entrega ao assistente, enquanto a API do Semaphore UI expõe a operação salva e seus recursos de projeto. Isso apoia a configuração e a solução de problemas sem tornar automaticamente corretas as alterações geradas.

O GitLab 19.5 inclui um servidor MCP em disponibilidade geral, com ferramentas disponíveis conforme o acesso e os recursos licenciados. O Semaphore UI tem um conector MCP da comunidade para sua API e anunciou suporte oficial a MCP no Pro para a versão 2.21.0. O acesso do conector segue a conta e as credenciais fornecidas, portanto o assistente deve receber o escopo apropriado à operação.

Licenciamento e suporte

O GitLab abrange a plataforma de desenvolvimento ao redor da automação, enquanto o Semaphore UI fornece um serviço focado em executá-la. A comparação econômica depende de quais responsabilidades a equipe precisa adquirir e operar, incluindo os sistemas que já possui.

Opções de código aberto e comerciais

O GitLab Community Edition é licenciado sob MIT, enquanto o Enterprise Edition inclui recursos comerciais com licenças separadas. Os planos Free, Premium e Ultimate atendem a requisitos diferentes, com aprovações de implantação e integrações nativas documentadas com segredos externos exigindo Premium. O state Terraform/OpenTofu gerenciado pelo GitLab está disponível no Free. Ofertas hospedadas incluem franquias de computação e armazenamento, enquanto runners com hospedagem própria usam a infraestrutura fornecida pela equipe.

O Semaphore UI Community usa MIT e abrange modelos básicos, funções de projeto, agendamentos e workflows. Pro e Enterprise acrescentam recursos na mesma família de produtos. Todos os planos atuais do Semaphore UI são de hospedagem própria. Para uma equipe que já possui hospedagem Git e precisa de um serviço Ansible e IaC, isso mantém o novo serviço focado em operar automações, em vez de introduzir uma plataforma de desenvolvimento mais ampla apenas para esses jobs.

Recursos pagos e suporte

O Semaphore UI Pro acrescenta backend de state, runners de projeto e execução Docker por tarefa discutidos aqui. O Enterprise acrescenta execução Kubernetes de tarefas, funções personalizadas e permissões de modelos. A escolha da edição segue o modelo de execução e delegação necessário, sem presumir que todo operador precisa de controles avançados.

O GitLab Free não inclui suporte técnico, enquanto Premium e Ultimate incluem suporte do fornecedor com metas de resposta baseadas no impacto do chamado. O Semaphore UI Community oferece assistência de melhor esforço, o Pro inclui suporte em horário comercial e o Enterprise oferece compromissos de suporte adaptados e ajuda com implantação inicial, configuração, atualizações e migração. Compare o plano e o contrato efetivos do ambiente operado.

Manutenção e responsabilidade

Para o mesmo procedimento de implantação ou manutenção, o GitLab mantém comandos, sequência e referências de configuração no YAML do pipeline. O Semaphore UI mantém configurações de ferramenta, inventário, credenciais e Variable Groups junto a Task Templates reutilizáveis. Mover essas operações ao Semaphore UI pode substituir sua configuração de CI enquanto o código de automação e suas revisões permanecem no GitLab. Manter os jobs no GitLab é razoável quando suas entradas, permissões e modelo de execução já atendem às pessoas que os operam.

Como escolher

Escolha com base nas pessoas que usam a automação e nos recursos que a plataforma deve organizar para elas. Ambos podem executar comandos. A diferença maior é se o trabalho ao redor é um pipeline de entrega, uma operação de infraestrutura preparada ou ambos.

Quando escolher o GitLab CI/CD

Escolha o GitLab CI/CD quando a automação precisar continuar estreitamente ligada ao processo de desenvolvimento e revisão.

  • Revisão de código, testes e artefatos formam uma cadeia. Alterações de infraestrutura e aplicação são verificadas em merge requests, com resultados de pipeline e evidências de implantação mantidos junto a elas.
  • Componentes de pipeline e controles de ambiente são essenciais. Muitos projetos compartilham sequências versionadas de jobs, ou implantações dependem de regras de aprovação de ambientes protegidos.
  • Os pipelines existentes atendem bem aos operadores. Suas entradas, agendamentos, runners e controles de acesso já cobrem a manutenção sem uma interface separada.

Quando escolher o Semaphore UI

Escolha o Semaphore UI quando compartilhar e operar automação de infraestrutura for uma necessidade distinta, mesmo que o código continue no GitLab.

  • Inventários e credenciais Ansible são reutilizados diariamente. Patches, diagnósticos, operações com certificados e implantações compartilham ambientes de destino, em vez de cada um exigir uma nova configuração de job.
  • Os colegas precisam de operações preparadas. Engenheiros mantêm modelos e configuração compartilhada, enquanto operadores usam formulários, agendamentos e histórico de tarefas. Funções de projeto do Community cobrem a execução compartilhada, com permissões Enterprise para modelos específicos.
  • O procedimento abrange várias ferramentas de automação. Modelos diretos de Terraform/OpenTofu, Terragrunt, Bash, PowerShell e Python se juntam às operações Ansible em um workflow e continuam reutilizáveis independentemente.
  • O serviço deve se adaptar à infraestrutura existente. Instalações por binário, pacote e Docker permitem hospedar a interface de operações junto ao serviço Git existente, com runners próximos aos sistemas privados.

Usando Semaphore UI com GitLab CI/CD

Em uma release de aplicação, o GitLab pode revisar o código, executar testes e publicar uma imagem de contêiner ou pacote versionado. Um job de pipeline envia essa referência imutável de artefato a um modelo de implantação preparado do Semaphore UI pela API autenticada de tarefas. O Semaphore UI usa inventário, credenciais e variáveis salvos para implantar por um runner com acesso ao ambiente de destino. A automação recupera o artefato do registro ou repositório da equipe.

O job GitLab precisa preservar o identificador de tarefa retornado, verificar o status final e mapeá-lo ao resultado do pipeline. Aceitar uma solicitação de execução apenas coloca a tarefa na fila. Um webhook de entrada também pode acionar uma operação, com o retorno da conclusão implementado pela integração. Essa é uma conexão que a equipe constrói pelas APIs, não uma integração bidirecional automática de implantação.

Após a release, os colegas podem usar o Semaphore UI para diagnósticos ou reinicialização de serviços, enquanto um modelo noturno de verificação de certificados segue o agendamento. Essas operações usam a configuração de infraestrutura preparada independentemente de um novo commit. O GitLab mantém revisão de código, relatórios de testes e histórico de artefatos, enquanto o Semaphore UI fornece a interface diária com o ambiente em execução.

Perguntas frequentes

O GitLab CI/CD pode executar Ansible e manutenção de infraestrutura?

Sim. Jobs podem chamar Ansible, Terraform/OpenTofu e outras ferramentas de linha de comando pelo ambiente do runner. Podem executar manualmente ou por agendamento sem um novo commit. O Semaphore UI acrescenta outro modelo de configuração com templates específicos por ferramenta, inventários, credenciais e Variable Groups compartilhados.

Os playbooks podem continuar no GitLab ao usar Semaphore UI?

Sim. Conecte o repositório GitLab existente, configure a credencial de checkout e selecione playbook e inventário em um Task Template do Semaphore UI. O GitLab pode continuar responsável pela revisão de código enquanto o Semaphore UI executa a operação preparada.

Qual produto pode armazenar state do Terraform/OpenTofu?

O state gerenciado pelo GitLab está disponível no Free. O Semaphore UI Pro fornece um backend HTTP de state com workspaces e gestão pela interface. Ambos também podem executar código que usa um backend externo. Configure bloqueio e tratamento de planos salvos para o processo real de execução, em vez de deduzi-los da presença de um backend de state.

A execução delegada exige Semaphore UI Enterprise?

Não para a execução compartilhada comum de projetos. O Community inclui uma função Task Runner que inicia modelos de seu projeto com acesso somente de leitura aos demais recursos. O Enterprise acrescenta funções personalizadas e permissões por modelo quando um colega deve executar apenas operações selecionadas.

Um pipeline GitLab pode aguardar uma implantação do Semaphore UI?

Sim, por uma integração implementada pela equipe. Inicie a tarefa preparada pela API autenticada, guarde seu identificador, verifique o status e informe o resultado final ao GitLab. Uma solicitação de execução aceita com sucesso não comprova que a implantação terminou.

Este artigo foi útil?

Fontes

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

Comparação preparada pela equipe do Semaphore UI com base na documentação, nos repositórios e nas informações dos produtos listados acima. A data de acesso é registrada para cada fonte.