Node.jsGitHubCircleCICICD

CircleCI に登録している secrets を確認する

はじめに

最近、 CircleCI に登録していた secrets を確認することがありました。 CLI tool の CircleCI-Env-Inspector が公開されていたのでその使い方を記載します。

CircleCI-Env-Inspector について

CircleCI に登録している secrets を出力する Node.js 制の CLI tool です。

出力出来る secrets は以下 3 つです。

  • Organization に定義する "Context variables"
  • Project に定義する "Project environment variables", "Project SSH keys"

準備

CircleCI-Env-Inspector を実行するためには以下が必要です。

  • (必須) CircleCI Personal API Token
  • Docker, Shell を実行出来る環境
    • 用意できない場合は、 run.sh, Dockerfile を確認し実行環境を用意します

CircleCI Personal API Token の発行

User Settings の Personal API Tokens にアクセスし Token を発行します。

今回は、 Token Name を CircleCI-Env-Inspector とし Token を発行します。 Token は CircleCI-Env-Inspector を実行する際に入力します。安全な場所に保存しておきましょう。

Personal API Tokens (一覧)Personal API Tokens (発行)
image.pngimage.png

CircleCI-Env-Inspector を実行する

CircleCI-Env-Inspector を clone します。

# HTTPS を利用する場合
git clone https://github.com/CircleCI-Public/CircleCI-Env-Inspector.git
# SSH を利用する場合
git clone git@github.com:CircleCI-Public/CircleCI-Env-Inspector.git
# GitHub CLI を利用する場合
gh repo clone CircleCI-Public/CircleCI-Env-Inspector

clone が完了したら CircleCI-Env-Inspector directory に移動します。

> cd path/to/CircleCI-Env-Inspector

その後、run.sh を実行します。 ? Enter your CircleCI API token [hidden] と表示実行が中断します。 先ほど発行した CircleCI Personal API Token を入力し Enter を押下します。

> ./run.sh
Building Docker image...
[+] Building 16.1s (10/10) FINISHED
 => [internal] load build definition from Dockerfile                                                0.0s
 => => transferring dockerfile: 36B                                                                 0.0s
 => [internal] load .dockerignore                                                                   0.0s
 => => transferring context: 2B                                                                     0.0s
 => [internal] load metadata for docker.io/library/node:18                                          2.8s
 => [auth] library/node:pull token for registry-1.docker.io                                         0.0s
 => [internal] load build context                                                                   0.0s
 => => transferring context: 97.55kB                                                                0.0s
 => [1/4] FROM docker.io/library/node:18@sha256:d871edd5b68105ebcbfcde3fe8c79d24cbdbb30430d9bd6251  0.0s
 => CACHED [2/4] WORKDIR /project                                                                   0.0s
 => [3/4] COPY . .                                                                                  0.1s
 => [4/4] RUN npm install && npm run build                                                         11.4s
 => exporting to image                                                                              1.6s
 => => exporting layers                                                                             1.6s
 => => writing image sha256:cc1e35f54d28648a7fea5c5057cefe21b0ab4e7644395b402bfe52a41583e9f8        0.0s
 => => naming to docker.io/library/cci-env-inspector                                                0.0s
Running Docker image...
? Enter your CircleCI API token [hidden]
Found X accounts.
Fetching data for xxxxxx from GitHub...  1/X
  Fetching Contexts...
  Fetching Projects...
  Fetching Project Variables...
Fetching data for mziyut from GitHub...  2/X
  Fetching Contexts...
  Fetching Projects...
  Fetching Project Variables...

 Done!
 Data saved to circleci-data.json
Extracting data from container...
Cleaning up...
Done.

実行が完了すると 同 directory に circleci-data.json が生成されます。 ※ 一部の文字を xx に置換しています。

[
  {
    "xxxx": {
      "contexts": [
        {
          "name": "contexts-name-here",
          "id": "xxxx-xxxx-xxxx-xxxx-xxxx",
          "url": "https://app.circleci.com/settings/organization/gh/xxxx/contexts/xxxx-xxxx-xxxx-xxxx-xxxx",
          "variables": []
        }
      ],
      "projects": [
        {
          "name": "projects-name-here-1",
          "url": "https://app.circleci.com/settings/project/gh/xxxx/projects-name-here-1/environment-variables",
          "variables": [
            {
              "name": "VARIABLES_NAME",
              "value": "xxxxxxxx"
            }
          ],
          "project_keys": []
        },
        {
          "name": "projects-name-here-2",
          "url": "https://app.circleci.com/settings/project/gh/xxxx/projects-name-here-2/environment-variables",
          "variables": [],
          "project_keys": [
            {
              "type": "project_key-type",
              "preferred": true,
              "created_at": "xxxx-xxxx-xxxx:xxxx:xxxx.xxxxZ",
              "public_key": "xxxx",
              "fingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
            }
          ]
        }
      ],
      "unavailable": []
    }
  },
  {
    "mziyut": {
      "contexts": [],
      "projects": [],
      "unavailable": []
    }
  }
]

生成された JSON ファイル内の "Context variables", "Project environment variables", "Project SSH keys" を確認し必要な対応を行います。

最後に

急遽、 CircleCI に登録していた secrets を確認する必要が生じましたが、CLI tool の CircleCI-Env-Inspector が公開されたことで簡単に確認することができました。 簡単に確認できるよう CircleCI-Env-Inspector を準備、公開頂いたことに感謝しています。

References