メインコンテンツまでスキップ

設定ファイル

設定ファイルの作成

Semaphore はコア設定に config.json ファイルを使用します。このファイルは、組み込みツールを使って対話的に、または Web ベースのコンフィギュレーターで生成できます。

CLI で生成する

設定ファイルを対話的に生成するには、次のコマンドを使用します:

  • Semaphore サーバーの場合:

    semaphore setup
  • Semaphore ランナーの場合:

    semaphore runner setup
    ヒント

    ランナーの設定の詳細については、ランナーのセクションを参照してください。

Web サイトで生成する

あるいは、Web ベースの対話型コンフィギュレーターを使用することもできます:

設定ファイルの例

Semaphore は、次のような内容の config.json 設定ファイルを使用します:

{
"mysql_test": {
"host": "127.0.0.1:3306",
"user": "root",
"pass": "***",
"name": "semaphore"
},

"dialect": "mysql",

"git_client": "go_git",
"git_attempts": 4,

"auth": {
"totp": {
"enabled": false,
"allow_recovery": true
}
},

"use_remote_runner": true,
"runner_registration_token": "73fs***",

"tmp_path": "/tmp/semaphore",
"cookie_hash": "96Nt***",
"cookie_encryption": "x0bs***",
"access_key_encryption": "j1ia***",

"max_tasks_per_template": 3,

"schedule": {
"timezone": "UTC"
},

"log": {
"events": {
"enabled": true,
"path": "./events.log"
}
},

"process": {
"chroot": "/opt/semaphore/sandbox"
}
}

設定ファイルの使用方法

  • Semaphore サーバーの場合:
semaphore server --config ./config.json
  • Semaphore ランナーの場合:
semaphore runner start --config ./config.json

シークレットディレクトリ

Semaphore は、短期間のみ有効なシークレットファイル (例えば、ディスクから読み取る HashiCorp Vault や OpenBao のトークン) を、設定可能なディレクトリの下に保存します。

オプション環境変数説明
dirs.secretsSEMAPHORE_SECRETS_PATHシークレットファイル用のディレクトリ。デフォルト: /tmp/semaphore
secrets_path (レガシー)SEMAPHORE_SECRETS_PATH後方互換性のために残されているトップレベルの設定。dirs.secrets が未設定、またはデフォルトのパスのままの場合にのみ使用されます。

優先順位: デフォルト以外の dirs.secrets は、レガシーの secrets_path より優先されます。SEMAPHORE_SECRETS_PATH を設定すると、Semaphore は両方のフィールドにそれを適用します。

現在のレイアウトを使用した例:

{
"dirs": {
"secrets": "/var/lib/semaphore/secrets"
}
}

レガシーなインストールでは、次の形式がまだ使われている場合があります:

{
"secrets_path": "/var/lib/semaphore/secrets"
}

外部シークレットストレージから参照されるトークンファイルは、このディレクトリ内に置く必要があります。

Git 操作

Semaphore は、各実行の前にタスクのリポジトリをクローンおよび更新します。この動作は 2 つのオプションで制御します:

オプション環境変数説明
git_clientSEMAPHORE_GIT_CLIENTGit クライアントの実装: cmd_git (デフォルト、システムの git バイナリを使用) または go_git (純粋な Go 実装のクライアント)。
git_attemptsSEMAPHORE_GIT_ATTEMPTSタスクが失敗するまでにクローンおよびプル操作を試行する回数。デフォルト: 41 に設定すると、再試行なしで 1 回だけ試行します。

クローンまたはプルが失敗し、再試行回数が残っている場合、Semaphore は指数バックオフ (1 秒から開始し、試行ごとに倍増、上限 60 秒) で待機し、Git pull failed (...), retrying in 2s のようなメッセージをログに記録します。再試行はネットワーク操作にのみ適用されます。チェックアウトの失敗や認証エラーの場合も、すべての試行を使い切った時点でタスクは失敗します。

Git サーバーが断続的に利用できなくなる場合は、git_attempts を増やしてください。失敗が即時かつ継続的な場合 (認証情報の誤り、リポジトリの不存在など) は、根本的な問題を修正してください。再試行では解決しません。