タスク/リソースが実行されたときにイベントを発生させようとしています。現在の考え方は、タスクのスクリプトでイベントをトリガーすることです。コンコースのイベントをトリガーする
イベントで送信される情報の一部としてメタデータ変数(BUILD_ID、BUILD_NAME)が必要なため、リソース(メタデータにアクセスする唯一の方法)を作成してタスクに渡しました。 しかし、問題は私がタスクのこれらの変数にアクセスすることができないということです。
これを解決するための戦略はありますか?
タスク/リソースが実行されたときにイベントを発生させようとしています。現在の考え方は、タスクのスクリプトでイベントをトリガーすることです。コンコースのイベントをトリガーする
イベントで送信される情報の一部としてメタデータ変数(BUILD_ID、BUILD_NAME)が必要なため、リソース(メタデータにアクセスする唯一の方法)を作成してタスクに渡しました。 しかし、問題は私がタスクのこれらの変数にアクセスすることができないということです。
これを解決するための戦略はありますか?
リソース内のデータにアクセスする場合は、リソースを実行中のタスクに渡す必要があります。
チェックアウトこの例https://gist.github.com/gdenn/91e9d5369f7e0e289960e56cd69e942f
を私たちは、リソースsome_git_resource
とタスクuse_demo_resource_and_do_something
を保持している仕事demo_job
を持っています。
some_resource
内のデータにタスクがアクセスできるようにするには、リソースをタスクの入力として宣言する必要があります。
これは、15行目に変数名とパスを指定することによって行います。& 16. nameプロパティでは、リソース名を参照し、パス変数では、ドッカーコンテナ内のリソースフォルダのパスを指定します。
パイプラインをアップロードしてジョブをトリガーします。実行中にfly hijack
コマンドを使用して、タスクuse_demo_resource_and_do_something
のドッカーコンテナにログインします。コンテナには、ルートにsome_git_resource
という名前のフォルダがあります。
タスクの入力が1つだけの場合は、パスを.
に設定することもできますが、これは1つの入力に対してのみ機能することに注意してください。タスクで複数の入力を使用する場合は、適切なpath
を使用する必要があります。
タスク内でスクリプトに問題がある場合は、コンテナをハイジャックしてみてください。多くの場合、あなたの仕事がなぜこのように働いていないのか、より多くの洞察が得られます。 demo_job内のdemo_taskをハイジャックするには、次のコマンドを使用します。fly -t <your_target> hijack -j demo_job/demo_task
詳細については、コンコースタスクのドキュメントをチェックしてください。
ありがとうRapdrei。そのハイジャックコマンドを自動化する方法はありますか?理想的には、イベントをパイプラインの一部として配置したいと思っています。現在、メタデータを収集してタスクに渡すリソースを使用してスクリプト内にイベントを配置しています。 – jflroes
私たちには誤解があります。ハイジャックコマンドは、パイプラインをデバッグするためのコマンドです。パイプラインでは使用しないでください。 タスクが実行されるドッカーコンテナで何が起こっているのかを知ることは非常に便利です。 – gdenn