Semaphore v2.17 apresenta novas funcionalidades e melhorias para automação de infraestrutura e equipes de DevOps. Esta versão foca em melhorar a experiência do desenvolvedor e em simplificar fluxos de trabalho de infraestrutura como código.

Visão geral das principais funcionalidades

Funcionalidades

Nome de emissor personalizado no app TOTP

O Semaphore v2.17 introduz uma nova opção para personalizar o nome do emissor exibido nos apps autenticadores TOTP (Time-based One-Time Password).

Objetivo:
O nome do emissor ajuda os usuários a identificar qual conta no app autenticador pertence ao Semaphore, especialmente útil ao gerenciar contas de múltiplas organizações ou ambientes.

Como configurar:

Você pode definir o nome do emissor de duas maneiras:

  1. Variável de ambiente

    Defina a variável de ambiente SEMAPHORE_TOTP_ISSUER com o nome desejado ao iniciar o Semaphore.

    Exemplo (Docker Compose):

    environment:
      - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore
    

    Exemplo (Standalone):

    SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server
    
  2. Arquivo de configuração

    No seu arquivo config.json, defina a seguinte opção dentro da seção auth:

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

Precedência:
Se a variável de ambiente e a opção no arquivo de configuração estiverem ambas definidas, a variável de ambiente (SEMAPHORE_TOTP_ISSUER) tem precedência.

Valor padrão:
Se não definido, o nome do emissor padrão será Semaphore.

Resultado:
Quando os usuários adicionarem sua conta TOTP do Semaphore a um app autenticador, o nome do emissor selecionado será exibido, facilitando distinguir entre múltiplas contas.

Para detalhes completos sobre todas as variáveis de ambiente disponíveis, veja a documentação de variáveis de ambiente de instalação.

Tarefas agendadas de execução única

O Semaphore agora suporta agendamentos de execução única além de agendamentos cron. Use isso quando você precisar que uma tarefa rode em uma data e hora específicas e seja executada apenas uma vez.

Casos de uso:

Views personalizáveis

As views de template agora são mais personalizáveis, permitindo ajustar o que é mostrado e como é organizado para combinar melhor com seu workflow.

  1. Agora você pode mover a aba All para qualquer posição na barra.

  2. Você pode ocultar a aba All completamente para usuários regulares do projeto.

  3. Você pode alterar a ordenação padrão de templates para uma view específica.

Melhorias típicas incluem:

Parar todas as tarefas

Agora você pode parar todas as tarefas em execução de um template com uma única ação. Isso ajuda a interromper rapidamente um rollout ou cancelar jobs que foram iniciados por engano.

Suporte a servidor syslog

O Semaphore agora pode encaminhar logs para um servidor syslog externo, facilitando centralizar a coleta de logs e integrar com pipelines existentes de monitoramento e alertas.

config.json:

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

Variáveis de ambiente:

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

Rollback de migrações do banco de dados

Migrações do banco de dados agora podem ser revertidas (rollback). Isso torna mais seguro se recuperar de um problema de upgrade e pode simplificar downgrades quando necessário.

semaphore migrate --undo-to 2.16

Arrastar e soltar para variáveis de survey, args de CLI, etc.

Agora você pode reordenar variáveis de survey, argumentos de CLI e outros itens de lista via arrastar e soltar, tornando os templates mais fáceis de manter e revisar.

Exportação e importação de projetos via CLI

O Semaphore agora suporta importação automática de projetos.

O container Docker aceita as variáveis de ambiente SEMAPHORE_IMPORT_PROJECT_FILE e SEMAPHORE_IMPORT_PROJECT_NAME para isso.

Se você precisar importar um projeto via CLI, use o seguinte comando:

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

Se o nome do projeto não for fornecido, será usado o nome do projeto a partir dos metadados do backup.

Para importar todos os projetos de um diretório, use o seguinte comando:

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

Para exportar um projeto, você pode usar o seguinte comando:

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

Se você quiser exportar todos os projetos para um diretório:

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

Ao combinar esse comando com cron, você pode implementar backups automáticos de projetos.

Ferramenta CLI para migrar de BoltDB para SQLite/MySQL/Postgres

Um novo migrador via CLI ajuda a mover dados do Semaphore de BoltDB para SQLite, MySQL ou Postgres. O BoltDB está sendo descontinuado e será removido na v3.0.

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

Suporte ao Devolutions Server (Enterprise)

Instalações Enterprise agora podem integrar o Devolutions Server como backend de secrets, semelhante ao HashiCorp Vault.

Papéis personalizados e RBAC estendido (Enterprise)

A UI do Semaphore agora oferece suporte a papéis personalizados em nível de projeto e global, permitindo controle de acesso granular para tarefas e templates. O RBAC foi estendido com controles mais granulares em recursos do Semaphore, ajudando equipes a aplicar o princípio do menor privilégio com mais precisão.

Usuários Enterprise podem definir papéis personalizados com permissões ajustadas para corresponder às necessidades de acesso da organização.

Donos e gerentes de projeto podem atribuir esses papéis a templates específicos e conceder permissões direcionadas para executar, visualizar ou gerenciar tarefas.

Alta disponibilidade active-active (Enterprise)

Em uma configuração padrão de nó único, um processo do Semaphore faz tudo: serve a UI web, executa jobs agendados, executa tarefas e envia atualizações em tempo real para os navegadores. Se esse processo cair, tudo para.

Com HA active-active, você executa múltiplas instâncias idênticas do Semaphore atrás de um load balancer. Todas ficam totalmente ativas ao mesmo tempo — não há “primário” nem “standby”. Qualquer nó pode atender qualquer requisição, executar qualquer tarefa ou disparar qualquer agendamento. Elas se coordenam via uma instância Redis compartilhada para evitar conflitos.

Todas as instâncias se conectam aos mesmos dois backends:

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

Logging aprimorado

O logging foi aprimorado para fornecer mais contexto e clareza, ajudando você a solucionar falhas e entender o que aconteceu durante uma execução.

Chave de assinatura via variável de ambiente (PRO)

Chaves de assinatura PRO agora podem ser fornecidas via variável de ambiente, o que é útil para deploys containerizados e rollouts orientados por CI/CD.