[参加レポート] 【福岡】CircleCI ユーザーコミュニティミートアップ #1

4/18(木)に福岡でCircleCIのユーザコミュニティミートアップが開催されました。業務でCircleCIを利用することがあるので情報収集のためイベントに参加してきました。本ブログはセッションのまとめになります。
2019.04.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

福岡オフィスのyoshihitohです。 4/18(木)に福岡でCircleCIのユーザコミュニティミートアップが開催されました。業務でCircleCIを利用することがあるので情報収集のためイベントに参加してきました。本ブログはセッションのまとめになります。

アジェンダ

開始 終了 内容 発表者
18:30 開場
19:00 19:10 CircleCIユーザーコミュニティについて 佐野さん
19:10 19:30 セッション1: OSSで活用するCircle Ci 清家さん
19:30 19:50 セッション2: CircleCI 検定 9 級から 8 級になりました 〜 CircleCI 初心者の小咄 〜 川原さん
19:50 20:10 セッション3: CircleCI APIでプチ効率化 櫻川さん
20:10 20:20 休憩
20:20 20:25 LT1: CICDを始める前に...ビルドデプロイについて再入門 haruki kato さん
20:25 20:30 LT2: CircleCIのJobを並列で実行してみる 夏目祐樹 さん
20:30 21:00 ネットワーキング
22:00 懇親会

OSSで活用するCircleCI

株式会社Fusic 清家 史郎さん

https://slide.seike460.com/slides/circlecijp_fukuoka_1#/

OSSでCircleCIを利用する理由

  • CircleCIをOSSで利用する
  • 合計で4つのLinuxコンテナを無料で利用できる
  • 年額$2400相当
  • プロジェクトを一般公開するだけ
  • 参考: 料金プラン - CircleCI
  • 合計で4つのLinuxコンテナ
  • 年間総額$2400相当
  • プロジェクトを一般に公開するだけ
  • OSSを利用する上で実質無料
  • 超人気プロダクトになると話しが変わってくる

なぜOSSで品質を上げたいのか

  • OSSを公開するモチベーション
  • 使ってもらいたい
  • 使ってもらうためには
  • 魅力的な機能
  • READMEの充実
  • 安定した品質
  • CircleCIを活用
  • OSSにおいて安定した品質を証明するためには
  • ソフトウェアテストで品質を証明する
  • 正当性を証明する指標
  • テストが正常に完了しているか
  • テストのカバレッジ
  • 完全ではないが指標として提示できる
  • あくまで開発者の認識範囲でのテストであることに注意
  • 正当性の指標を利用者に提示したい
  • ソフトウェアテストを書いた
  • カバレッジ率も取得した
  • 利用者に伝えたい
  • Badgeを表示
  • CircleCIを利用する

具体的なCircleCI設定(GitHubを利用する場合)

  • 初期設定
  • テストを書く
  • Organizationを選択する
  • プロジェクトを追加する
  • config.yamlを設定する
  • 言語ごとにテンプレートが用意されている
  • リポジトリの ./circle/config.yml に配置する
  • Slack通知設定

OSS向けの設定

  • Badge設定
  • Build Status Badge
  • テスト成否を表示
  • Release Badge
  • 現在のリリースバージョンを表示
  • coverage Badge
  • カバレッジ率を表示

まとめ

  • OSSにてCircleCIを利用する理由について考察
  • CircleCIを利用して安定した品質を保証
  • Badgeを表示して利用者へソフトウェアの健全性をアピール

CircleCI検定9級から8級になりました

株式会社YAMAP 川原 洋平さん

2019-04-18 CircleCI Meetup Fukuoka #1 - Speaker Deck

CircleCIとYAMAP

  • すべてのシステムでテスト/デプロイにCircleCIをフル活用
  • 社内エヴァンジェリストの もりごんさん @morygonzalez の入社とともに導入

CircleCIと私

  • YAMAP入社前はHello Worldレベル
  • フィーチャー環境(QAやレビュー、新機能)を管理するようになる
  • このタイミングであらためてCircleCIを勉強しなおすように

CircleCI検定とは

  • CircleCIのスキルを証明するための架空の認定試験制度
  • 受験料は無料
  • CircleCIには無料プランがある
  • いつでもどこでもインターネットがなくても受験できる
  • CircleCIはローカルPC・インターネット接続無しでも実行できる
  • 英語・日本語・YAMLで受験できる

門外不出の検定試験対策

ここからは門外不出な内容が続きますので、スライドの写真撮影やお話する内容のSNSへの投稿は「ご遠慮しないで」下さい。但し、全ての内容が公式ドキュメントやインターネット上にしておりますのでご注意ください

※以下、補足です

9級: CircleCIを始める

設問1

設問2

8級: ローカルマシンでビルドを実行する

設問3

設問4

設問5

7級: workflows・ビルド効率化・テスト効率化

設問6

設問7

設問8

いかがだったでしょうか

  • CircleCI検定試験のポイントまとめ
  • ぜひCircleCIにサインアップして試してほしい
  • ドキュメントが充実している。ぜひ目を通して欲しい

さいごに

  • CircleCIを利用していると、なんでもCircleCIで処理したくなる
  • 臆さずに触り続けることが昇格(上達)への近道
  • ぜひ検定を受験しましょう

CircleCI APIでプチ効率化

株式会社Fusic 櫻川 幸三さん

※資料はアップロードされ次第追加します。

CircleCI API使ってますか?

  • いろいろなAPIが準備されている
  • ユーザー情報
  • ビルドジョブ
  • プロジェクト
  • キー
  • artifacts

地味に便利 自動フォロー

  • 背景
  • GitHubにリポジトリを追加する
  • CircleCIにプロジェクトを追加する
  • 毎回作業するのは無駄なので自動化する
  • Follow a New Project on CircleCI
  • 構成
  • リポジトリ作成でOutboundなWebHook
  • Lambdaを呼ぶ
  • CircleCIのAPIでフォローする
  • 難しいんでしょ?お高いんでしょ?
  • 料金
  • ほぼGitHubとCircleCIの料金だけ
  • Lambdaはあんまりかからない
  • 難易度
  • API叩くだけ
  • curlだと1発
  • メリット
  • 簡単
  • GitHub全リポジトリ必ず連携
  • デメリット
  • 強制的に連携される
  • 連携不要なプロジェクトが混ざっている場合は邪魔

CircleCIへのキューイングをコントロール

  • 特定リポジトリのテスト実行時間がものすごく長い
  • キューがたまってる画像 (を出す予定だった)
  • 例えば3つ ABCとある場合
  • A => B => Cの場合
  • Aが詰まる
  • Bが詰まる
  • Cが詰まる
  • 詰む
  • コンテナ追加しても同じ、詰まると詰む
  • Recent Builds For A Single Project Trigger a new Build with a Branch
  • push → GitHub Actions → API Gateway → DynamoDB → Lambda → CircleCI
  • 同時実行数を制限する
  • push契機で動かしたくない場合
  • 全ブランチをignoreに設定する
  • その上でAPIを叩いてキューに追加する
  • メリット
  • 実行タイミングをコントロールできる
  • デメリット
  • 実装が少し大変
  • Performance Planを検討したほうがいい

その他

  • 任意のタイミングでデプロイを実行する
  • Artifactをダウンロードするコマンド作成
  • GitHub Actions等、workflowsツールとの連携
  • 静的解析ツール等との連携

まとめ

  • API利用は意外と簡単
  • APIは使わなくても困らないけどきっと効率化できるポイントが有るはず
  • APIを使うとより便利になるはず

CI/CIを始める前に...ビルドデプロイについて再入門

加藤 春樹さん

CICDを始める前に...ビルドデプロイについて再入門

Hello world!!のソースを作る

  • make
  • コンパイル
  • Hello worldのプログラムをビルド

Makeとは

  • ビルドの自動化ツール
  • 言語はなんでもOK
  • ビルド以外の用途でも使える
  • Makefileに従いビルドする
  • Makefileは設計図
  • 書き方
  • echoでデモ

ビルド

  • Hello world!!のソースファイルを作る
  • C言語のHello worldプログラム
  • gccでコンパイル
  • -o オプションで出力先を指定
  • ビルドまとめ
  • 設計図をもとに成果物を作ること

デプロイ

  • ファイルが動ける環境に対しいい感じのところに置きに行く作業

  • デプロイ

  • ファイルが動ける環境に対しいい感じのところに置きにに行く作業

まとめ

詳細はブログ参照

CircleCIのJobを並列で実行してみる

クラスメソッド株式会社 夏目 祐樹

CircleCI_のJobを_並列で実行してみる - Speaker Deck

テスト時間について

  • 発表内容かぶっててほとんどカット!!
  • ※補足: スライドはカット前のバージョンです
  • 並列実行することで短縮
  • 環境変数 CIRCLE_NODE_INDEX でインスタンスを判別できる

おわりに

CI/CD環境の構築に加えて、CircleCI APIを活用した運用の改善など聞けて勉強になりました。今後のイベントも予定されているとのことでした、今から楽しみです!