「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>CI/CD]] --CI --[[CD]] * 目次 [#k25b3dde] #contents *概要 [#n0901939] -継続的なビルドとテストの自動実行を行うこと。 -「継続的インテグレーション」、「常時結合」とも呼ばれる。 -テスト技法ではなく、品質改善や納期短縮のため継続的に実行するプラクティス。 -特に日本においては、[[CI サービス>#f57710b2]]より、オンプレ構築可能な[[CIツール>#dace51d6]]のほうが[[導入件数が多い>#ve375d20]]印象。 *CIツール [#dace51d6] デイリービルド&デイリーテストで使用する。 **OSS [#hd3c62aa] ***[[Jenkins]] [#a88eae4c] ***GitLab [#nbe10a95] **プロダクト [#hab60959] ***[[TFS(Team Foundation Server)>SVN vs Git vs TFS#xeb57da7]] [#s8a13fc3] -Team Foundation Server - Wikipedia~ http://ja.wikipedia.org/wiki/Team_Foundation_Server >VSSの後継製品に当たり、~ VSSが持つソースコード管理機能に加え、データの保存、プロジェクト管理~ などのソフトウェア開発プロジェクトを円滑に進めるための機能を備えている。 -チーム・ビルドによる開発の安定化 - @IT~ http://www.atmarkit.co.jp/fdotnet/vstfsintroduce/vstfsintroduce04/vstfsintroduce04_01.html >チーム・ビルドとは、TFSのカスタム・タスク~ を含むMSBuildのスクリプト一式であるといえる。 -自動ビルド、配置、およびテストのワークフローの設定~ http://msdn.microsoft.com/ja-jp/library/hh191495.aspx >ビルド プロセスを使用してアプリケーションの~ ビルド、配置、テストをスケジュールし、実行できる。~ #要件:Ultimate, Premium, Test Professional *CIサービス [#f57710b2] -[[CIツール>#dace51d6]]のサービス版 -[[Travis CI>#mcaf2142]], [[Circle CI>#x20df0b9]], [[AppVeyor>#x0b5b3ea]]などが有名。 **AppVeyor [#x0b5b3ea] Windowsをサポートした貴重な CI 環境 **Travis CI [#mcaf2142] かなり有名で言うまでもない。 **Circle CI [#x20df0b9] [[Travis CI>#mcaf2142]]に次いで有名な[[CI サービス>#f57710b2]]。 **[[Visual Studio App Center]] [#v3fbc571] スマホ用らしい。 **比較 [#i9e918da] -無料で使える CI サービス 8 個まとめ - 永遠に未完成~ https://thinca.hatenablog.com/entry/20150112/1421054945 -ブログズミ: 無料で使える CI サービス比較~ https://srz-zumix.blogspot.com/2016/01/ci.html -Travis CI vs CircleCI vs Appveyor 2018 Comparison | StackShare~ https://stackshare.io/stackups/appveyor-vs-circleci-vs-travis-ci **参考 [#t3bd0c2c] ***AppVeyor [#x97f6d89] -How to use AppVeyor (AppVeyorの使い方)~ https://qiita.com/takahashim/items/1851b6c3e05bb140bb09 ***Travis CI [#cc0e3cd3] -GitHub と Travis CI で .NET Core の~ 継続的インテグレーションを行う|へっぽこプログラマーの備忘録~ http://kuttsun.blogspot.com/2017/11/github-travisci-net-core.html ***CircleCI [#x139943f] -CircleCI カテゴリーの記事一覧 - しばやん雑記~ https://blog.shibayan.jp/archive/category/CircleCI -【CircleCI】ASP.NET Core 2.0, xUnit を使用したテスト - 小さいことの積み重ね~ http://soglhf.hatenablog.com/entry/2018/04/15/171651 *考察 [#m6de4984] **起源 [#y5f307f9] ***サービス界隈 [#rd8d6f1b] -スクリプト言語で開発されたサービスを、 -デイリーでエンハンスしていく。 と言った環境の中で発生した。 ***SI界隈 [#xc5d81c0] [[コレ>#rd8d6f1b]]がSI界隈にも輸出されたがミスマッチも多かった。 -デイリーでエンハンス → 開発して納品 -スクリプト言語 → 強い静的型付け言語 **フィッティング [#h1b76723] SI界隈へのフィッティング案 ***スモールスタート [#w521ff5f] 以下からスモールスタート -[[ビルド]]・システムのエンハンス --[[事例を見ると案外、複雑>https://opentouryo.osscons.jp/index.php?%E3%83%93%E3%83%AB%E3%83%89%E3%83%BB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E3%82%A8%E3%83%B3%E3%83%8F%E3%83%B3%E3%82%B9]]、且つ、手付かず。 --テスト・フェーズでの効率低下の原因となっている。 -テストは --疎通(レグレッション)から初めて、 --必要に応じてテストコードを追加する。 ***ハードル [#m5cefac0] -[[ビルド]]・システム --ローカル環境の[[ビルド]]・システム --サーバ環境の[[ビルド]]・システム -テストは --DB初期化 --UIテスト自動化 ---データ投入の自動化 ---複数画面に渡ったシナリオ・レベルの自動化 ***注意点 [#haf12123] -[[CIサービス>#f57710b2]]や[[Open PaaS>コンテナ技術#m37e2921]]ではなくローカルやオンプレも考慮。 --Windows上でJava書いているエンジニアもまだ多い。 --Windows環境は、SI担当が弄り易い。 --今後のLinuxシフトの中で[[WSL>Windows Subsystem for Linux]]が使えそう。 --[[WSL>Windows Subsystem for Linux]]から、(オンプレ)コンテナへ繋げるとよさそう。 >※ 参考:[[WSL上での.NET Core開発]] - 飛ぶべきハードルは、先ずローカル。~ ローカルが出来上がってからがCI。~ https://twitter.com/openhishopjpo/status/1196189967233347584 *参考 [#ve375d20] [[CIツール>#dace51d6]]、[[CIサービス>#f57710b2]] の参考 -継続的インテグレーション - Wikipedia~ http://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3 --主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣。 --エクストリーム・プログラミング (XP) のプラクティスの一つで、~ 狭義にはビルドやテスト、インスペクションなどを継続的に実行していくこと。 -継続的インテグレーションアンチパターン | Ryuzee.com~ https://www.ryuzee.com/contents/blog/4490 **Continuous [#b1f34cfe] ***[[CI/CD]], [[CD]] [#wf1547f2] ***[[CI/CD パイプライン]] [#g3138c1c] **[[テスト]] [#q7d480f8] ***[[テスト自動化]] [#u29c160c] ***[[テスティング・フレームワーク]] [#i5bef76c] **OSSコンソーシアム [#vff9240d] -SIでCIやテスト自動化が、なかなか上手く行かない理由~ https://www.osscons.jp/jo46pq2ts-537/ -CIを軽くdisったケド、ライブラリ開発でプラクティスを実践している件。~ https://www.osscons.jp/jorwiwj0d-537/ ---- Tags: [[:テスト]], [[:デバッグ]], [[.NET開発]], [[:ツール類]], [[:CI]]