Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Circle CI 入門
Search
yutachaos
March 19, 2018
Technology
0
650
Circle CI 入門
サポーターズ勉強会 2018/03/19
Circle CI 入門
https://supporterzcolab.com/event/318/
yutachaos
March 19, 2018
Tweet
Share
More Decks by yutachaos
See All by yutachaos
JenkinsのJobを CronJobに移した話 /The story of moving Jenkins Job to CronJob
yutachaos
0
180
History of Infrastructure as a Code testing
yutachaos
2
5.2k
AWS CodePipeline 初めて触って少しハマった話 / A story that challenged AWS CodePipeline for the first time
yutachaos
0
86
gRPC in スタディサプリENGLISH / gRPC in StudySapuri ENGLISH
yutachaos
0
2.7k
AKS,EKS,GKEコマンド比較してみた /compared AKS, EKS, GKE command
yutachaos
2
2.3k
AWS ECS の説明 /aws-ecs-introduction
yutachaos
0
82
Docker + Jenkinsでバッチ実行 / Using Docker and Jenkins execution batch
yutachaos
0
250
Spring Batchの紹介
yutachaos
0
260
非エンジニア向けMarkdown 勉強会
yutachaos
1
310
Other Decks in Technology
See All in Technology
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
270
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
490
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
200
Qiita埋め込み用スライド
naoki_0531
0
5.1k
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
590
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
190
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
350
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
540
KubeCon NA 2024 Recap: How to Move from Ingress to Gateway API with Minimal Hassle
ysakotch
0
210
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
110
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
260
Featured
See All Featured
Speed Design
sergeychernyshev
25
670
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Agile that works and the tools we love
rasmusluckow
328
21k
Fireside Chat
paigeccino
34
3.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Making Projects Easy
brettharned
116
5.9k
Transcript
Circle CI 入門 1
自己紹介 木村 勇太 サー バー サイドエンジニア プログラミング言語 PHP, node, java
, Ruby 主にAWS を使ったシステム構築してます。 実装、 開発、 インフラ構 築とかわりかし何でも屋。 2
近況 AWS Certified Solutions Architect, AWS Certified DevOps Engineer Professional
取りました。 Qiita 記事に書いてます。 https://qiita.com/yutaChaos/items/2b0b8d9bfe76a597953c https://qiita.com/yutaChaos/items/081ac5b067856206a2a3 3
Agenda CI( 継続的インテグレー ション) とは? Circle CI の紹介 サンプルコー ドの解説
他のCI ツー ルの紹介 CI 構築する時に私が考えること 4
CI is 何? 5
継続的インテグレー ション、CI( 英: continuous integration) と は、 主にプログラマー のアプリケー ション作成時の品質改善や納期
の短縮のための習慣のことである。 エクストリー ム・ プログラミン グ (XP) のプラクティスの一つで、 狭義にはビルドやテスト、 イン スペクションなどを継続的に実行していくことを意味する (by wikipedia 先生) 6
CI はエクストリー ム・ プログラミングのプラクティスの 一つ。 7
エクストリー ム・ プログラミング is 何? 8
エクストリー ム・ プログラミング、XP( 英: extreme programming) は、 ケント・ ベックらによって定式化され、 提唱さ
れているソフトウェア開発手法である。 柔軟性の高い開発手法であ るため、 難易度の高い開発やビジネス上の要求が刻々 と変わるよう な状況に向いた開発手法である。 事前計画よりも柔軟性を重視す る。1999 年に書籍『XP エクストリー ム・ プログラミング入門― ソ フトウェア開発の究極の手法』 によって発表された。XP は、 軽量開 発手法あるいはアジャイルソフトウェア開発手法と呼ばれる、 同種 の開発手法のなかで代表的なものである。 (by wikipedia 先生) 9
具体的にはCI は開発のプラクティスに含まれている 10
テスト駆動開発 テストコー ドを書きつつ、 機能の実装を行い、 常にコー ドに対して テストコー ドによる自動テストを行うように開発する手法 ペア・ プログラミング
Observer( 指示する人),Driver( プログラミングを実際に書く人) の二 人組になってプログラミングを行う手法 11
リファクタリング 書いたコー ドの内容を修正・ 改善を行うこと 集団的な所有権 git やsvn などのVCS( バー ジョン管理システム)
を使い、 誰でも同じ コー ドを編集出来るようにする CI( 継続的インテグレー ション) ← これ! 作成したテスト、 ソー スのビルドやデプロイ、 自動で実行される環 境を作る YAGNI(You ain't gonna need it) 機能は必要になるまで実装しない 12
エクストリー ム・ プログラミングでは出来るだけ小さい単位で開発 を行い、 細かい単位でのフィー ドバックをするように提唱されてい ます。 テストコー ドを作成しつつ開発する場合、 テスト実行を毎回ロー
カ ルで行うのは大変。 自動化することによって実行コストを下げて、 より早くフィー ドバ ックを行おう! というのがCI です。( ざっくり) 13
Circle CI について 14
CI を行う環境を提供してくれるSaaS。 同種で最近流行りなもの に T r a v i s
C I , W e r c k e r とか色々 あります。 すごいたくさんある ので多くは語りません。 15
何が出来るの? 16
A. 基本的になんでも出来ます。 17
Circle CI が提供してくれること 公式からのコピペ& 翻訳(https://circleci.com/product/) 18
VCS との連携 CircleCI は、GitHub、GitHub Enterprise、 およびBitbucket と統合さ れています。 コー ドをコミットするたびにCircleCI
はビルドを作成 します 自動テスト CircleCI は、 コンテナまたは仮想マシンでビルドを自動的にテスト します。 19
通知 ビルドに失敗した場合にチー ムに通知されるので、 問題を迅速に解 決できます。 自動デプロイ 成功したビルドはさまざまな環境にデプロイされ、 あなたのプロダ クトはより早く市場に投入されます。 20
料金 1 コンテナ一月につき1500 分まで無料。 コンテナを追加する場合は50 ドル/ 月 21
ユー スケー ス テストの実行、 アプリケー ションのデプロイ、 アプリのビルド etc・・・ 22
サンプルコー ド 公式のyml ファイルを少しいじってruby で書きました。 https://github.com/yutachaos/circleci‑initial 23
使い方 GitHub、Bitbucket で管理されたrepository を用意します。 circleCI の設定ファイルを用意します。( 後述) CircleCI とVCS を連携します。
git にpush します Circle CI が動いてテストが動きます。 以上 24
yml ファイルの解説 version Circle CI のversion 1 と2 がある。1 は2018
年8 月に終了することがア ナウンスされているので、 基本的にいまから使うには2 が推奨 jobs job を定義する箇所の上位定義 docker 実行環境をdocker で行う場合の定義部分 image コンテナの実行イメー ジを指定する Docker hub,private repository, ECR,circleCI の公式イメー ジな ど使用出来る circleci/ruby:2.4‑node 25
environment 該当のjob の中で利用出来る環境変数を記載する。 steps job の中で実行されるコマンドを記載していく。 run 実行するコマンドを記載していく name 実行するコマンドの説明、CircleCI
の画面に表示される。 必須項目 ではないが設定してあったほうが見やすい command 実行するコマンド、sh のファイルなどを設定することが出来る。 26
save_cache CircleCI はjob にデー タをキャッシュすることが出来る指定したkey ででbundle やnode_modules などの依存するライブラリをキャッシ ュすることで次回build 時に採用することが可能
restore_cache save_cache で保存したキャッシュを読み込み直して、 再利用するこ とが出来る。 store_test_results テストの実行結果(JUnit XML or Cucumber JSON) をここで指定し たpath の下に置くことでCircleCI のUI からtest の実行結果を確認する こと出来る。 workflow workflow に記載する、job の並行実行や、 実行する条件を設定する ことが出来る。 27
他のCI ツー ルの紹介 最近はSaas でも、 自前で入れて使う形でもたくさんのCI ツー ルがあ ります。 たくさんあるので少しでも触ったものだけを書きます
(><) Jenkins Jenkins おじさん。 通常自前のサー バー にいれて使うことが多 い。 老舗だが、 実績と使用率はNo1 といえる。Jenkins2 から出 来るようになったpipeline が結構便利 最近はSaas 版もある。 CircleCI やDocker もCI はJenkins で回さ れている。 TravisCI 最近のイケイケな会社はCircleCI かTravisCI というイメー ジ。 private で使うためには有料プランが必要。public で使う場合は 無料でOSS での使用例が多いのでサンプルを探しやすくもあ る。 28
GitLabCI gitlab に連携出来るCI ツー ル。gitlab 本体とは別にserver を容易 し、runner として実行出来る。 Bitrise
iOS 向けのCI ツー ル。 同僚エンジニアいわく結構使いやすい。 無料枠がやや貧弱だが、50 ドルからの有料枠なので、 頻繁に ビルドするのであれば便利。 Concourse Go 製のCI ツー ル、 最近流行っている。Saas ではなく自前で環 境を容易する。Container 環境での実行、pipeline ベー スの構築 が出来るので大規模な処理を纏めるのに適している印象。 29
CI ツー ルは結構なんでも出来る。 だからどの くらいではじめるかが重要 30
CI 構築する時に私が考えること 31
目的・ どういうことをやるかを考える 例 コー ドに統一感をもたせたい lint を行う コー ドの不具合を素早く検出したい 単体テストを行う
要件にあったもの他との依存性を調べたい 結合テストを行う ライブラリを常に最新にするのがめんどい 日時でbundle のupdate を行う CI 回すのかっこいいから、 やりたい! この理由もありだけど、 何やるかはちゃんと決めよう 32
どのツー ルを使うのか考える チー ムで使っているバー ジョン管理システムを調べる git github gitlab gitbucket codeCommit
etc・・・ svn cvn 33
Saas のCI を考慮する場合、 使っているツー ルによって連携のしやす さが異なる github 使ってる、gitlab 使っているでも設定する所が異なる。 (github
ならすぐ連携出来るよ!) CircleCI の場合( というか一般的なSaas の場合) 一度インター ネット 経由で接続するため、private なネットワー ク限定でしかセキュリテ ィポリシー が定められている場合、 基本的に導入が困難。 自前で入れられるツー ル(Jenkins など) を利用した場合が良い時もあ る。 34
粒度を考える CI を動かす粒度を考える push ごとに動かす PR 毎に動かす master にpush されたときに動かすなど
時間での定期実行する(cron 的設定も出来ます) 35
CI を設定するコストメリットを考える 単体テストや結合テストを常に実行する設定は有用であるが、 設定 するコストが多い。 まずはlint だけを設定するところから始めるのも1つの考え方となる 効果と設定へのコストは得てして反比例しがち CI は設定したけど、
テストをメンテするのが大変になっ た・・・ CI 自体が一人にしか設定出来なくて動かなくなった時につら い。 インフラの設定とかが属人化しやすい(Jenkins おじさん管理お じさんの誕生) 36
まとめ Docker でやるから環境依存解決楽、Docker かわいい よ、Docker Saas だから、 インフラ維持コスト少ない。 CI 回すと便利だけど、
一気にやると大変だから、 少しず つやろう。 37
CI 回して早いCycle を回そう!!! 38
ありがとうございました! 39