3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-10-30

概要

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

結論

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

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

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

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

set -eux をつけておく。

  • e エラーがおきたら止まるようにする
  • u 未定義変数があったら止まるようにする
  • x 実行したコマンドを出力する
# !/bin/bash
set -eu

echo "Step 1 start"
date
# 実行したいコマンド、今は手で入力しているもの
# cwltool step1.cwl
# nextflow step1.nf
echo "Step 1 end"
date

# n step分

echo "ALL STEP IS OK!!"

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

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

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

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

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

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

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

コツ

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

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

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?