.NET Core時代のCI/CD
2018/02/23 Fukuoka.NET
@tsubakimoto_s
松村優大
• 株式会社オルターブース
• 業務執行役員/CTA
• Microsoft MVP (for VSDT)
• 島根県出身の30歳
• MLBお兄さん(自称)
2
$ dotnet
4
dotnetコマンド
• .NET Core CLIツール
• Windows/Linux/macOS
https://aka.ms/dotnetcoregs
• オープンソース
https://github.com/dotnet/cli/
5https://docs.microsoft.com/ja-jp/dotnet/core/tools/
6
コマンド 機能
dotnet new プロジェクトの新規作成
dotnet restore NuGetパッケージの復元
dotnet build プロジェクトのビルド
dotnet run プロジェクトの実行
dotnet test 単体テスト(xUnit)の実行
dotnet pack プロジェクトをNuGetパッケージに変換
dotnet publish プロジェクトの発行
(=公開用ファイルの生成)
https://docs.microsoft.com/ja-jp/dotnet/core/tools/
標準テンプレート
7
カスタムテンプレート
• dotnet newを拡張する
• 好きな形のプロジェクト構成が可能
• template.jsonで構成を管理
8
.NET CoreのCI/CD
9
CI (Continuous Integration)
• 継続的インテグレーション
• ビルドやテストを行うためのパイプライン
CD (Continuous Delivery)
• 継続的デリバリ
• デプロイを行うためのパイプライン
10
CI/CDツール
11
Visual Studio
Team Services
GitLab
• Gitホスティングのソフトウェア
• Issue, Wiki, Merge Request, CI/CD
• 様々な提供形態
• GitLab.com
• Community Edition
• Enterprise Edition
12
GitLab CIの仕組み
• パイプライン定義はYAMLで書く
• Dockerコンテナ上でCI/CDを実行
• リポジトリに .gitlab-ci.yml があれば
プッシュ時に自動でCI/CDが始まる
GitLab.comでサンプルを作ってみた
https://gitlab.com/tsubakimoto/dotnet-ci-sample
13https://gitlab.com/help/ci/quick_start/README
コンソールアプリケーションを
GitLabでビルドしてみよう
14
コンソールアプリケーション
15
コンソールアプリケーション
16
ビルドしてみる
17
コンソールアプリケーションを
GitLabでテストしてみよう
19
コンソールアプリケーション
20
簡単なクラス
21
簡単なテスト
22
テストしてみる
中略
23
都度パッケージをリストア
コンソールアプリケーションを
GitLabでデプロイしてみよう
25
Dockerイメージ化
Dockerfile
26
デプロイしてみる
27
_人人人人人人人人人人_
> 頑張ってもエラー <
 ̄  ̄
28
supported by
パイプライン
29
ご清聴ありがとうございました
30

.NET Core時代のCI/CD