Orb オーサリングに関するよくあるご質問

よく寄せられるご質問や技術的な問題など、Orbs のオーサリングに役立つ情報をまとめました。

名前空間の要求または Orb のパブリッシュに伴うエラー

  • 質問: 名前空間を要求または安定版 Orb をパブリッシュしようとするとエラーが発生します。

  • 回答: 組織オーナーまたは管理者でない可能性があります。

組織が要求できる名前空間は 1 つだけです。 組織の名前空間を要求するには、認証中のユーザーがその組織内でオーナーまたは管理者の権限を持っている必要があります。

必要な権限レベルがない場合、下記のようなエラーが表示されることがあります。

Error: Unable to find organization YOUR_ORG_NAME of vcs-type GITHUB: Must have member permission.: the organization 'YOUR_ORG_NAME' under 'GITHUB' VCS-type does not exist. Did you misspell the organization or VCS?

詳細については、Orb CLI の権限の一覧表を参照してください。

API トークンの保護

  • 質問: ユーザーの API トークンなどの機密情報を保護するにはどうしたらよいですか。

  • 回答: API キーのパラメーターとして env_var_name パラメーター型を使用してください。 このパラメーター型は、有効な POSIX 環境変数名の文字列のみを入力値として受け入れます。 パラメーターの説明で、この環境変数を追加するようにユーザーに指示してください。

詳細については、以下を参照してください。

環境変数

  • 質問: ユーザーに環境変数の追加を求めるにはどうしたらよいですか。

  • 回答: 環境変数名のパラメーターを作成してください。 変更できない 静的な名前を持つ環境変数でも同じように対応します。 そして、そのパラメーターに正しいデフォルト値を割り当てます。 変更できない環境変数の場合は、その旨をパラメーターの説明に記載します。 また、変更できる環境変数かどうかを問わず、API キーの取得方法をユーザーに示してください。

必須の環境変数はバリデーションすることをお勧めします。 詳細については、「Orb のオーサリングのベスト プラクティス」を参照してください。

詳細については、以下を参照してください。

サポートされているプログラミング言語

CircleCI Orbs では、再利用可能な CircleCI 設定ファイル</a>をパッケージ化します。たとえば、コマンドは、特定の Executor 内で実行できますが、その Executor は、 カスタム ジョブで コマンド を使用する場合はユーザー、再利用可能なジョブを使用する場合は Orb オーサーによって定義されます。 ロジックが実行される環境に応じて、使用する言語を決定してください。</p>

  • 質問: コマンド ロジックの記述にはどのプログラミング言語を使用できますか。

  • 回答: 移植性と汎用性に最も優れているのは、POSIX 準拠の bash です。 Orb を共有する予定であれば、この言語を使用することをお勧めします。 ただし、Orb は高い柔軟性を誇り、他のプログラミング言語やツールも自由に実行できます。

bash

bash は、すべての Executor において最もよく使用されているため、お勧めの言語です。 bash は、ネイティブの run コマンドを使用して直接、簡単に記述できます (この方法が推奨されます)。 MacOS と Linux のデフォルトのシェルは bash になる予定です。

対話型インタープリター (Python など)

ユースケースによっては、Orb が特定の環境にしか存在しないことがあります。 たとえば、Orb が一般的な Python ユーティリティとして使用される場合は、Python を Orb の依存関係として要求した方が合理的です。 run コマンドの shell パラメーターを、次のように変更して使用してください。

steps:
  - run:
    shell: /usr/bin/python3
    command: |
      place = "World"
      print("Hello " + place + "!")

バイナリ

このオプションは、可能な限り使用しないことを強くお勧めします。 時に、CLI ツールなどのリモート バイナリ ファイルをフェッチしなければならない場合があります。 これらのバイナリは、パッケージ マネージャーからフェッチするか、可能な場合は GitHub リリースなどの VCS でホスティングする必要があります。 Homebrew を AWS Serverless Orb の一部としてインストールする例を以下に示します。

steps:
  - run:
    command: >
      curl -fsSL
      "https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh" | bash
      /home/linuxbrew/.linuxbrew/bin/brew shellenv >> $BASH_ENV
    name: Homebrew のインストール (Linux 向け)

コマンドとジョブの比較

  • 質問: コマンドとジョブのどちらを作成するべきですか。

  • 回答: どちらでもかまいません。ただし、実行したいタスクに大きく依存します。

Orb のコマンドは、ユーザーか Orb 開発者がジョブ内で何らかのアクションを実行するために使用します。 コマンド自体は、自身が含まれているジョブを認識しません。ユーザーは自由自在にコマンドを使用できます。 コマンドは、CLI アプリケーションを自動的にインストールしたり、インストールと認証を実行したりする場合などに便利です。

ジョブは、特定の実行環境内のステップやジョブの集まりを定義したものです。 ジョブでは通常、実行環境と実行対象のステップを指定するので、自由度はあまりありません。 ジョブは、デプロイなどのタスクを自動化する場合に便利です。 デプロイ ジョブでは、Python などの一般的な実行プラットフォームを選択するだけで、ユーザー コードのチェックアウト、CLI のインストール、デプロイ コマンドの実行を自動的に完了できます。ユーザーが追加の構成を行う必要はほとんど、あるいはまったくありません。

詳細については、以下を参照してください。

関連項目