Semaphore UI e GitLab CI/CD

Denis GukovFondatore e CTO presso Semaphore UI
20 min di lettura

GitLab CI/CD e Semaphore UI eseguono entrambi automazione dell’infrastruttura. GitLab collega i job alla revisione del codice, ai test e alla distribuzione applicativa. Semaphore UI organizza Ansible, Terraform/OpenTofu e le procedure di manutenzione come operazioni condivise con inventari, credenziali, moduli di avvio e pianificazioni. Questo confronto riguarda GitLab 19.5 e Semaphore UI 2.20.0.

Discuti questo articolo con l’IA

Panoramica

Un rilascio applicativo e una verifica dei certificati sull’intero parco macchine possono usare gli stessi playbook, pur richiedendo modalità di lavoro diverse. Un rilascio inizia generalmente da una modifica al codice, produce un artefatto e registra i test. La manutenzione può iniziare con un operatore che sceglie servizio, ambiente e azione predisposta. Entrambi richiedono automazione affidabile, ma chi avvia il lavoro e la configurazione che gestisce non sono sempre gli stessi.

GitLab combina repository, merge request e CI/CD in una piattaforma di sviluppo più ampia. Lo YAML delle pipeline definisce i job, i GitLab Runner li eseguono e i risultati rimangono collegati alla modifica di codice proposta. Avvii manuali e pianificazioni delle pipeline coprono anche il lavoro indipendente da un nuovo commit. GitLab.com, Self-Managed e Dedicated offrono modi diversi per ottenere e gestire la piattaforma.

Semaphore UI si collega ai repository Git esistenti e prepara l’automazione tramite Task Template. Inventari Ansible, credenziali e gruppi di variabili sono risorse condivise del progetto. I questionari raccolgono valori specifici dell’esecuzione, le pianificazioni ripetono attività predisposte e i workflow collegano operazioni tra gli strumenti supportati. I playbook possono rimanere in GitLab mentre i team usano Semaphore UI come interfaccia per deployment, provisioning e manutenzione successiva.

Task Template di Semaphore UI per diversi strumenti di automazione in un unico progetto.
Semaphore UI. Operazioni preparate per Ansible, Infrastructure as Code e riga di comando condividono l’elenco delle attività di un progetto.
Dettagli di una pipeline GitLab con job raggruppati per fase.
GitLab. Job raggruppati nelle fasi della pipeline. Esempio dalla documentazione ufficiale. Fonte

Confronto rapido

Per l’automazione ordinaria, entrambi supportano avvii manuali, pianificazioni e log di esecuzione. Le differenze riguardano dove gli ingegneri definiscono l’operazione, come vengono riutilizzati destinazioni e credenziali e quanto strettamente i risultati si collegano alla revisione del codice e alla distribuzione.

GitLab e Semaphore UI: caratteristiche principali
Criteri Semaphore UI GitLab
Configurazione dei job Task Template specifici per strumento Job .gitlab-ci.yml e componenti riutilizzabili
Strumenti di automazione Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell, Python Strumenti da riga di comando nei job dei runner
Hosting Self-hosted, binario, pacchetti, Docker o Kubernetes GitLab.com, Self-Managed o Dedicated
Esecuzione Sul server o sui runner GitLab Runner con esecutori shell, container o Kubernetes
Inventario Ansible Risorse di inventario riutilizzabili, file in Git e plugin di rilevamento Ansible File di inventario e plugin di rilevamento configurati nel job
Input e variabili Questionari, gruppi di variabili e variabili di inventario Input tipizzati delle pipeline, variabili CI/CD e ambiti di ambiente
Workflow Grafo visuale che collega Task Template specifici per strumento Pipeline YAML, dipendenze tra job e componenti riutilizzabili
Credenziali Key Store e integrazioni con archivi esterni di segreti Variabili CI/CD e integrazioni con segreti esterni
Controllo degli accessi Ruoli di progetto, ruoli personalizzati e autorizzazioni sui template in Enterprise Ruoli di gruppo e progetto, branch e ambienti protetti
Stato Terraform Backend HTTP integrato in Pro o backend esterno Backend HTTP dello stato gestito da GitLab, incluso in Free
Licenze e piani Community con licenza MIT, Pro ed Enterprise Community Edition con licenza MIT, funzionalità commerciali Enterprise Edition

Semaphore UI offre al team un punto in cui riutilizzare un inventario, le relative credenziali di connessione e le variabili richieste da più playbook. Un’attività può essere disponibile come modulo per un collega, come operazione di manutenzione pianificata o come passaggio di un workflow di provisioning. GitLab offre una propria configurazione riutilizzabile delle pipeline e variabili, con legami più stretti con merge request, artefatti e ambienti di deployment. La differenza riguarda il modello di configurazione intorno all’automazione, non la capacità dei prodotti di eseguire un comando di manutenzione.

Confronto delle funzionalità

Considerate l’intero ciclo di vita di un ambiente: crearlo, configurarne gli host, distribuire un rilascio e continuare a mantenerlo. Lo stesso codice può partecipare a più passaggi. Cambia il modo in cui la piattaforma riutilizza destinazioni e credenziali, raccoglie input, esegue il lavoro e collega il risultato all’azione successiva.

Installazione e configurazione

Un servizio di automazione condiviso necessita di un host, un database e un processo di aggiornamento. Questi requisiti contano anche quando il lavoro è un backup notturno anziché una build applicativa.

SupportatoParzialmente supportatoNon supportato
Installazione e configurazione: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Deployment self-hosted Sì Sì
Pacchetti Linux nativi Sì Sì
Server Windows nativo Sì NoIl server supportato viene eseguito su Linux
Distribuzione Kubernetes SìChart Helm SìChart Helm o Operator

GitLab.com offre hosting Git, CI/CD e la piattaforma circostante come servizio gestito. Per GitLab Self-Managed, le installazioni tramite pacchetti Linux, Docker e Kubernetes includono diversi servizi cooperanti, come PostgreSQL, Redis e worker in background. Un team che gestisce già GitLab può usare tale installazione per l’automazione senza aggiungere un altro servizio web.

Semaphore UI può essere eseguito come binario autonomo, pacchetto Linux nativo, container Docker o deployment Kubernetes, con il servizio applicativo e il database. I binari nativi del server coprono anche macOS, Windows e FreeBSD. Questo offre a un team che necessita soltanto di un’interfaccia di automazione un’applicazione più piccola da distribuire accanto al proprio hosting Git.

Le piattaforme del server e dei worker sono scelte diverse. GitLab Runner può essere eseguito su sistemi operativi tra cui Windows e macOS, sebbene il server GitLab Self-Managed supportato funzioni su Linux. Ansible richiede un ambiente di controllo supportato, come Linux, WSL o un runner Linux, anche quando il servizio web di Semaphore UI viene eseguito su Windows.

Strumenti di automazione e IaC

Provisioning, configurazione degli host e manutenzione dei servizi usano spesso strumenti diversi. La differenza riguarda come preparare e riutilizzare ogni operazione, non la possibilità di invocarne il comando da una shell.

SupportatoParzialmente supportatoNon supportato
Strumenti di automazione e IaC: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Playbook Ansible SìTask Template SìComando di un job della pipeline
Terraform/OpenTofu SìTask Template SìComando di un job della pipeline
Terragrunt SìTask Template SìComando di un job della pipeline
Bash SìTask Template SìComando di un job della pipeline
PowerShell SìTask Template SìComando di un job della pipeline
Python SìTask Template SìComando di un job della pipeline
Archiviazione integrata dello stato Terraform SìProBackend HTTP SìBackend HTTP, incluso in Free

I job GitLab eseguono comandi definiti nello YAML della pipeline, usando strumenti installati sul runner o forniti da un’immagine container. Ansible, Terraform/OpenTofu e Terragrunt possono quindi partecipare alla stessa pipeline di test e deployment oppure a una pipeline di manutenzione autonoma. GitLab documenta anche componenti OpenTofu e workflow infrastrutturali per modifiche revisionate tramite merge request.

Semaphore UI offre Task Template dedicati per Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell e Python. Gli ingegneri selezionano nell’interfaccia repository, impostazioni dello strumento, credenziali e variabili condivise, mentre il codice di automazione rimane in Git. Un’attività di provisioning Terraform o una verifica di disponibilità in Python può essere eseguita autonomamente, secondo una pianificazione o in un workflow. Questo approccio si adatta ai team che desiderano mantenere in Semaphore UI le impostazioni di avvio condivise e rendere disponibili nell’interfaccia operazioni predisposte. Lo YAML delle pipeline è utile quando le modifiche all’orchestrazione stessa, inclusi sequenza e configurazione dei job, richiedono revisione del codice e cronologia delle versioni.

Per il provisioning, Semaphore UI Pro aggiunge un backend HTTP dello stato con workspace, cronologia delle versioni e gestione nell’interfaccia. Lo stato Terraform/OpenTofu condiviso può rimanere insieme alle operazioni IaC predisposte anziché richiedere un altro servizio. Lo stato Terraform/OpenTofu gestito da GitLab è disponibile in Free e supporta anch’esso un backend HTTP e il blocco dello stato. I backend esterni esistenti rimangono un’opzione per entrambi. I comandi plan e apply predefiniti di Semaphore UI disabilitano il blocco salvo modifica esplicita, quindi il solo supporto del backend non lo abilita per tali esecuzioni.

I repository non devono essere spostati soltanto per introdurre Semaphore UI. Un progetto può registrare più repository Git con URL, branch e credenziali propri, quindi selezionare quello appropriato in ciascun template. GitLab CI/CD funziona anche con hosting Git esterni: la sua integrazione con repository esterni, disponibile in Premium e Ultimate, crea un progetto GitLab mirror. La configurazione della pipeline può risiedere in un percorso alternativo, in un altro progetto o a un URL YAML esterno, e un job può clonare esplicitamente un altro repository. Le pipeline GitLab appartengono comunque a un progetto GitLab. Il progetto operativo di Semaphore UI può quindi affiancare gli hosting Git esistenti del team, mentre GitLab rimane un’opzione per pipeline sia di distribuzione sia di manutenzione.

Operazioni salvate e pianificazioni

Un riavvio del servizio, un rinnovo del certificato o un rilascio applicativo dovrebbe conservare la propria configurazione. I colleghi possono così selezionare l’operazione, fornire gli input variabili ed eseguirla manualmente o secondo una pianificazione.

SupportatoParzialmente supportatoNon supportato
Operazioni salvate e pianificazioni: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Definizione dei job senza YAML CI/CD SìModulo Task Template NoRichiede YAML della pipeline
Moduli per gli input all’avvio SìCampi obbligatori, controlli sui numeri interi e scelte SìInput tipizzati, scelte e validazione tramite espressioni regolari
Variabili condivise SìGruppi di variabili SìVariabili di gruppo e progetto
Esecuzioni pianificate Sì Sì
Versioni di build e selezione del deployment SìTemplate Build e Deploy collegati SìJob della pipeline e riferimenti ad artefatti o versioni
Connessioni ai repository salvate SìRepository di progetto con nome, riutilizzati dai template SìRepository del progetto e configurazione CI/CD

GitLab definisce i job nello YAML della pipeline. Il suo editor valida e visualizza la configurazione e il Pipeline Wizard genera un file di configurazione da salvare nel repository con un commit. Il modulo Task Template di Semaphore UI salva un’operazione selezionando strumento, repository, inventario e gruppi di variabili, senza una definizione YAML CI/CD. Questo riguarda il modo in cui gli ingegneri mantengono la procedura salvata. Entrambi i prodotti possono avviare job esistenti manualmente con input o secondo una pianificazione, senza un nuovo commit per ogni esecuzione.

Gli input delle pipeline GitLab sono parametri tipizzati dichiarati in YAML, con valori predefiniti, scelte consentite e validazione tramite espressioni regolari. Le variabili CI/CD di gruppo e progetto forniscono configurazione riutilizzabile, inclusi gli ambiti di ambiente. Un collega fornisce questi input quando avvia la pipeline predisposta, mentre la pianificazione della pipeline fornisce la configurazione per le esecuzioni non presidiate.

Semaphore UI mantiene la configurazione riutilizzabile nel Task Template, nell’inventario selezionato e nei gruppi di variabili. I questionari espongono valori all’avvio con campi obbligatori, controlli sui numeri interi e scelte predefinite. Non offrono le regole regex configurabili di GitLab. Ad esempio, un ingegnere può preparare un’operazione su un servizio con scelte per nome del servizio, stato desiderato e ambiente. Il collega compila il modulo, avvia l’attività e ne legge stato e output. Il playbook implementa l’azione richiesta, mentre le risorse condivise forniscono repository, host e dettagli di connessione.

Semaphore UI collega anche i template Build e Deploy. Una build registra una versione e un deployment seleziona una versione di build riuscita oppure parte automaticamente dopo una build riuscita. L’automazione pubblica e recupera il pacchetto o l’immagine nell’archiviazione scelta dal team. GitLab rappresenta quel rilascio tramite job della pipeline, riferimenti agli artefatti e ambienti di deployment, con evidenze integrate di test e distribuzione.

La stessa configurazione supporta il lavoro non presidiato. Un template di verifica dei certificati può essere eseguito ogni notte sull’inventario dell’ambiente e segnalare un errore quando il playbook trova un certificato prossimo alla scadenza. Un’espressione cron come 0 2 * * * lo pianifica ogni giorno alle 02:00 nel fuso orario configurato dello scheduler, UTC per impostazione predefinita. Le pianificazioni una tantum coprono una finestra di manutenzione programmata. Anche GitLab può pianificare lo stesso playbook, usando la pianificazione della pipeline e gli input configurati.

Inventario

La manutenzione degli host dipende da una definizione riutilizzabile delle destinazioni e delle impostazioni di connessione. Applicazione delle patch, backup e verifica dei certificati possono condividere tale definizione.

SupportatoParzialmente supportatoNon supportato
Inventario: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Inventari Ansible riutilizzabili SìRisorse di inventario gestite nell’interfaccia SìFile e plugin di inventario nei job
Rilevamento dinamico degli host SìPlugin di inventario Ansible SìEsecuzione dei plugin di inventario Ansible nel job
Selezione degli host all’avvio SìRichiesta del parametro limit di Ansible SìInput della pipeline passato al parametro limit di Ansible

Semaphore UI tratta l’inventario come una risorsa di progetto con nome che i template possono condividere. Può contenere INI/YAML modificabile, fare riferimento a un file in Git o utilizzare i plugin di inventario dinamico di Ansible. L’inventario selezionato contiene anche riferimenti alle credenziali degli host e, facoltativamente, a quelle sudo, quindi modificare la configurazione delle destinazioni non richiede di intervenire su ogni operazione di manutenzione.

GitLab può usare gli stessi file Ansible e plugin di discovery. Un job recupera l’inventario dal repository o da un’altra sorgente configurata, installa il plugin di discovery necessario e passa ad Ansible i parametri selezionati. Entrambi possono individuare host tramite API cloud o altri sistemi supportati dai plugin Ansible installati. La differenza di Semaphore UI è l’oggetto inventario riutilizzabile, con le impostazioni di connessione nell’interfaccia operativa.

Per un’attività di ripristino su un solo server, un parametro limit Ansible consentito restringe l’esecuzione senza creare un nuovo inventario. Seleziona gli host all’interno di un’attività, invece di suddividere automaticamente il parco macchine in job indipendenti. Un inventario in Git rimane utile con entrambi i prodotti quando le modifiche richiedono revisione.

Esecuzione

L’esecuzione deve raggiungere la rete di destinazione con le dipendenze corrette. La collocazione dei worker e l’isolamento per job sono aspetti distinti dall’installazione del server web.

SupportatoParzialmente supportatoNon supportato
Esecuzione: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Esecuzione remota SìRunner SìGitLab Runner
Job containerizzati SìProEsecutore Docker SìEsecutore Docker
Pod di job Kubernetes SìEnterprise SìEsecutore Kubernetes
Instradamento ai runner SìProTag dei runner SìTag dei runner
Worker di esecuzione del progetto SìProRunner assegnati ai progetti SìRunner di progetto

I GitLab Runner eseguono i job con esecutori shell, Docker o Kubernetes. Semaphore UI può eseguire sul proprio server applicativo o su un runner vicino ai sistemi gestiti. Entrambi permettono di collocare l’esecuzione in una rete privata mantenendo altrove l’interfaccia condivisa.

GitLab supporta runner specifici per progetto e instradamento dei job tramite tag. Semaphore UI Pro aggiunge runner assegnati ai progetti, instradamento tramite tag ed esecuzione Docker per singola attività. Enterprise aggiunge l’esecuzione delle attività in Kubernetes. Queste impostazioni consentono di scegliere risorse di esecuzione con la connettività e le dipendenze necessarie. Installare il server applicativo in un container resta distinto dallo scegliere un ambiente container per ogni job.

Workflow

Creare un host, configurarlo e verificarne il servizio combina più operazioni salvate. Errori e punti di approvazione determinano se eseguire il passaggio successivo.

SupportatoParzialmente supportatoNon supportato
Workflow: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Modifica dei workflow tramite grafo SìCollegamento visuale dei template salvati NoModifica YAML, visualizzazione del grafo risultante
Rami di successo ed errore SìCollegamenti visuali del workflow SìJob di successo o errore e dipendenze needs
Pausa per una decisione manuale SìApprovazione del workflow SìJob manuale bloccante
Autorizzazione di approvazione separata No SìPremiumApprovazioni dei deployment negli ambienti protetti
Passaggio di valori tra job Sì SìArtefatti report dotenv
File tra job ParzialeConfigurazione di archiviazione e trasferimento SìArtefatti dei job
Componenti riutilizzabili con più passaggi ParzialeRiutilizzo delle attività, ricostruzione della sequenza SìComponenti CI/CD

I workflow di Semaphore UI collegano le operazioni salvate quando una procedura coinvolge più strumenti. Un’attività OpenTofu può creare un ambiente, un’attività Ansible configurarne gli host e un’attività Python registrarlo in un altro sistema. I rami di successo e di errore determinano il passaggio successivo, e un’approvazione può sospendere la sequenza prima di una modifica. I template restano disponibili separatamente per la manutenzione successiva, quindi una diagnostica non richiede di ripetere l’intera procedura di provisioning.

L’editor dei workflow di Semaphore UI permette a un ingegnere di collegare template salvati e configurarne i percorsi di successo o errore su un grafo. L’editor delle pipeline di GitLab modifica e valida YAML, poi visualizza i job risultanti e le dipendenze needs. La visualizzazione aiuta a esaminare la procedura, mentre le modifiche ai collegamenti restano modifiche alla configurazione della pipeline. Questo conta quando l’operatore vuole comporre visivamente procedure esistenti anziché mantenerne l’orchestrazione in YAML.

GitLab può passare valori calcolati ai job successivi attraverso artefatti di report dotenv, per esempio una versione distribuita o l’URL di un ambiente. JSON complesso o dati su più righe richiedono invece un normale artefatto file. Provisioning e configurazione possono passare valori strutturati tra attività di Semaphore UI. Per esempio, un output Terraform/OpenTofu con l’indirizzo di un nuovo host può diventare un input dell’operazione successiva. Nella versione 2.20, la raccolta degli output copre Ansible set_stats, gli output Terraform/OpenTofu/Terragrunt e JSON da Bash, PowerShell o Python con l’esecutore locale sul server o su un runner remoto. Gli esecutori delle attività Docker e Kubernetes non producono questi output dei workflow. Il template ricevente dichiara l’input, che il suo playbook o la sua configurazione di inventario usa poi per indirizzare il nuovo host.

GitLab può sospendere una pipeline con un job manuale bloccante in qualsiasi piano. Impostate when: manual con allow_failure: false, perché i job manuali facoltativi non bloccano la pipeline. Le approvazioni dei deployment di Premium e Ultimate aggiungono requisiti di approvazione assegnati in modo indipendente per gli ambienti protetti. L’approvazione dei workflow in Semaphore UI 2.20 segue il permesso di eseguire attività del progetto, con un ruolo di approvatore separato annunciato per la versione 2.21. Usate le approvazioni degli ambienti protetti di GitLab quando è necessaria questa separazione dei permessi di approvazione.

I file richiedono un percorso diverso. Un pacchetto compilato o un piano Terraform salvato deve essere conservato dove l’operazione successiva può recuperarlo oppure trasferito esplicitamente. Gli artefatti dei job di GitLab coprono già questa parte di una pipeline di delivery. Quando Semaphore UI gestisce il deployment, la sua automazione può recuperare l’artefatto pubblicato usando la versione o il digest fornito dalla CI. Si mantengono così le evidenze della build in GitLab, permettendo alle operazioni successive sugli host di usare inventari, credenziali e cronologia delle esecuzioni di Semaphore UI.

I componenti CI/CD di GitLab raggruppano configurazioni di pipeline versionate e riutilizzabili, incluse sequenze di job. Semaphore UI riutilizza i singoli Task Template, mentre la sequenza è definita in ogni workflow e non può essere inserita come un unico workflow annidato. I componenti sono utili quando molte pipeline di delivery devono condividere un processo con più passaggi mantenuto centralmente. Il modello di Semaphore UI è utile quando i team riutilizzano soprattutto le operazioni sottostanti e le collegano in modi diversi per provisioning, deployment o ripristino.

Controllo degli accessi e autenticazione

Chi esegue un’operazione predisposta potrebbe non essere l’ingegnere che la modifica. Autorizzazioni di progetto, diritti di esecuzione più specifici e controlli di autenticazione risolvono aspetti diversi di questa delega.

SupportatoParzialmente supportatoNon supportato
Controllo degli accessi e autenticazione: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
RBAC a livello di progetto SìRuoli di progetto SìRuoli di gruppo e progetto
Esecuzione senza amministrazione del progetto SìTask Runner SìRuolo Developer, consente anche il push del codice
Controlli sull’esecuzione dei deployment SìEnterpriseAutorizzazioni sui template SìPremiumAmbienti protetti
Accesso LDAP SìPro SìSelf-Managed
Accesso OpenID Connect SìPro SìSelf-Managed
Autenticazione a più fattori SìProTOTP locale o provider di identità SìAutenticatore locale o passkey

GitLab usa ruoli di gruppo e di progetto, con controlli aggiuntivi per branch e ambienti protetti. Il ruolo standard Developer può eseguire pipeline e inviare codice ai branch non protetti. Per un accesso limitato al deployment senza quei permessi di contribuzione al codice, Premium e Ultimate supportano gruppi invitati con ruolo Reporter e accesso a un ambiente protetto. I team che delegano operazioni tramite GitLab configurano esplicitamente questo confine di deployment.

Semaphore UI offre a un team operativo un confine di progetto che comprende template, inventari, repository, credenziali e gruppi di variabili. Community separa già l’amministrazione del progetto dall’esecuzione: i Task Runner possono avviare i template del progetto e hanno accesso in sola lettura alle altre risorse. Gli ingegneri possono mantenere la configurazione preparata mentre i colleghi eseguono le procedure rese disponibili dal progetto.

I ruoli personalizzati e i permessi a livello di template di Enterprise restringono ulteriormente questo accesso. Un collega del supporto può avere un ruolo di base Guest con un ruolo personalizzato che concede l’esecuzione di uno specifico template di riavvio, anziché l’accesso Task Runner a tutto il progetto. Inventario, credenziali e opzioni di avvio sono preparati dall’ingegnere. È utile quando l’azione delegata è più specifica dell’appartenenza all’intero progetto operativo.

Il modulo è l’interfaccia della procedura, non sostituisce le regole di accesso. Il codice di automazione e le modifiche consentite all’avvio devono mantenere l’operazione entro i target previsti. I permessi dei template di Semaphore UI non forniscono permessi separati su inventari e credenziali per combinare liberamente le risorse.

GitLab Self-Managed supporta LDAP e OpenID Connect, e GitLab offre anche l’autenticazione a due fattori a livello di account. Semaphore UI Pro offre TOTP locale e supporta LDAP e OIDC. L’identità centralizzata verifica chi accede, mentre ruoli di progetto e permessi dei template continuano a definire le operazioni che quella persona può eseguire.

Segreti

Un operatore dovrebbe selezionare una connessione predisposta anziché incollare ripetutamente password negli input di avvio. Gli archivi di segreti esistenti possono fornire queste connessioni senza diventare parametri del job.

SupportatoParzialmente supportatoNon supportato
Segreti: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Segreti salvati SìKey Store e variabili segrete SìVariabili mascherate o nascoste
HashiCorp Vault SìPro SìPremiumSegreto configurato nel job
AWS Secrets Manager SìEnterprise SìPremiumSegreto configurato nel job
Azure Key Vault SìEnterprise SìPremiumSegreto configurato nel job
Segreti OpenBao esterni SìProIntegrazione con il Key Store SìRecupero tramite CLI configurato nel job
Credenziali Devolutions Server SìEnterpriseIntegrazione con il Key Store SìChiamata all’API delle credenziali configurata nel job
Segreti CyberArk SìEnterpriseArchiviazione tramite API REST PVWA SìRecupero CCP in un job Ansible

I job di GitLab usano variabili CI/CD che possono essere mascherate o nascoste, e le integrazioni Premium per segreti esterni richiedono valori a servizi come HashiCorp Vault, AWS Secrets Manager, Azure Key Vault e Google Cloud Secret Manager. GitLab 19.5 offre anche Secrets Manager basato su OpenBao per Premium e Ultimate, fatturato tramite GitLab Credits per le licenze online, con un componente aggiuntivo per le licenze Self-Managed offline. I job ne richiedono esplicitamente i segreti, con accesso regolato dai permessi configurati e registrato negli eventi di audit.

Il Key Store di Semaphore UI distingue le chiavi SSH dalle credenziali di accesso e password, incluse password e token di accesso. Un repository seleziona la credenziale per il checkout, un inventario Ansible seleziona le credenziali degli host ed eventualmente sudo, e il template può usare una password Ansible Vault. Queste relazioni fanno parte dell’operazione salvata, quindi un collega che avvia un rinnovo di certificati o un’attività di servizio non deve incollare ogni segreto di connessione nel survey.

Per un team che usa già un vault, Semaphore UI Pro integra HashiCorp Vault e OpenBao. Enterprise aggiunge AWS Secrets Manager, Azure Key Vault e Devolutions Server. Per lo stesso deployment, GitLab fornisce i segreti tramite variabili dei job o integrazioni configurate. Semaphore UI associa riferimenti alle credenziali a repository, inventari e template, così gli operatori riutilizzano le connessioni preparate all’avvio. Un comando può anche recuperare direttamente un segreto quando un’integrazione nativa non copre il servizio richiesto, con il recupero configurato e mantenuto dal team.

Per OpenBao e Devolutions Server, Semaphore UI offre integrazioni dedicate nel Key Store, rispettivamente in Pro ed Enterprise. I job di GitLab possono recuperare un valore OpenBao tramite la sua CLI o una voce Devolutions Credentials tramite la sua API. Il team mantiene autenticazione, recupero e inserimento del valore nel job, anziché selezionare una connessione salvata nel Key Store. È una strada valida quando vault esistente e codice del job coprono già la procedura.

Semaphore UI Enterprise integra CyberArk tramite l’API REST PVWA. Un job GitLab che esegue Ansible può recuperare credenziali CyberArk tramite la collection cyberark.pas e Central Credential Provider, con la collection e l’autenticazione dell’applicazione configurate nell’ambiente di esecuzione del job. Questi approcci usano interfacce CyberArk diverse, quindi l’integrazione deve corrispondere al servizio CyberArk utilizzato dal team.

Log e audit

Dopo l’applicazione delle patch o il deployment, il team ha bisogno sia dei risultati di esecuzione sia di un registro di chi ha modificato o avviato l’operazione. Questi registri rispondono a domande diverse.

SupportatoParzialmente supportatoNon supportato
Log e audit: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Cronologia di esecuzione e log Sì Sì
Presentazione dei risultati Ansible SìProRiepilogo integrato di host e attività SìCallback Ansible JUnit e pubblicazione dei report configurati
Cronologia di audit amministrativo SìAbilitazione della registrazione, vista amministratore SìPremiumEventi di audit di progetto e gruppo
Inoltro SIEM SìProSyslog TLS o Splunk HEC SìUltimateStreaming degli eventi di audit del gruppo

Semaphore UI conserva stato dell’attività, dettagli di avvio, revisione del repository e output. Pro aggiunge un riepilogo integrato degli host e delle attività Ansible, rendendo più semplice risalire da un controllo fallito sull’intera flotta agli host interessati. GitLab conserva i log dei job e può mostrare i risultati Ansible tramite artefatti di report JUnit configurati. I report dei test alimentano anche le viste delle merge request e delle pipeline, utili quando i controlli dell’infrastruttura fanno parte della revisione del codice.

Per le revisioni degli accessi e le indagini sugli incidenti, Semaphore UI registra autenticazione, modifiche alle risorse e attività dei task quando l’audit è abilitato. La vista di audit dell’amministratore copre tutti i progetti in ogni edizione. GitLab Premium e Ultimate offrono pagine di audit per gruppi e progetti, mentre la cronologia dell’account Free copre gli accessi riusciti. I permessi di audit e i tipi di evento di GitLab seguono gli ambiti di gruppo, progetto e istanza.

Semaphore UI Pro aggiunge filtri, esportazione CSV o JSONL e inoltro tramite TLS Syslog o Splunk HEC. GitLab Ultimate trasmette gli eventi di audit dei gruppi in JSON a destinazioni esterne. Entrambi possono alimentare un sistema SIEM, ma gli eventi e l’ambito differiscono dal normale output dei job.

Integrazioni

Un evento di rilascio o un sistema di monitoraggio può avviare un’operazione predisposta e inviarne il risultato al team. È utile confrontare quanta parte di questa connessione si configura direttamente nel prodotto.

SupportatoParzialmente supportatoNon supportato
Integrazioni: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Avvio e ispezione dei job tramite API Sì Sì
Trigger webhook in ingresso SìCriteri di corrispondenza delle richieste ed estrattori di valori SìWebhook di attivazione della pipeline
Notifiche in chat SìSlack, Teams, Telegram e altri canali SìIntegrazioni per le notifiche del progetto

Semaphore UI offre un’API autenticata per le attività ed endpoint di integrazione in ingresso. I matcher filtrano una richiesta e gli estrattori mappano header o campi del corpo sugli input dell’attività. GitLab espone API di trigger e URL webhook che avviano una pipeline per un branch o un tag. Le integrazioni di progetto collegano anche gli eventi di delivery a sistemi di gestione dei ticket e servizi esterni. Un avviso del monitoraggio può quindi avviare una diagnostica preparata senza un nuovo commit di codice.

Semaphore UI include canali di notifica e-mail, Slack, Microsoft Teams, Telegram, Rocket.Chat, DingTalk e Gotify. I template e gli avvisi di progetto selezionano la destinazione dei risultati. GitLab offre integrazioni di progetto come notifiche Microsoft Teams, e-mail sullo stato delle pipeline e la propria app Slack. Un link nella notifica aiuta i colleghi a consultare un’esecuzione, ma non costituisce di per sé un’approvazione all’interno della chat.

Automazione assistita dall’IA

Un assistente di programmazione può aiutare a preparare un’operazione o indagare un’esecuzione non riuscita usando API documentate, esempi di configurazione e il relativo output.

SupportatoParzialmente supportatoNon supportato
Automazione assistita dall’IA: GitLab e Semaphore UI
Criteri Semaphore UI GitLab
Accesso MCP SìConnettore della community SìServer MCP GitLab

Entrambi i prodotti offrono documentazione pubblica e API che assistenti come Claude Code e Codex possono consultare per preparare configurazioni o analizzare l’output dei job. Lo YAML della pipeline GitLab fornisce all’assistente la configurazione di delivery, mentre l’API di Semaphore UI espone l’operazione salvata e le sue risorse di progetto. Questo permette assistenza nella configurazione e nella diagnosi senza rendere automaticamente corrette le modifiche generate.

GitLab 19.5 include un server MCP generalmente disponibile, con strumenti che dipendono dall’accesso e dalle funzionalità concesse in licenza. Semaphore UI dispone di un connettore MCP della community per la propria API e ha annunciato il supporto MCP ufficiale per Pro nella versione 2.21.0. L’accesso del connettore segue l’account e le credenziali forniti, quindi l’assistente dovrebbe ricevere un ambito adeguato all’operazione.

Licenze e supporto

GitLab copre la piattaforma di sviluppo attorno all’automazione, mentre Semaphore UI fornisce un servizio mirato alla sua esecuzione. Il confronto economico dipende dalle responsabilità che il team deve acquistare e gestire, considerando anche i sistemi già disponibili.

Opzioni open source e commerciali

GitLab Community Edition ha licenza MIT, mentre Enterprise Edition include funzionalità commerciali con licenze separate. I piani Free, Premium e Ultimate coprono requisiti diversi, con approvazioni dei deployment e integrazioni native documentate per segreti esterni che richiedono Premium. La gestione dello state Terraform/OpenTofu da parte di GitLab è disponibile in Free. Le offerte ospitate includono quote di calcolo e archiviazione, mentre i runner autogestiti usano infrastruttura fornita dal team.

Semaphore UI Community ha licenza MIT e copre template di base, ruoli di progetto, pianificazioni e workflow. Pro ed Enterprise aggiungono funzionalità nella stessa famiglia di prodotti. Tutti i piani attuali di Semaphore UI sono self-hosted. Per un team che ha già un servizio Git e ha bisogno di un servizio Ansible e IaC, questo mantiene il nuovo servizio concentrato sull’automazione, senza introdurre una piattaforma di sviluppo più ampia solo per quei job.

Funzionalità a pagamento e supporto

Semaphore UI Pro aggiunge il backend di state, i runner di progetto e l’esecuzione Docker per singola attività descritti qui. Enterprise aggiunge l’esecuzione delle attività in Kubernetes, i ruoli personalizzati e i permessi dei template. La scelta dell’edizione segue il modello di esecuzione e delega richiesto, senza presumere che ogni operatore abbia bisogno di controlli avanzati.

GitLab Free non include supporto tecnico, mentre Premium e Ultimate includono supporto del fornitore con obiettivi di risposta basati sull’impatto del problema. Semaphore UI Community offre assistenza senza garanzie di servizio, Pro include supporto del fornitore durante l’orario lavorativo, ed Enterprise offre impegni di supporto personalizzati e assistenza con onboarding, configurazione, aggiornamenti e migrazione. Confrontate il piano e l’accordo effettivi per l’ambiente da gestire.

Manutenzione e responsabilità

Per la stessa procedura di deployment o manutenzione, GitLab conserva comandi, sequenza e riferimenti alla configurazione nello YAML della pipeline. Semaphore UI conserva impostazioni dello strumento, inventario, credenziali e gruppi di variabili insieme a Task Template riutilizzabili. Spostare queste operazioni in Semaphore UI può sostituirne la configurazione CI, mentre codice di automazione e relative revisioni restano in GitLab. Mantenere i job in GitLab è ragionevole quando input di avvio, permessi e modello di esecuzione sono già adatti alle persone che li usano.

Come scegliere

Scegliete in base alle persone che usano l’automazione e alle risorse che la piattaforma dovrebbe organizzare per loro. La capacità di eseguire un comando è comune. La differenza maggiore è se il lavoro circostante è una pipeline di delivery, un’operazione infrastrutturale preparata o entrambi.

Quando scegliere GitLab CI/CD

Scegliete GitLab CI/CD quando l’automazione deve restare strettamente collegata al processo di sviluppo e revisione.

  • Revisione del codice, test e artefatti formano un’unica catena. Le modifiche all’infrastruttura e alle applicazioni vengono verificate nelle merge request, con risultati delle pipeline ed evidenze dei deployment conservati accanto ad esse.
  • I componenti delle pipeline e i controlli degli ambienti sono essenziali. Molti progetti condividono sequenze di job versionate, oppure i deployment dipendono dalle regole di approvazione degli ambienti protetti.
  • Le pipeline esistenti servono efficacemente gli operatori. Input, pianificazioni, runner e controlli di accesso coprono già le attività di manutenzione senza un’interfaccia separata.

Quando scegliere Semaphore UI

Scegliete Semaphore UI quando condividere e gestire l’automazione infrastrutturale è un’esigenza distinta, anche se il codice resta in GitLab.

  • Inventari e credenziali Ansible vengono riutilizzati ogni giorno. Patch, diagnostica, gestione dei certificati e deployment condividono gli ambienti di destinazione, senza richiedere ogni volta una configurazione separata del job.
  • I colleghi hanno bisogno di operazioni preparate. Gli ingegneri mantengono template e configurazione condivisa, mentre gli operatori usano survey, pianificazioni e cronologia delle attività. I ruoli di progetto Community coprono l’esecuzione condivisa, con permessi Enterprise per template specifici.
  • La procedura coinvolge più strumenti di automazione. I template diretti per Terraform/OpenTofu, Terragrunt, Bash, PowerShell e Python si uniscono alle operazioni Ansible in un workflow e restano riutilizzabili indipendentemente.
  • Il servizio deve adattarsi all’infrastruttura esistente. Le opzioni di installazione con binario, pacchetto e Docker permettono di ospitare l’interfaccia operativa accanto al servizio Git esistente, con runner vicino ai sistemi privati.

Usare Semaphore UI con GitLab CI/CD

Per il rilascio di un’applicazione, GitLab può gestire la revisione del codice, eseguire test e pubblicare un’immagine container o un pacchetto versionato. Un job della pipeline invia poi il riferimento immutabile dell’artefatto a un template di deployment preparato in Semaphore UI tramite l’API autenticata delle attività. Semaphore UI usa inventario, credenziali e variabili salvati per distribuire tramite un runner con accesso all’ambiente di destinazione. L’automazione del deployment recupera l’artefatto dal registro o repository del team.

Il job GitLab deve conservare l’identificatore restituito dell’attività, verificarne lo stato finale e riportarlo nel risultato della pipeline. L’accettazione di una richiesta di avvio mette soltanto l’attività in coda. Anche un webhook in ingresso può avviare un’operazione, con la segnalazione del completamento implementata dall’integrazione. È un collegamento che il team costruisce tramite le API, non un’integrazione bidirezionale automatica dei deployment.

Dopo il rilascio, i colleghi possono usare Semaphore UI per la diagnostica o il riavvio di un servizio, mentre un template notturno di controllo dei certificati continua a seguire la propria pianificazione. Queste operazioni usano la configurazione infrastrutturale preparata indipendentemente da un nuovo commit. GitLab conserva revisione del codice, report dei test e cronologia degli artefatti, mentre Semaphore UI fornisce l’interfaccia quotidiana all’ambiente in esecuzione.

Domande frequenti

GitLab CI/CD può eseguire Ansible e la manutenzione dell’infrastruttura?

Sì. I job possono invocare Ansible, Terraform/OpenTofu e altri strumenti da riga di comando tramite il proprio ambiente runner. Possono essere eseguiti manualmente o secondo una pianificazione senza un nuovo commit. Semaphore UI aggiunge un diverso modello di configurazione attraverso template specifici per strumento, inventari condivisi, credenziali e gruppi di variabili.

I playbook possono restare in GitLab quando si usa Semaphore UI?

Sì. Collegate il repository GitLab esistente, configurate la credenziale per il checkout, poi selezionate playbook e inventario in un Task Template di Semaphore UI. GitLab può continuare a gestire la revisione del codice mentre Semaphore UI esegue l’operazione preparata.

Quale prodotto può archiviare lo state Terraform/OpenTofu?

Lo state gestito da GitLab è disponibile in Free. Semaphore UI Pro fornisce un backend HTTP per lo state, con workspace e gestione dall’interfaccia. Entrambi possono anche eseguire codice che usa un backend esterno. Configurate blocco e gestione dei piani salvati per il processo di esecuzione effettivo, anziché dedurli dalla presenza di un backend di state.

L’esecuzione delegata richiede Semaphore UI Enterprise?

Non per la normale esecuzione condivisa a livello di progetto. Community include il ruolo Task Runner, che può avviare i template del proprio progetto con accesso in sola lettura alle altre risorse. Enterprise aggiunge ruoli personalizzati e permessi a livello di template quando un collega deve poter eseguire solo operazioni selezionate.

Una pipeline GitLab può attendere un deployment di Semaphore UI?

Sì, tramite un’integrazione implementata dal team. Avviate l’attività preparata con l’API autenticata, conservatene l’identificatore, poi verificate lo stato e comunicate il risultato finale a GitLab. Una richiesta di avvio accettata non dimostra che il deployment sia terminato.

Questo articolo è stato utile?

Fonti

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

Confronto a cura del team Semaphore UI, basato sulla documentazione, i repository e le informazioni sui prodotti elencati sopra. Le date di consultazione sono indicate per ciascuna fonte.