🦁

CircleCI : URL Orbs (2) ~Private形式のURL Orbs

に公開

前回の記事では新しいOrbの形態であるURL Orbをテストしました。
従来型のレジストリ登録型OrbにはPublicとPrivateの2種類があったように、URL Orb には、(1) 公開URLから誰でも利用可能な Public型 と、(2) GitHub認証を必要とする Private型 の2種類があります。

前回の記事ではPublic型、つまりだれでもアクセス可能なURLによるOrbを試しましたが、この記事ではさらにPrivate型、つまり認証が必要なGitHubリポジトリに配置されたOrbをテストしていきます。

さっそくやってみる

1. GitHub App の設定確認

まず、OrganizationのGitHub連携設定を確認します。VCS Connectionを左ペインからクリックします。

この例ですとGitHubのh-kameda-sakuraという組織がCircleCIのOrganizationに許可されています。
歯車マークをクリックしてGitHubの認可設定画面を開きます。

この状態では、CircleCIのプロジェクトがGitHubのh-kameda-sakuraという組織の全レポジトリへのアクセスが可能となっています。
以下の様に特定レポジトリを複数選択することも可能です。

2. Privateレポジトリの作成 と URL Orbsの配置

ではorbというプライベートレポジトリを作成します。

その中に前回の記事と同じ以下のorbs/greeting.ymlを配置します。

greeting.yml
# orbs/greeting.yml
version: 2.1
description: A greeting command orb with Node.js installation

commands:
  greet:
    description: Greet someone with a "hello" and install Node.js
    parameters:
      to:
        type: string
        default: World
      node_version:
        type: string
        default: "20"
        description: Node.js version to install
    steps:
      - run:
          name: Install Node.js
          command: |
            # Prereqs
            sudo apt-get update -y
            sudo apt-get install -y curl ca-certificates
            # Node.js (Ubuntu/Debian)
            curl -fsSL https://deb.nodesource.com/setup_<< parameters.node_version >>.x | sudo -E bash -
            sudo apt-get install -y nodejs

            # Verify
            echo "Node.js version: $(node --version)"
            echo "npm version: $(npm --version)"

      - run:
          name: Greet with Node.js
          command: |
            echo "Hello << parameters.to >>"
            echo "Node.js << parameters.node_version >> is now installed!"
            node --version

3. config.yml の修正

次にワークフロー本体のconfig.ymlを修正します。

config.yml
# .circleci/config.yml
version: 2.1

orbs:
  # URL Orb を生(なま)で参照します(ブランチ名は main を想定)
  greeting: https://raw.githubusercontent.com/h-kameda-sakura/orb/main/orbs/greeting.yml

jobs:
  demo:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - greeting/greet:
          to: "kameda-san"
          node_version: "20"

workflows:
  use-greeting:
    jobs:
      - demo

以下の部分が前回との変更点です。先ほど作成したorbというプライベートレポジトリに配置されているURL orbsを指しています。

greeting: https://raw.githubusercontent.com/h-kameda-sakura/orb/main/orbs/greeting.yml

4. URL Orb prefixes の修正

以下の様に認証付きURL Prefixesを登録します。

認証方式がGitHub Appとなっています。
Step1で確認したように、CircleCIのOrganizationに登録されているGitHubAPPがorbというプライベートレポジトリへのアクセス権を保有しているため、アクセスが可能となります。

Discussion