SwimmyStudy #9 Jenkins実践入門 vol.3
書籍「Jenkins実践入門 ~ ビルド・テスト・デプロイを自動化する技術」をもとにした勉強会です。
現在、初級者向け、初中級者向けのグループに分かれてそれぞれが書籍ベース、実践ベースで勉強会を行っています。
自分はAndroid開発で利用経験があるので初中級者向けに参加しています。
以下、主に初中級者向けグループに関する参加レポートです。
- 初中級者向けグループ(JFK)概要
- 初中級者向けグループ(JFK)実施内容
- 所感
1. 初中級者向けグループ(JFK)概要
- Jenkins経験者が中心となって、Jenkinsとバージョン管理、バグ管理のシステムと組み合わせた効果的な開発環境とルールづくりを模索していく。
- バージョン管理には、Gitとgit-flow、バグ管理にはRedmineを想定しており、複数人の開発者と管理者による疑似プロジェクトとして上記環境構築とルールづくりを検討することとする。
- なお、プロジェクト資産は、CakePHPによるサンプルブログシステムを利用する。
今回は、JFKでの第一回ということで、上記疑似プロジェクトに基づき、バージョン管理システムとJenkins連携部分を検討しました。
2. 初中級者向けグループ(JFK)実施内容
LT
バージョン管理システムとしてGitとgit-flowを採用するにあたり、以下のLTを行い、前提知識を合わせました。
ゼロからわかるgit-flow
Git, git-flow実践
サンプルシステムを用いながら、git-flowのフィーチャー、リリース作業を複数人で実践しました。
課題
- プロジェクトで用いるサンプルブログシステムが主にDB周りで起動できなかったため、急遽、簡易的なテキストファイルを対象としたバージョン管理を行うことになった。
[対策]:次回、DBをMySQLからSQLiteに変更して環境依存部分を極力減らす。
- git-flowまわりの経験不足もあり、複数人でのブランチのマージ、コミットで時間を要してしまった。
[対策]:git-flowまわりのノウハウを増やす(参考:Git-Flow-Example)
[対策]:複数人で行う場合の構成を再度検討する必要がある。(後述)
Jenkins連携の検討
前述の課題を踏まえてJenkins連携の検討を行いました。
- origin/developへ各開発者が直接pushを行うと別開発者とのマージが頻発したため、各開発者ごとにoriginとなるリモートリポジトリを設け、中央originへの集約は管理者が行う。
- git-flowのリリースブランチの開始、終了はmasterへの変更が発生するため、管理者が行う。
- 中央originのdevelopをJenkinsと連動させ、結合テストを定期実行させる。
- 中央originのmasterをJenkinsと連動させることを検討したが、masterへのコミット後のテストとなるため、バグがあった場合にmasterブランチを汚してしまう。
回避策としてgit-flowのリリースブランチに対して受け入れテストを実行させる。
テスト完了後、必要に応じてJenkins側からリリースブランチのfinishを行い、masterへのコミットを行う運用とする。
- JFKではリモートリポジトリ間としてGit、リポジトリ間のやりとりにPullRequestを用いる。
以下、構成イメージを示す。
次回
次回は、上記構成を実際に検証してみます。
以下の事前準備を行っておけるとベターです。
- GitHubのアカウント
- 自端末へのGit, git-flowが動作する環境。
- (できれば)サンプルブログアプリ(CakePHP SQLite)の動く環境。
3. 所感
Jenkinsとの連携までは今回行けませんでしたが、事前準備としては課題等も見え有意義な会だったと思います。
やはり複数人で実際に行うことで見えてくる課題もあり、それらを(業務のタイムリミット関係なしに)検討することができるのが非常によいです。
あっという間の2時間半でした。待ちきれないので次回からスパンを短めにとることになりましたw
次回は8/29(水)です。
SwimmyStudy #10 Jenkins実践入門 vol.4
Jenkins関連のLT大会もあるので、興味ある方はぜひ!
0 件のコメント:
コメントを投稿