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
CircleCIで集中管理しよう(社内向け)
Search
kirimaru
January 24, 2019
1
160
CircleCIで集中管理しよう(社内向け)
発表日:2019年1月23日
kirimaru
January 24, 2019
Tweet
Share
More Decks by kirimaru
See All by kirimaru
早くAPI作るならFastAPI がオススメ
hirotokirimaru
1
46
DDD(ドメイン駆動設計)を知らない人に知ったつもりさせる/Introduce_DDD_to_unfamiliar_individuals
hirotokirimaru
0
310
例示! Spring Bootで作られた REST APIのテストコード/ Testing-Example-for-a-REST-API-created-with-Spring-Boot
hirotokirimaru
2
1.9k
一緒に使うことが多い値は別クラスにしよう(Data Clumps)/data_clumps_is_useful
hirotokirimaru
0
730
Backlogが好きな話。/i_like_backlog
hirotokirimaru
0
140
私が好きなポートアンドアダプターを紹介する/I-like-hexagonal-architecture.pdf
hirotokirimaru
1
1k
名付けのためにクラス図を元に会話しよう/Let's-use-class-diagram-to-communicate-with-client
hirotokirimaru
0
640
Code Smellsの Primitive Obsession に気を付けて設計する/Designing-with-Code-Smells-Primitive-Obsession
hirotokirimaru
1
3.4k
FCCを推す/My favorite software architecture is FCC
hirotokirimaru
0
230
Featured
See All Featured
Building Adaptive Systems
keathley
43
2.7k
GraphQLとの向き合い方2022年版
quramy
49
14k
Speed Design
sergeychernyshev
32
1k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Navigating Team Friction
lara
187
15k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Thoughts on Productivity
jonyablonski
69
4.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
For a Future-Friendly Web
brad_frost
179
9.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
740
Bash Introduction
62gerente
613
210k
Transcript
CircleCIを使って 集中管理しよう @nainaistar
CI/CD
CI/CDとは ・ソフトウェアを常にテストして、 自動でリリース可能な状態にしておく手法。
なぜ注目するか
なぜ注目するか ・一人でも品質を保証できる仕組みが欲しかった。 ・PGは各々で静的解析ツールをかけていても、 IT以降で静的解析ツールをかけておらず、 意味が無いと思っていたから。 (時間的な問題や、ツールがIT時には無いとか・・・)
なぜ注目するか PT以降の各工程で、テスト数とステップ数の比率を求めたり、 納品物のステップ数求めたり・・・ たとえ概算でも、非常にめんどくさい。 ステップ数を数えたくない
なぜ注目するか 静的解析ツールの使用、コードの整形、ステップ数換算等の 各開発者が今まで分散して行っていた操作を CI/CDサーバの一箇所で集中管理できるという 点に注目しています。 ※正確には、監視程度ですが・・・。
正直なところ ・ソフトウェアを常にテストして、 自動でリリース可能な状態にしておく手法。 最悪、テストも、リリース可能な状態にしておくことも 不要であるとすら思っています。
小さいところから自動化しよう
Circle CI
CircleCIとは ・CI/CDができるWebサービス。 ・GitHub/BitBucketのリポジトリが必要。 ・Privateリポジトリでも連携できる。 ・1コンテナは無料。ただし、OS Xのコンテナは有料。 コンテナ数での課金、従量課金制もある。 ・無料枠の時間は、1月に1000分まで。(16時間40分) ・1.0の情報ばかりで、2.0の情報にヒットしづらい。
さらに ・GitHubが3ユーザまでprivateリポジトリ無料(1/7から) ・BitBucketが5ユーザまでprivateリポジトリ無料
つまり?
ここでいう、無理とは ・ジョブが長時間で嫌だ。もっと早くしたい。 ⇒コンテナ数を増やす必要有。 ・開発者一人一人のコミット起因でジョブを実行する。 (無料枠だと3人までなので、問題は無いかも・・・?) ⇒Pull-Requestを起因にすることで、 実行ジョブを減らせる。
Jenkinsでは駄目なの? ・管理コストが無視できない。 ・ローカルに構築するなら、もっとハイスペックPCを! ・専用サーバはウィルススキャン等の継続コスト、 そもそも、セットアップ時の初期コストが高い! ・高すぎる自由度が後に重圧になる(らしい)。 ・他社ではXCode等のビルド環境を自前で用意する コストを省くために、CircleCIやBitriseを利用する(らしい)。
CircleCI の JOB
CircleCIの設定ファイル 設定ファイル .circleci/config.yml に詳細を記載する。 (JOBも後に出てくるワークフローも)
CircleCIのJOB 記載内容: ・JOB名 ・実行環境(dockerイメージ等) ・実行するコマンド ・その他利用用途に応じた内容 (テスト結果ファイルの出力先等)
CircleCIのJob ソース CircleCI
Job単位の実行結果
CircleCIの ワークフロー
CircleCIのワークフロー (Jenkinsのパイプライン) 記載内容: ・ワークフロー名 ・実行するJOB名 ・JOB同士の関係性(直列) ・その他任意設定 (特定のブランチのみ実行したい等)
CircleCIのワークフロー ソース Circle CI
ワークフロー単位の実行結果
条件に満たない場合、 途中で処理を止めることも出来る
JOB承認ボタンを押すまで、 後続処理を実行しないこともできる。
処理結果はメール等に通知できる
コミット、Pull-Request起動だけでなく、 Cron起動も出来る
(自分が集中管理したい) JOB一覧
1.ステップ数カウント(cloc) 2.静的解析ツール(JavaScript) (ESLint + Prettier) 3.静的解析ツール(Java) (SonarCloud) ※Privateリポジトリは有料 インストール版は、SonarQube
以降のスライドは雰囲気のみ紹介 具体的な内容は、 .circleCI/config.yml に全て記載しているので、そちらを参照してください。 ソースコード https://github.com/hirotoKirimaru/circleCITest
JOB (ステップ数カウント)
ステップ数カウントツール(cloc) ステップ数がカウントできるツール ※詳細は省略 npmかyarnが入っていれば、 yarn add –D cloc で使い始められます。
Git-Flowを用いた開発フロー
ステップ数が欲しい箇所 ステップ数の差分 全ステップ数
こんなイメージのJOBを作った(差分)
こんなイメージのJOBを作った(差分) stepCount.txt
こんなイメージのJOBを作った(全部)
JOB (JavaScript静的解析)
ESLint + Prettier(JavaScript静的解析) ESLint・・・JavaScriptの静的解析ツール XXLintという名前は静的解析ツールであることが多い ESLint, HTMLHint, CSSLint等々。 Prettier・・・コードフォーマッタ 別のツールだが、同時に使われることが多い。
こんなイメージのJOBを作った エラー時にどこがダメだったか、 教えてくれる。
JOB (Java静的解析)
SonarCloud(Java静的解析) SonarQubeのCloud版 publicリポジトリは無料だが、privateリポジトリは有料。 他と違い、CircleCI上で結果は見れず、 SonarCloudのページにアクセスする必要がある。 CircleCIからsonarqubeへの連携APIを叩いているイメージ
環境
環境 ・ ソース管理 GitHub ・ CI/CD CircleCI ・ その他 ・
ステップ数カウントツール ・ cloc ・ Java静的解析ツール ・ SonarCloud ・ JavaScriptの静的解析ツール ・ ESlint ・ コード成形ツール(HTML,JS,CSS) ・ Prettier ・ チャットツール ・ Slack
ソースコード ・ ソース https://github.com/hirotoKirimaru/circleCITest
参考
参考 ・CircleCIで始めるCI/CD導入の基本のキ https://codezine.jp/article/detail/11208 ・CircleCI 2.0/2.1の機能をフル活用してCI/CDワークフローを改善してみた https://tech.gunosy.io/entry/enhance-circleci-workflow ・Prettier 入門 ~ESLintとの違いを理解して併用する~ https://qiita.com/soarflat/items/06377f3b96964964a65d
・clocとシェルスクリプトでgit管理ソースの改修ステップ数を集計 https://qiita.com/aakasaka/items/ae07781d7bea447492a7