Circle CI で kintone カスタマイズをアップロードする Orbs を作ってみよう
「CI/CD戦国時代」と言われる今日この頃、弊社でも案件によって CircleCI を使用してきたのですが、見よう見まねでよく分からないまま使用してきたため、ちゃんと勉強したいなと思っていました。
CircleCI Japan で 入門ハンズオンセミナーを定期的に行っているということで参加してきました。
ハンズオンの内容は以下の通りで Circle CI の基本からビルドの仕組み、高速化するためのテクニックなど、順序立てて学ぶことができました。これから Circle CI を使っていこうという方には是非オススメしたい内容です。
Circle CI を使っていくと `.circleci/config.yml` に記述する内容がどんどん増えていきます。 Circle CI 2.1 で Orbs という「CircleCIの設定を再利用して、さらにそれを自由に配布できる仕組み」がサポートされたそうなので、自分でも Orbs を作ってみることにしました。
Orbs の作成手順 はググるといくつか出てくるのですが、サイボウズの生産性向上チームに所属されている miyajanさんのブログ記事が最も分かりやすかったです。以下の手順で Orbs を作成していきます。
- Orbs のセキュリティ設定
- CircleCI CLI のインストール
- Namespace の作成 (これがちょっと分かりにくい)
- circleci orb create コマンドの実行
- Orbs の内容を YAMLファイル内に実装
- circleci orb validate
- Orbs を発行、動作確認
3. の Namespace を作成する際に GitHub Organization の管理者である必要があるので 1. Orbs のセキュリティ設定を始める前に、まず Organization を使用・作成していなければ Organization を作成し、その状態で Circle CI にログインして左上のプルダウンメニュー「SWITCH ORGANIZATION」で Organization に切り替えてから作業を始めるのが良いです。
GitHub の無料枠では Organization を 1つのみ作成することができ、1つの Organization に対して作成できる Namespace は 1つのみなので注意が必要です。
CircleCI CLI で circleci namespace create コマンドを実行し、Namespace が作成されると以下のように表示されます。
$ circleci namespace create r3yamauchi github Organization名You are creating a namespace called "r3yamauchi".This is the only namespace permitted for your github organization, Organization名.To change the namespace, you will have to contact CircleCI customer support.✔ Are you sure you wish to create the namespace: `r3yamauchi`: y
Namespace `r3yamauchi` created.
Please note that any orbs you publish in this namespace are open orbs and are world-readable.
今回は kintone の Javascript カスタマイズをアップロードする Orbs を作成してみました。https://github.com/kintone/customize-uploader で kintone-customize-uploader というプログラムが公開されているので、これを使用する内容にします。
version: 2.1jobs:
upload:
executor: customize-uploader
steps:
- checkout
- run:
name: kintone customize upload
command: npx @kintone/customize-uploader dest/customize-manifest.jsonexecutors:
customize-uploader:
docker:
- image: circleci/node:latest
kintone-customize-uploader は npm install
して使うもののような気がしますが、これでも動くので今回はよしとしましょう。簡単な Orbs を作る場合はベースイメージ(kintone-customize-uploader は Node.js で動くので Node.js の Docker イメージを使用します)に run ステップを並べて必要なコマンドをインストールしていき実行すれば良いと思います。実行速度を高めたいなら、必要なものをインストール済みの Docker イメージを自分でビルドして使えばよさそうです。コマンドを一行実行するだけなら Orbs 化するメリットがないのですが、一作目なので許してください。
Orbs を実装したらcircleci orb validate Orbsを実装したファイル名.yml
して
circleci orb publish Orbsを実装したファイル名.yml r3yamauchi/customize-uploader@dev:first
( circleci orb create
コマンドを実行した時の名前を指定)して
circleci orb publish promote r3yamauchi/customize-uploader@dev:first patch
すると公開されます。
公開した Orbs を使う側 .circleci/config.yml
はこんな感じ
version: 2.1
orbs:
kintone-customize: r3yamauchi/customize-uploader@0.0.2jobs:
build:
docker:
- image: circleci/node:8working_directory: ~/reposteps:
- checkout
- run: npm install
- run: npm run buildworkflows:
pipeline:
jobs:
- kintone-customize/upload
問題なく使えました。
CircleCI は日本語ドキュメントがとても充実しています。上手に使っていければと思います。