C++

mitamaライブラリのCI/CD

  • このエントリーをはてなブックマークに追加
  • Pocket
今更感が果てしないですがCircleCI 2.1の話です。 以前の記事でCircleCIについて書きましたが、CircleCI 2.1も来て久しいですし、最近の構成について書こうと思います。基本的なことは省略してCircleCI 2.1で変わったところと、デプロイの自動化について書きます。

継続的インテグレーション

ヘッダーオンリーライブラリなのでサポート対象の各種コンパイラでビルドしてテストを走らせるだけの単純なものですが、「各種コンパイラで」というのがCircleCI 2.0の機能で楽に書けるように。 CircleCI 2.1はbetaの機能です。設定を有効にすると使うことができます。 新しい機能としてorb、parameters、executorsなどが使えるようになりました。 以下はMitama.Dimensionalのmaster/developブランチの設定です(workflowsをちょっと省略した)。 古いクソゴミconfigと比べると最高に良くなったと思う。

build parameter

CircleCI 2.1に移行した理由。もうAnchor/Aliasをごちゃごちゃしなくていい。 ライブラリを複数のコンパイラでビルドするために複数のDockerを用意しているが、タグを指定する箇所をparameterにすることでハッピーになれた。

executors

なんとなく使ってみた。

継続的デリバリー

Mitama.Dimensionalではドキュメントを用意しています。 githubのdocsブランチにpushするとドキュメントをmkdocsでビルドし、半自動でデプロイします。半自動というのはapprovalを使っているからだ。デプロイにはボタンをポチるステップが必要だ。 突然だが、docsブランチの設定だ。

orb

なんとなく使ってみた。

設定概要

docsブランチのワークフローは以下である
  1. ドキュメントの実行可能なサンプルコードがコンパイルできるかテスト
  2. ドキュメントをビルド
  3. Approveする
  4. 自動デプロイでgh-pagesブランチにforce pushされる
docsブランチのworkflow

ドキュメントのサンプルコードテスト

まあ見ての通りfindからのawk芸である。 まず、サンプルを抽出し、そして全部コンパイルする。それだけだ。 ライブラリを更新し続けるとサンプルコードがコンパイルできなくなったりするが、気が付きにくいので重要だ。

デプロイ

まったく大したことをしていない。MkDcosを使っているためコマンドで一発である。

まとめ

なんとなくいい感じ(完)
  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください