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

タスク

タスクはタスクテンプレートの 1 回の実行です。Ansible playbook、Terraform/OpenTofu/Terragrunt の構成、または Bash、PowerShell、Python のスクリプトを 1 回実行したものを指します。各タスクは独自のログ、ステータス、詳細を保持するため、何がいつ誰によって、リポジトリのどのリビジョンで実行されたかをいつでも確認できます。

タスクの開始​

プロジェクトで タスクランナー 以上のロールが必要です(チームを参照)。タスクは次の 2 か所から開始できます。

  • タスクテンプレート で、テンプレートの行にある 再生 ボタンをクリックします。
  • テンプレートのページで、右上隅のボタンをクリックします。ラベルはテンプレートの種類に応じて 実行、ビルド、デプロイ のいずれかになります。

どちらの場合も 新しいタスク のダイアログが開きます。その内容は、アプリケーションとテンプレートで有効にしたオプションによって異なります。

Ansible テンプレ��ートの新しいタスクのダイアログ

フィールド表示される対象説明
メッセージすべてのテンプレート任意のメモです。タスクとともに保存され、履歴とアラートに表示されます。
ビルドバージョンデプロイテンプレートデプロイするビルドです。既定では最新の成功したビルドが選択されます。ビルド・デプロイテンプレートを参照してください。
サーベイ変数サーベイ変数があるテンプレート変数ごとに 1 つの入力項目です。必須の変数は入力する必要があります。
ドライラン --check、差分 --diffAnsibleplaybook をチェックモードで実行する、またはファイルの変更を表示します。その他の Ansible のプロンプト(Limit、Tags、Skip tags、Debug)は、テンプレートで有効にすると表示されます。プロンプトを参照してください。
Plan、Destroy、Auto Approve、Upgrade、ReconfigureTerraform、OpenTofu、Terragruntplan のみを実行する、または -destroy、-auto-approve、-upgrade、-reconfigure を追加します。Terraform/OpenTofu を参照してください。
ブランチ、インベントリ、CLI 引数すべてのアプリケーションこの実行に限りテンプレートの値を上書きします。各上書きはテンプレートの設定で許可されている必要があります。

Terraform テンプレートの新しいタスクのダイアログ

実行(または ビルド / デプロイ)をクリックすると、タスクがキューに入ります。

キューと並列実行​

同じテンプレートのタスクは、テンプレートで 並列タスクを許可する が有効になっていない限り順番に実行されます。また、プロジェクトの設定の 並列タスクの最大数 で、プロジェクト全体の実行中タスク数を制限することもできます。待機が必要なタスクは waiting のステータスのまま、空きができると自動的に開始されます。

タスクのウィンドウ​

UI 上のどこかでタスクをクリックすると、タスクのウィンドウが開きます。ヘッダーには、テンプレート、タスク番号、リポジトリのリビジョンのコミットメッセージ、ステータスバッジ、タスクを開始したユーザーと開始時刻、所要時間が表示されます。矢印のアイコンでウィンドウを全画面に拡大できます。

タスクのログ

タブ内容
ログタイムスタンプ付きのタスクの出力です。タスクの実行中はログがストリーミングされます。生ログ は未加工の出力を新しいブラウザータブで開きます。
詳細テンプレートの情報(アプリケーション、テンプレート)、コミットの情報(メッセージとハッシュ)、および実行の情報(メッセージ、作成時刻、開始時刻、終了時刻、所要時間、設定されている場合はランナー、ブランチ、limit、実行に使用された変数)です。
サマリー (Pro)Ansible のタスクの場合: 正常に完了したホスト数と失敗したホスト数、およびサーバーごとの失敗したタスクの表です。

タスクの詳細

タスクのサマリー

タスクのステータス​

ステータス意味
waitingタスクはキューに入っています。同じテンプレートの別のタスクが実行中、プロジェクトの上限に達している、または利用できるランナーがまだありません。
startingランナーがタスクを取得し、リポジトリと環境を準備しています。
waiting_confirmationツールが質問を表示し、ユーザーの応答を待っています。たとえば Auto Approve なしの terraform apply や、入力を読み取るスクリプトの場合です。タスクのウィンドウで 承認 または 却下 を使用します。
confirmedユーザーが質問に承認しました。タスクは続行します。
rejectedユーザーが質問を却下しました。タスクは終了します。
runningplaybook またはスクリプトを実行しています。
stopping停止が要求され、プロセスを終了させています。
stoppedタスクはユーザーによって停止されました。
success終了コード 0 で完了しました。
error0 以外の終了コードで完了した、または開始に失敗しました。UI では 失敗 と表示されます。

タスクの停止​

実行中のタスクのウィンドウを開き、停止 をクリックします。Semaphore が終了シグナルを送信し、プロセスが終了するまでタスクは stopping のステータスになります。プロセスが反応しない場合、ボタンが 強制停止 に変わります。これをクリックすると、プロセスを即座に強制終了します。

1 つのテンプレートの実行中およびキュー待ちのすべてのタスクを停止するには、テンプレートのページを開いて すべて停止 を使用します。ドロップダウンには 停止 と 強制停止 の両方が用意されています。

すべて停止のメニュー

タスクを再実行する​

テンプレートの タスク タブでは、各行に 再実行 ボタンがあります。これをクリックすると、そのタスクのメッセージとパラメーターが入力された状態で新しいタスクのダイアログが開きます。

再実行ボタンが表示されたテンプレートのタスク

タスクが一覧表示される場所​

  • ダッシュボード → 履歴: プロジェクトのすべてのタスクです。履歴を参照してください。
  • テンプレートのページ → タスク: 1 つのテンプレートのタスクです。
  • タスクテンプレート: 行の左側にある矢印で展開すると、一覧から離れずにそのテンプレートの直近のタスクを確認できます。

環境変数​

タスクは、アプリケーション(Ansible、Terraform、Bash、PowerShell、Python)にかかわらず、Semaphore 内でタスクを識別するための変数を受け取ります。

変数値
SEMAPHORE_TASK_IDタスクの ID
SEMAPHORE_PROJECT_IDタスクが属するプロジェクトの ID
SEMAPHORE_WORKFLOW_IDタスクがワークフロー実行のノードである場合のワークフロー ID
SEMAPHORE_WORKFLOW_RUN_IDタスクが属するワークフロー実行の ID
SEMAPHORE_WORKFLOW_VERSIONタスクが属するワークフロー実行のバージョン(実行にバージョンがある場合)
SEMAPHORE_WORKFLOW_URLワークフロー実行ページへのリンク(サーバー設定の web_host が必要です)
SEMAPHORE_OUTPUTS_FILEワークフローのタスクが出力を書き込むファイルのパス

ワークフローによって開始されていないタスクには、ワークフロー変数は設定されません。

アプリ固有の変数や git と SSH の補助変数を含む完全な一覧は、リファレンスの タスクの環境変数 にあります。

特定の場合には、以下の変数も設定されます。

Bash の例:

echo "Task $SEMAPHORE_TASK_ID of project $SEMAPHORE_PROJECT_ID"
if [ -n "$SEMAPHORE_WORKFLOW_RUN_ID" ]; then
echo "Started by workflow run: $SEMAPHORE_WORKFLOW_URL"
fi

ログの保持​

既定では、タスクとログは無期限に保持されます。各テンプレートの直近のタスクのみを保持するには max_tasks_per_template を使用します。履歴を参照してください。