Walter の進捗と今後

  • View
    3.834

  • Download
    2

  • Category

    Software

Preview:

Citation preview

デプロイメントツール 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 プロジェクトへのコントリビュートもうつけております。

ご静聴ありがとうございました

Recommended