walter の進捗と今後
TRANSCRIPT
デプロイメントツール Walter 進捗と今後
伊藤敬彦
自己紹介名前:伊藤敬彦
Twitter アカウント: takahi_i
所属:株式会社リクルートテクノロジーズ ATL
専門分野:データマイニング、情報検索、レコメンド
Walter 開発者の一人2
Walter とは?CI でのビルドパイプラインを記述するツール
設定ファイルにジョブの処理内容と実行順序を記述
YAML フォーマット
Go 言語で記述
オープンソース
https://github.com/walter-cd
開発のモチベーションCI/CD 環境の不満点の解消
不満点:
多様なCI環境:Jenkins、Go、Travis、CircleCI, Wercker etc…
設定の仕方も多様…
処理の内容だけでもどこでも動くものを使いまわしたい
UI に依存した設定
何も考えずローカルでテスト実行したい
Walter でやりたかったことプロジェクトごとに損じするビルドやデプロイの設定を Git レポジトリに同梱したい。
ビルドやデプロイをローカルでもテスト実行したい。
ホスティングだと git push してからでないと設定がうまくいったのかわからない。。
CI/CD に関する設定のほとんどを CUI だけで完結させたい。
Waler、ちょっと嬉しい機能レポータ機能(Slack、HipChat 連携)
ジョブの状況を通知
並列処理
マルチプラットフォーム
Walter の設定例pipeline:
- name: ビルドパイプラインの処理開始をHipChatに通知 (Step 1)
command: echo "build pipeline is started"
message: true
run_after:
- same: ansibleでサーバのプロビジョニング (Step 2)
command: ansible-playbook -i hosts site.yml
- name: アプリケーションのテスト実行 (rspec) (Step 2)
command: bundle exec rake test
- name: Capistranoでアプリケーションをサーバにデプロイ (Step 3)
command: bundle exec cap production deploy
-name: Serverspecでサーバ状態をテスト (Step 4)
command: bundle exec rake spec
- name: ビルドパイプラインの処理終了をHipChatに通知 (Step 5)
message: true
command: echo "build pipeline is finished"
実は最近
Version 1.0 がリリースされました!
機能追加(Version 1.0)サービス(GitHub)連携
環境変数のサポート
いくつかの付加機能の追加(only_if、 directory)
直近で cleanup もサポート予定
サービス連携設定:serviceブロックにバージョン管理システム(GitHub)のレポジトリ情報を追加
実行:walter を ̶mode=service オプションをつけて実行する
利用方法:Cronで定期実行する
動作:
1.レポジトリの最新および、プルリクエストをダウンロード
2.パイプラインを実行
3.結果をサービスに追加
service:
type: github
token: トークン
repo: レポジトリ名
from: アカウント名
実演:サービス連携タスク:文書に問題ないかチェックを行う
検査には RedPen を使用
RedPen: 拙作の自然言語文書検査ツール
レポジトリ:https://github.com/takahi-i/walter-github-sample
環境変数サポートパイプライン設定ファイル内で環境変数が使えるようになりました。
記法:$ENV_NAME
メリット:パスワードのような重要情報をパイプラインに記述しなくてよい。
最近追加された付加機能ステージで使用できるアトリビュートの追加
directory
only_if
cleanup パイプライン
パイプライン実行後の後始末を記述
追加されたアトリビュート:directory
コマンドを実行するディレクトリを指定する
右図:root ディレクトリのアイテムを表示
pipeline: - name: root ディレクトリの表示 type: command command: ls -la directory: /
追加されたアトリビュート:only_if指定された条件が満たされた場合のみコマンドを実行する
右図:ファイル (file-a.txt)が存在した場合のみ中身を表示
pipeline: - name: ファイルの中身を表示 type: command command: cat file-a.txt only_if: test -f file-a.txt
cleanup パイプラインpipeline が実行後に後処理を行う。
“cleanup” として定義される
右図:cleanup でログファイルを削除
pipeline: - name: start pipeline type: command command: | echo “pipeline” > log/log.txt
cleanup: - name: type: command command: rm log/* stage_type: command
今後の予定サーバ機能の強化
デーモン化
Web フックに対応
複数のターゲット(deploy、setupなど)をサポート
コードの整理 ><
おわりに興味を持っていただければ、是非 Walter を使ってみてください!
Walter プロジェクトへのコントリビュートもうつけております。
ご静聴ありがとうございました