ラベル CircleCIJP の投稿を表示しています。 すべての投稿を表示
ラベル CircleCIJP の投稿を表示しています。 すべての投稿を表示

2020年3月31日火曜日

[CircleCI] CLI を Windows で使う

昨今の CI サービスは CLI ツールが用意されていることが多いです。
ジョブを実行したり、コンフィルのバリデーションをしたりでます。
だいたいは、ジョブを本番に push するまえにテストするために使うことを考えて作られていると思います。

CircleCI も例にもれず CLI コマンドがあります。
CircleCI のローカル CLI の使用 - CircleCI

インストール方法はこちらに記載されています。
ぱっと見 Mac/Linux のみで Windows 版はないようにも見えますが、ちゃんと存在しました。
手動でのダウンロード」に「GitHub リリース」へのリンクがあり、そちらから Windows 版もダウンロードできます。


ダウンロードしたら任意のパスに展開し、パスを通せば普通に使えます。

例)バリデーションエラーの様子

修正前
workflows:
  default-test:
    jobs:
      - parallel1:
        i: 0
      - parallel2:
        i: 4

修正後
workflows:
  default-test:
    jobs:
      - parallel1:
          i: 0
      - parallel2:
          i: 4

↑の違いわかりますでしょうか?
i の位置に注目してください。


CircleCI の YAML はなんか他のサービスと比べてインデントが厳しい印象・・
こちらのエラーもインデントがずれていただけでした。これ気づくの難しい・・


正解は i のインデントレベルが 1 段違うだけでした。

最後に
コンフィグをいじる際に何度も本番環境でトライアンドエラーを繰り返すとクレジットを消費してしまってもったいないので、これからはローカルでバリデーションしてから push するようにしたいと思います。

今回は以上です。
では。

2020年3月27日金曜日

[CircleCI] iutest のパイプラインを更新した&お詫びと訂正

さて今週も iutest の CI パイプライン更新を紹介します。
先週はこちら「ブログズミ: [Azure Pipelines] iutest のパイプラインを Multi-stage pipelines に変更した
今週は CircleCI です。

YAML の整理
まずは CircleCI のサンプルを参考にして、YAML をキレイに変更しました。
もともと gcc/clang でそれぞれ 4 パターンビルドしていたジョブを、アンカー・エイリアスを駆使して gcc/clang 別々のジョブに分けました。



以下、YAML の Before/After になります。
Before


After


ファイルの先頭部分はあまり変わってないですが、ファイルの末尾あたりにあるジョブの定義とワークフローの定義が YAML のアンカー・エイリアスを使ってとてもシンブルになっていると思います。

CI が定めた名前のキーではなく、任意のキーでアンカーを作って再利用するやり方はとてもいいなーと思いました。
(CI サービスによってはスキーマにないキーを許容しないサービスもあった気もするが・・)

GitHub PR の Checks に表示する
PR の Checks に表示するには「CircleCI Checks」をインストールする必要があったみたいだったので、遅ればせながらインストールしました。

「Organization Settings」の「VCS」に「Manage GitHub Checks」ボタンがあるのでそちらでインストールできます。
権限確認と適用する範囲を決めたら完了です。



このように表示されます。



お詫びと訂正


本書で、Circle CI の 4 並列制限がなくなったと書いていましたが、あれは真っ赤なウソでした。
お詫びして訂正致します。

今回並列数を増やそうとして気づきました。。




実際には、コンテナの並列数は今までどおり 4 つまでとなっているようです。(ただ、これは CircleCI 1.0 のころの設定画面なので CircleCI 2.0 になってどう管理されいるのか、まだ良くわかってません)
また、OSS プランはベースがあくまでも Free プランなので、ジョブの並列数は Pricing 記載の通り 1 つまでの制限になっているようです。
ジョブが1つずつ実行されていることを確認しました。



これを機に、各 CI サービスの並列実行のサンプルリポジトリを作成することとしました。
近いうちに CI Specs に付け加える予定です。

以上。