Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

たくさんのステップを手動で実行しているものを自動化するため方法の1つ

$
0
0

概要

テスト時や、開発中のプログラムの実行が手動で8ステップとかあるときに、どうやって自動化するかの方法について

結論

うまくいくケースのみ考えて、スクリプトにしてしまう。

3ステップにするとこんなかんじ

ステップ1、全体を実行するスクリプトをつくってしまう。

以下のようなbashスクリプトを用意する
今回は ./testscript.shとする

set -euxをつけておく。

  • eエラーがおきたら止まるようにする
  • u未定義変数があったら止まるようにする
  • x実行したコマンドを出力する
#!/bin/bashset-euecho"Step 1 start"date# 実行したいコマンド、今は手で入力しているもの# cwltool step1.cwl# nextflow step1.nfecho"Step 1 end"date# n step分echo"ALL STEP IS OK!!"

ステップ2、定期的に実行するようにする

次に自分のcronの設定をし、
定期的に正しく実行できることを確認する。

実行されるディレクトリへ、明示的に cdしておく。

ログの回収するファイル名を、日付と時間にしておくと、
テストが失敗したときに、以前の結果と比べられるので、よかった。

ステップ3、通知をするようにする。

うまくいったか、いかなかったかを、Slack へ通知する
通知は、毎日おこなったほうがよいと考えている
成功だけとか、失敗だけとかにしておくと、通知システムの故障時など、通知がこないこと自体にきづかない。

  • ./testscript.shが、自動実行スクリプト本体
  • ./notify.shは、Slackへ通知をするスクリプトとする。
    • この部分は、 curlなどで直接実行しても良い。
#!/bin/bashRET=./testscript.sh
if[${RET}-ne 0 ];then# エラー時の処理# slackとか使ってなかったら、echo "ERROR" でもよい
  ./notify.sh ERROR
else# 成功時の処理# slackとか使ってなかったら、echo "SUCCESS" でもよい
  ./notify.sh SUCCESS
fi

コツ

必要なものはそろっているとして、スクリプトを書き始めてしまって良い。
準備する部分を書き始めると大変なので、それはあとで書けば良いと思う。

とにかく、全部実行できるものがひとつできあがると、いろいろ追加しやすかったという経験があります。


Viewing all articles
Browse latest Browse all 2722

Trending Articles