小ネタです。
dd-time を使って CircleCI の run
を使ったコマンドの実行時間をどう計測したらいいのかちょっと考えました。
以前、コマンドの実行時間を DataDog に送るツール dd-time を作りました。
これは基本的に以下のように引数として --
以降に実行するコマンドを指定します。
$ dd-time -m dd_time.execution_time -t command:docker-build -- docker build .
実行するスクリプトを標準入力で渡したい場合はこうします。
$ curl https://example.com/install.sh | dd-time -m dd_time.execution_time -- sh
もちろんシェルスクリプトである必要はなくて例えば Python だったらこうなります。
$ curl https://example.com/setup.py | dd-time -m dd_time.execution_time -- python
CircleCI の run
では shell
オプションで shell を指定できます。
https://circleci.com/docs/2.0/configuration-reference/#run
なので command 全体の時間を計測したい場合は、 shell を次のようにします。
- run:
name: test dd-time
shell: /usr/local/bin/dd-time -m dd_time.test -- sh -eo pipefail
command: |
echo start
sleep 5
echo end
こうすると shell
以外を弄ることなく実行時間を計測して DataDog に送ることが出来ます。
この shell
のカスタマイズは dd-time に限らず使えるかも知れないですね。
- ログをどっかに送ったりとか
- コマンドが失敗したらエラーを握りつぶしつつどっかに通知したりとか
- etc
以上、小ネタでした。