2023年CircleCI最近機能アップデートを追いかけてみた


# はじめに
皆さんこんにちは！
CircleCIカスタマーサクセスマネージャーの小島です。
CircleCIカスタマーサクセスチームでは、お客様がCircleCIを最大限、効率良く、お客様の目標に合わせて活用していただけるよう、日々お手伝いをしております。
最近はネットフリックスの韓国ドラマ「医師チャジョンスク」にどハマりしてます。
１００本近くの韓国ドラマと映画を観ましたが、見飽きることがありません。おっとけー

２０２３年になってもうあっという間に5ヶ月近く経過しました。
その間にCircleCIでは様々な機能追加や製品アップデートがあったことを皆様ご存じでしょうか！？
今回はそのような機能を知ってもらうため（自分の知識アップデートも含め）、２０２３年上半期総集編（もう上半期終わらす？）として最新機能を一挙に紹介していきます！

# 目次
- 組織内でCircleCIのアップデートについて受け取る連絡先の管理
- UIからのAudit Log取得
- コンフィグコンパイルサイズ制限の拡大
- “Infrastructure Failure” のジョブステータスバッジ
- macOS　M1マシン
- プロジェクト制限付きコンテキスト
- VS Codeの拡張機能からSSHでジョブを再実行
- リモートDockerの価格とスペック変更について
- おわりに

 

# 組織内でCircleCIのアップデートについて受け取る連絡先の管理
[Organization Settings]内の[Overview]ページに飛んでいただくと、テクニカルコンタクトとセキュリティコンタクトを管理する機能が追加されています。
![スクリーンショット 2023-04-23 16.49.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/a40d3314-5df1-6768-6b1c-8310d51216c8.png)
- テクニカルコンタクト
    - 障害などによりCircleCIサービスが停止またはサービスに問題が発生した場合に通知が飛ぶ連絡先を最大5名まで登録できます。
- セキュリティコンタクト
    - セキュリティに関する問題が発生した場合に通知が飛ぶ連絡先を最大5名まで登録できます。



# UIからのAudit Log取得
以前はCircleCIサポートに問い合わせをしていただいてAudit Logを取得していただく必要がありましたが、UIより取得が可能になりました！！
[Organization Settings] -> [Security]にアクセスしていただくと、過去12ヶ月分まで遡って取得できます。
![スクリーンショット 2023-04-23 20.38.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/f35b01e8-c8d0-8bcb-e547-5851c4ab2b76.png)

取得期間を設定し、[Request Audit log]ボタンを押していただくと、リクエスト完了となりAudit logはCSVファイルでダウンロードが可能です。
AdminのみUIから取得が可能なので、他のユーザーは引き続きサポートに問い合わせが必要となります。



# コンフィグコンパイルサイズ制限の拡大
CircleCIのコンフィグには、これまで3MBのコンパイルサイズ制限があり、この制限を超えるとパイプラインが実行できないようになっていました。今回、コンフィグのコンパイルサイズの上限を<b>4MB</b>に引き上げました。
それでもサイズ超過で悩んでいるお客様は、CircleCIの有料サポートを検討していただけると、Config Reviewなどのサポートを提供しております。

# “Infrastructure Failure” のジョブステータスバッジ
CircleCI UIのジョブステータスバッジにInfrastructure Failureのバッジが追加されました。
以前は、ジョブの失敗がインフラストラクチャの障害によるものか、テストの失敗などの正当な障害によるものかを判別するのは難しく、どちらの場合も「Failure」バッジが表示されていました。
CircleCIがジョブを実行する基礎的なインフラストラクチャで問題が発生した場合、このジョブステータスバッジが表示されます。
![スクリーンショット 2023-04-23 21.11.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/c01451d5-68ed-468d-a0b0-c31ffc627bf3.png)


# macOS　M1マシン
ついに、Apple Silicon M1マシンへの対応が開始いたしました！
全ての有料プランに適用され、コンフィグファイルからリソースクラス名を```macos.m1.large.gen1```に設定するのみで、利用が開始できます！


| Resource Class | CPU | RAM | Credits per min |
|:------------:|:------------:|:------------:|:------------:|
| macos.m1.large.gen1      | 8GB        | 12GB         | 400         |


そして、今年10月に利用ができなくなるmacOSリソースクラスもここで紹介させていただきます。
![スクリーンショット 2023-04-23 21.32.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/67f1ce75-c837-b3be-89ec-b130e93c203b.png)
macOS MediumおよびLargeのリソースクラスサポートが10月2日を持ちまして終了いたします。
お早めにGen2以降のリソースクラスへの変更をお願いいたします。
最新のマシンを利用し、さらに開発効率を上げてみませんか？

# プロジェクト制限付きコンテキスト

以下の方法でコンテキストを制限するには、組織管理者である必要があります。

- CircleCIウェブアプリの[Organization Settings]>[Contexts]ページに移動します。
- コンテキストのリストが表示されます。

既存のコンテキストの名前を選択するか、新しいコンテキストを使用する場合は、[Create Context]ボタンをクリックします。
Contexts by Projectsというコンテキストを試しに作成してみました。
![スクリーンショット 2023-04-24 9.05.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/2b5ecc9f-bcaa-9516-7351-1ab9464675c4.png)

作成したコンテキストをクリックするとこのように表示されます。
![スクリーンショット 2023-04-24 9.06.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/41c1b66a-f4da-1ee6-d567-3f75b4bd627e.png)

[Add Project Restriction］ボタンをクリックすると、ダイアログボックスが表示されます。
![スクリーンショット 2023-04-24 9.06.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/17f3571f-323d-f701-bc6a-621da84de24a.png)


コンテキストに追加するプロジェクト名を選択し、[Add Project Restriction］ボタンをクリックします。
これで、コンテキストの使用が指定したプロジェクトに限定されました。
プロジェクトに限定した環境変数を追加したい場合は、［Add Environment Variables］をクリックして、環境変数をコンテキストに追加することができます。

# VS Codeの拡張機能からSSHでジョブを再実行
昨年末にCircleCIのVS Code拡張機能がリリースされました！
詳細のセットアップ方法については私のチームメイトの[Chiyoさんの記事](https://qiita.com/supermonkey_chocolate/items/3ebfa923d3e46c01bf01)をご参照ください。


拡張機能のインストールが終わると、CircleCIアカウントを紐付ける作業が必要となります。
CircleCIアイコンがVSCodeの左側メニューに出てきたら、Personal API tokensを入力する必要があります。
CircleCIウェブアプリより、[User Settings]に移動し、[Personal API Tokens]画面から[Create New Token]ボタンより発行したAPIキーをコピーしてきて、VSCode内で設定していきます。

```.circleci/config.yaml```を含むプロジェクトフォルダを開くとVSCodeよりパイプラインが見れるようになります。
![スクリーンショット 2023-04-24 9.28.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/e0cd6e71-f39c-88d7-37c5-1bd4c82f085f.png)

すでに表示されているパイプラインの右側SSHアイコンよりSSHデバッグを開始することもできますし、以下のようなJob Details内に表示されているSSHボタンよりデバッグを開始することも可能です！
![7a8906c18b6ae152c08699b8f8b451fe70eb0dde.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/5d346919-c19f-e63c-564a-9eb0e992c48d.jpeg)

VSCode拡張機能を使用することにより、VSCからCircleCIの操作が簡単に可能となっております。
とても便利な機能なので、ぜひご利用ください！

# リモートDockerの価格とスペック変更について

最後に重大なお知らせをさせてください！
6月15日よりリモートDockerのスペックおよび価格が変更となります。
ご自身で変更されない場合は、該当するリソースクラスへ自動的に変更となります。

以前は ```setup_remote_docker```を使用するすべてのジョブは、```.circleci/config.yml```で指定されたリソースクラスのサイズに関係なく、config.ymlで指定されたリソースクラスのサイズとなるプライマリコンテナを使用し、remote medium Linux仮想マシンでDockerコマンドを実行しました。
ジョブのコンピュートクレジット/分数はコンテナサイズによって決定され、リモート仮想マシンは課金されませんでした。
これらのジョブは、コンテナと仮想マシンの間でインターネットを介したネットワークトラフィックを送信し、その結果、ネットワーク障害とジョブのパフォーマンス低下の両方をもたらしていました。

今回の変更により、以下の点が変わりました！
すべてのリモートDockerジョブは1つの仮想マシンで実行されるだけなので、
- リモートDockerエンジンは必要なだけのコンピュート数を使用できるようになります
- インターネットを介したネットワーク転送がないため、ジョブのパフォーマンスが向上し、ジョブの信頼性も高まります
- コンピュートクレジット/分の数は、仮想マシンのサイズによって決まります

UI上にも変更が加わり、setup_remote_dockerを使用するジョブは、CircleCI UIで「Docker Executor」ではなく「Remote Docker」と表示されます。
![HQVcUkMYNiBJRsjVYxNjo5fDleKpJKVD_8DWjwQC1oDRwNtPSIESrL5x7PV1W3OHHAD6aLSKap0rLij9ORjRLegUpRt6u0KXbFeTElf2LaUFgPggoQmXxCx-Tf72SMYC60yB41bdLBEhmSvu7InDzMs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/feb40e84-c830-4240-1ea3-54832f1db6a2.png)

これにより、CircleCIウェブアプリのPlan UsageページやInsightsなどでsetup_remote_dockerを使用しているジョブを簡単に確認でき、リモートDocker以外のジョブとのパフォーマンス比較も可能になります。

新しいリモートDocker executorを使用する際のジョブの価格は以下となります。
![a7cae20ba5e905f74d7bd86d6d63294cccdc0561.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634965/40211c9e-0499-bc4e-a473-d4f862d6aec4.png)

2023年6月15日以降、```.circleci/config.yml``` ファイルで定義されたジョブが、```setup_remote_docker``` 機能で <b>Small Docker</b>リソースクラスを使用する場合、ジョブは実行され、Executor = Remote Docker, <b>Resource Class = Medium</b> として CircleCI UI に表示されます。

2023年6月15日以降```.circleci/config.yml``` ファイルで定義されたジョブが ```setup_remote_docker``` 機能で <b>Medium+ Docker</b>リソースクラスを使用する場合、ジョブは Executor = Remote Docker, <b>Resource Class = Large</b> として実行されて、CircleCI UI に表示されます。

自動での変更を避けたい場合、お客様自身でConfigファイルよりサイズの書き換えをお願いいたします。



# おわりに
CircleCI最新機能上半期総集編いかがでしたでしょうか？
実際にCircleCIで働いているわたしでさえ、リリースされていることに気づいていない機能などがあり、とても勉強になりました！
皆様もぜひ新機能をご利用いただき、CircleCIを活用していただければ嬉しいです！

その他、機能要望がございましたら[こちら](https://circleci.canny.io/)より作成および投票をよろしくお願いいたします！！

参考URL
[CircleCI RoadMap](https://circleci.com/product-roadmap/?utm_source=google&utm_medium=sem&utm_campaign=sem-google-dg--japac-en-dsa-tROAS-auth-brand&utm_term=g_-_c__dsa_&utm_content=&gclid=CjwKCAjw0N6hBhAUEiwAXab-TVNwdeTy79NfReXSypoqpUF0qJRCebPMC721069VBe4JGEyhl4bb8hoCs0MQAvD_BwE)
[CircleCI Changelog](https://circleci.com/changelog/)