Semaphore v2.17 では、インフラ自動化と DevOps チーム向けに新機能と改善を導入しました。このリリースは、開発者体験の向上と Infrastructure as Code のワークフローの効率化に焦点を当てています。

主な新機能の概要

機能

TOTP アプリでのカスタム発行者名

Semaphore v2.17 では、TOTP(Time-based One-Time Password)認証アプリに表示される発行者名をカスタマイズするオプションが追加されました。

目的:
発行者名は、認証アプリ内でどのアカウントが Semaphore に対応するものかを識別するのに役立ちます。複数の組織や環境のアカウントを管理している場合に特に有用です。

設定方法:

次の 2 つの方法で発行者名を設定できます。

  1. 環境変数

    Semaphore 起動時に環境変数 SEMAPHORE_TOTP_ISSUER を希望する発行者名に設定します。

    例(Docker Compose):

    environment:
      - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore
    

    例(スタンドアロン):

    SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server
    
  2. 設定ファイル

    config.jsonauth セクション内に次のオプションを設定します:

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

優先順:
環境変数と設定ファイルの両方が設定されている場合、環境変数 (SEMAPHORE_TOTP_ISSUER) が優先されます。

デフォルト値:
設定されていない場合、デフォルトの発行者名は Semaphore です。

結果:
ユーザーが認証アプリに Semaphore の TOTP アカウントを追加すると、設定した発行者名が表示され、複数アカウントの判別が容易になります。

利用可能な環境変数の詳細については、インストールの環境変数ドキュメント を参照してください。

一度だけ実行されるスケジュールタスク

Semaphore では cron スケジュールに加えて、特定の日時に一度だけ実行される「ワンタイムスケジュール」をサポートするようになりました。特定の日付と時刻に一回だけジョブを実行したい場合に使用します。

利用例:

ビューのカスタマイズ強化

テンプレートビューがより柔軟にカスタマイズできるようになり、表示内容や配置をワークフローに合わせて調整しやすくなりました。

  1. All タブをバーの任意の場所へ移動できます。

  2. 通常のプロジェクトユーザーに対して All タブを完全に非表示にできます。

  3. 特定のビューのデフォルトのテンプレート並び順を変更できます。

代表的な改善点:

全タスク停止

テンプレートに対して実行中のすべてのタスクを一度に停止できるようになりました。ロールアウトを素早く中断したい場合や、誤って開始したジョブをキャンセルする際に有用です。

Syslog サーバー対応

Semaphore のログを外部の syslog サーバーに転送できるようになり、ログ収集の集中化や既存の監視・アラートパイプラインとの統合が容易になります。

config.json:

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

環境変数:

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

データベースマイグレーションのロールバック

データベースマイグレーションをロールバックできるようになりました。これによりアップグレード時の問題からの回復が容易になり、必要に応じたダウングレードが簡素化されます。

semaphore migrate --undo-to 2.16

アンケート変数、CLI 引数などのドラッグ&ドロップ

アンケート変数や CLI 引数などのリスト項目を ドラッグ&ドロップで並べ替えられるようになり、テンプレートの保守とレビューがしやすくなりました。

CLI 経由のプロジェクトエクスポート/インポート

Semaphore はプロジェクトの自動インポートに対応しました。

Docker コンテナでは、環境変数 SEMAPHORE_IMPORT_PROJECT_FILESEMAPHORE_IMPORT_PROJECT_NAME を受け付けます。

CLI でプロジェクトをインポートする必要がある場合は、次のコマンドを使用できます:

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

プロジェクト名を指定しない場合、バックアップのメタデータに含まれるプロジェクト名が使用されます。

ディレクトリからすべてのプロジェクトをインポートするには、次のコマンドを使用します:

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

プロジェクトをエクスポートするには、次のコマンドを使用できます:

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

すべてのプロジェクトをディレクトリにエクスポートする場合:

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

このコマンドを cron と組み合わせることで、プロジェクトの自動バックアップを実装できます。

BoltDB から SQLite/MySQL/Postgres への移行用 CLI ツール

新しい CLI マイグレータにより、Semaphore データを BoltDB から SQLite、MySQL、Postgres へ移行できます。BoltDB は非推奨となっており、v3.0 で削除される予定です。

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

Devolutions Server サポート(Enterprise)

Enterprise 環境は Devolutions Server をシークレットバックエンドとして統合できるようになりました(HashiCorp Vault と同様の使い方が可能です)。

カスタムロールと拡張 RBAC(Enterprise)

Semaphore UI はプロジェクトレベル/グローバルレベルのカスタムロールをサポートし、タスクとテンプレートに対するきめ細かなアクセス制御が可能になりました。RBAC は Semaphore リソース全体でより粒度の高い制御へ拡張され、最小権限の原則をより正確に適用できるようになります。

Enterprise ユーザーは、組織のアクセス要件に合わせた権限を持つ カスタムロールを定義できます。

プロジェクトオーナーやマネージャーは、これらのロールを特定のテンプレートに割り当て、タスクの実行・閲覧・管理のための権限を付与できます。

Active-active 高可用性(Enterprise)

標準的な単一ノード構成では、1 つの Semaphore プロセスがすべてを担当します。Web UI の提供、スケジュールジョブの実行、タスクの実行、ブラウザへのライブ更新のプッシュなどです。このプロセスが停止すると、すべてが止まります。

Active-active HA では、ロードバランサー配下で複数の同一 Semaphore インスタンスを実行します。すべてが同時に完全アクティブであり、「primary」や「standby」は存在しません。どのノードでも任意のリクエストを処理し、任意のタスクを実行し、任意のスケジュールを発火できます。共有 Redis インスタンスを通じて調整し、重複実行などを防ぎます。

全インスタンスは同じ 2 つのバックエンドに接続します:

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

ログの改善

ログのコンテキストと明確さが向上し、失敗のトラブルシュートや、実行中に何が起きたかを把握しやすくなりました。

環境変数経由のサブスクリプションキー(PRO)

PRO のサブスクリプションキーを環境変数で提供できるようになりました。コンテナ化されたデプロイや CI/CD 主導のロールアウトで便利です。