変数とシークレット

パイプラインのリファレンス変数

変数は、ビルド コンテナの環境変数として設定されています。Bitbucket-pipelines.ymlファイルか、次の方法で変数を参照して呼び出す任意のスクリプトから変数にアクセスすることができます。 

1 $AWS_SECRET

ここのAWS_SECRETは変数の名前です

デフォルトの変数

Bitbucket Pipelines は、ビルドで利用でき、スクリプトでも使用可能な一連の既定の変数を提供します。

同じ名前の変数を指定してデフォルトの変数をオーバーライドすることができます。

既定の変数

説明

CI

既定値は true です。パイプラインが実行されるたびに設定されます。

BITBUCKET_BUILD_NUMBER

ビルドの一意の識別子。ビルドごとに増え、一意のアーティファクト名の作成に使用できます。

BITBUCKET_CLONE_DIR

Docker コンテナ内でのリポジトリのクローン先のディレクトリの絶対パス。

BITBUCKET_COMMIT

ビルドを開始したコミットのコミット ハッシュ値。

BITBUCKET_WORKSPACE

リポジトリが所属するワークスペースの名前。

BITBUCKET_REPO_SLUG

リポジトリ名の URL 用の名前。詳細については、「スラッグとは」を参照してください。

BITBUCKET_REPO_UUID

リポジトリの UUID。

BITBUCKET_REPO_FULL_NAME

リポジトリの完全な名前 (http://bitbucket.org/ に続くすべての文字)。

BITBUCKET_BRANCH

ソース ブランチ。この値はブランチ上でのみ利用可能です。

タグまたはカスタム パイプラインのビルドでは使用できません。

BITBUCKET_TAG

ビルドを開始したコミットのタグ。この値はタグでのみ使用できます。

ブランチのビルドでは使用できません。

BITBUCKET_BOOKMARK

Mercurial プロジェクトで使用します。

BITBUCKET_PARALLEL_STEP

グループ内の現在のステップのゼロベース インデックス。例: 0、1、2、...

並行ステップでのみ使用できます。

BITBUCKET_PARALLEL_STEP_COUNT

グループ内のステップの合計数。例: 5。

並行ステップでのみ使用できます。

BITBUCKET_PR_ID

プル リクエスト ID
プル リクエストでトリガーされたビルドでのみ利用可能です。

BITBUCKET_PR_DESTINATION_BRANCH

プル リクエストの宛先ブランチ (BITBUCKET_BRANCH と組み合わせて使用)。

プル リクエストでトリガーされたビルドでのみ利用可能です。

BITBUCKET_GIT_HTTP_ORIGIN

オリジンの URL。例: http://bitbucket.org/<account>/<repo>

BITBUCKET_GIT_SSH_ORIGIN

SSH オリジン。例: git@bitbucket.org:/<account>/<repo>.git

BITBUCKET_EXIT_CODE

ステップの終了コードは after-script セクションで使用できます。値は 0 (成功) または 1 (失敗) になります。

BITBUCKET_STEP_UUID

ステップの UUID。

BITBUCKET_PIPELINE_UUID

 パイプラインの UUID。

BITBUCKET_DEPLOYMENT_ENVIRONMENT

環境名の URL フレンドリーなバージョン。

BITBUCKET_DEPLOYMENT_ENVIRONMENT_UUID

REST API 経由で環境にアクセスするための環境の UUID。

BITBUCKET_PROJECT_KEY

現在のパイプラインが属するプロジェクトのキー。

BITBUCKET_PROJECT_UUID

現在のパイプラインが属するプロジェクトの UUID。

BITBUCKET_STEP_TRIGGERER_UUID

(プッシュ、マージなどを実行することによって) ビルドを開始したユーザー、およびスケジュールされたビルドの場合は、パイプライン ユーザーの UUID。

BITBUCKET_STEP_OIDC_TOKEN

このステップを識別する Bitbucket OIDC プロバイダーによって生成された「ID トークン」です。このトークンは、AWS や GCP などのリソース サーバーへの認証情報を使用しないアクセスに使用できます。詳細

 

ユーザー定義変数

変数は、アカウント レベル、リポジトリ、およびデプロイ環境のレベルで、追加、編集、または削除できます。既存の変数と同じ名前を使用した場合、それをオーバーライドできます。オーバーライドの順序は、デプロイメント > リポジトリ > アカウント > デフォルト変数です。各デプロイ環境は独立しているので、各環境で同じ変数名に別の値を使用できます。

始める前に、次の点に注意してください。

  • 名前には ASCII 文字、数字、およびアンダースコアのみを含めることができます。

  • 名前では大文字と小文字が区別されます。

  • 名前の先頭を数字にすることはできません。

  • シェルで定義された変数は使用しないでください。コマンド printenv のステップを使用してそれらを見つけることができます。

PATH という名前のパイプライン変数を構成しないでください。構成すると、すべてのパイプライン ステップが中断する可能性があります。これは、シェルがコマンドを見つけるために PATH を使用することにより発生します。したがって、通常のロケーションのリストを置き換えると、docker のようなコマンドは動作しなくなります。

ワークスペース変数

ワークスペースに指定した変数は、そのワークスペースに所属するすべてのリポジトリからアクセスできます。ワークスペースの変数を管理するには管理者である必要があります。

  1. 左下のアバターからワークスペースを選択します。

  2. 左側のナビゲーション サイドバーで [設定] をクリックして、ワークスペースの設定を開きます。

  3. 左側のメニューで [Pipelines] > [ワークスペースの変数] へ移動します。

  • ワークスペースの変数はリポジトリ変数で上書きすることができます。

  • ワークスペースの変数には、チームまたはアカウントに所属するリポジトリ (非公開または公開) への書き込み権限を持つすべてのユーザーがアクセスできます。

  • 変数を管理するには、ワークスペースまたはリポジトリそれぞれの管理者である必要があります。

リポジトリ変数

リポジトリで書き込みアクセス権限を持つユーザーは、リポジトリ レベルに追加されたパイプライン変数を使用できます。リポジトリ変数にアクセスし、設定するには、そのリポジトリの管理者でなければなりません。

リポジトリからリポジトリ変数を管理するには、[リポジトリ設定] > [Pipelines] > [リポジトリ変数] の順に進みます。注: リポジトリ変数はチーム変数を上書きします。

デプロイ変数

特定のデプロイ環境でのみ使用されるように変数を定義できます。

リポジトリからデプロイ変数の管理もできます。[リポジトリ設定] > [Pipelines] > [デプロイ] の順に進んでください。注: デプロイ変数はチーム変数とリポジトリ変数の両方を上書きし、各環境に固有です。

 

1 2 3 4 5 6 7 8 9 10 11 12 13 # Deployment variables will only work within deployment steps in bitbucket-pipelines.yaml image: atlassian/default-image:2 pipelines: default: - step: script: - <script> - step: name: Deploy to Test deployment: Test script: - echo $DEPLOYMENT_VARIABLE

保護された変数

変数は保護することができます。保護した変数はスクリプトで使用できますが、その値はビルド ログでは非表示になります (以下の例を参照してください)。保護された変数を編集したい場合、新しい値を指定するか削除する必要があります。保護された変数は、暗号化された値として保存されます。変数を保護するには、南京錠のアイコンをクリックします。

パドロックは値と追加の間で強調表示されます

保護された変数のマスキング

Pipelines は、ビルド ログを表示するチーム メンバーに公開されることがないよう、保護された変数をマスクします。保護された変数と一致する値がログに表示された場合、Pipelines はその値を $VARIABLE_NAME と置き換えます。

これにより、保護された変数が正常に機能しているかどうかが一見してわかりづらくなる可能性があります。次のような例で説明します。

最初に、5 の値を持つ保護された変数 MY_HIDDEN_NUMBER を作成します。

保護された変数のマスキング

次に、この変数を YAML ファイルで使用しました。

 

1 2 3 4 5 6 pipelines: default: - step: script: - expr 10 / $MY_HIDDEN_NUMBER - echo $MY_HIDDEN_NUMBER

変数の値は、スクリプトで使用することはできますが、ログには公開されません。変数名 $MY_HIDDEN_NUMBER と置き換えられます。

ビルド ログの例

出力の生成方法に関わらず、ログ ファイルに保護された変数の値が出力される場合、それらはすべて Pipelines によってマスクされます。

保護された変数の値を一般的な用語に設定している場合、それがログ ファイルに表示される際には必ず変数名で置き換えられます。保護された変数は一意の認証トークンやパスワードで使用するために設計されているため、クリア テキストで使用される用語と重複する可能性は考慮されていません。

また Pipelines は、URL で変数を使用する際にそれらが表示されるのを防ぐため、変数の値について、複数の基本的なエンコーディング (URL エンコーディングなど) の照合を行います。

Bitbucket Pipelines で SSH キーを使用する

次のような場合、Bitbucket Pipelines で SSH キーをセットアップすることができます。

  • ビルドで Bitbucket やその他のホスティング サービスとの認証を行い、非公開の依存関係を取得する必要があります。

  • デプロイで成果物をアップロードする前にリモート ホストまたはサービスとの認証を行う必要があります。

  • ビルドで SSH、SFTP、または SCP などのツールを使用したい

Bitbucket Cloud のリポジトリに SSH の公開キーと非公開キーのペアを追加し、公開キーをリモート サービスまたはマシンに追加する必要があります。

Bitbucket のリポジトリに SSH キーを追加すると、そのリポジトリへの書き込みアクセス権を持つすべてのユーザーがリモート ホストへのアクセス権を持ちます。 

Bitbucket では、キーに PEM 形式が必要です。カスタム キーを PEM 以外の形式で使用するとエラーになります。

Bitbucket Cloud リポジトリへのプッシュやプルを問題なく実行できるはずです。ただし、SSH を使用する必要がある場合 (bot アカウントを使用する場合など) やブランチ権限が有効になっている場合は、「SSH キーのセットアップ」を参照してください。

Bitbucket リポジトリでの SSH の使用については次のページをご参照ください。

すべての利用可能な Docker イメージに SSH がデフォルトでインストールされているわけではありません。デフォルトのパイプライン イメージを使用している場合は問題は起こりませんが、独自のイメージを指定する必要がある場合、SSH がすでにインストールされていることを確認するか、スクリプトを使用してインストールするようにします。

たとえば、イメージに応じて、スクリプトに以下を含めます。

apt-get update -y
apt-get install -y ssh

Pipelines で SSH キーを使用する手順

ステップ 1: Bitbucket に SSH キーを追加する

新しい SSH キー ペアを生成することをおすすめしますが、キーの要件が Bitbucket の 2048 ビットの RSA キーとは異なる場合は既存のキー ペアを使用することもできます。いずれの方法で SSH キーを追加する場合も、非公開キーはビルドのパイプラインに追加 SSH キーとして自動的に追加され、bitbucket-pipelines.yml ファイルで指定する必要はありません。

ビルドのパイプラインが利用できる SSH キーが Docker イメージにすでに含まれていて、この手順で SSH キーを追加する必要がない場合、ステップ 2 に進んでください。

Pipelines で使用する SSH キーにはパスフレーズを含めないでください

Bitbucket Pipelines では、リポジトリについて 1 つの SSH キーがサポートされます。複数のキーを使用する場合、Bitbucket Pipelines のセキュアな環境変数として追加し、bitbucket-pipelines.yml ファイルから参照することができます。後述の「複数の SSH キーの使用」をご参照ください。

新しい SSH キー ペアの生成方法 (推奨):

  1. [リポジトリ設定] で、[Pipelines] にある [SSH キー] に移動します。

  2. [キーの生成] をクリックして新しい SSH キー ペアを作成します。

後述のステップ 2 に進みます。

既存のキー ペアを追加する方法:

キーの要件が Bitbucket の 2048 ビットの RSA キーとは異なる場合は、既存のキー ペアを使用することもできます。 セキュリティ上の理由により、個人の SSH キーを追加することは推奨されません。既存の bot のキーを使用することをおすすめします。

  1. [リポジトリ設定] で、[SSH キー] に移動します。 

  2. フィールドに公開および非公開キーを追加して、[キー ペアを保存] をクリックします。

ステップ 2: 既知のホストを更新する

Pipelines では、リモート ホストのフィンガープリントやホスト アドレスを保存したり調査したりすることができます。これにより、リモート ホストが提供した公開キーがそのホストの ID に一致するかどうかを視覚的に確認して、なりすましや中間者攻撃を検出できます。また、そのホストとの以降の通信を自動的に検証済みにできます。

リポジトリの [設定] で [SSH キー] に移動し、既知のホストのアドレスを追加します。ホストのフィンガープリントを表示するには、[フェッチ] をクリックします。注: Bitbucket Pipelines では、Bitbucket と GitHub サイトのフィンガープリントがすべてのパイプラインに自動的に追加されています (ただし、前述のユーザー インターフェイスには表示されません)。

ステップ 3: リモート ホストに公開キーを追加する

Pipelines がホストを認証する前に、リモート ホストに公開キーをインストールする必要があります。Pipelines ビルドにほかの Bitbucket リポジトリへのアクセス権を与えたい場合、公開キーをそのリポジトリに追加する必要があります。

リモート ホスト

サーバーへの SSH アクセスが可能な場合、ssh-copy-id コマンドを使用できます。このコマンドは一般的に、リモート ホストの ~/.ssh/authorized_keys ファイルにキーを追加します。

1 ssh-copy-id -i my_ssh_key username@remote_host

サーバへの SSH アクセスをテストします。

1 ssh -i ~/.ssh/my_ssh_key user@host

.ssh ファイルを変更するのではなく作成する場合、権限の変更が必要となる場合があります。

  • chmod 700 ~/.ssh

  • chmod 600 ~/.ssh/authorized_keys

他の Bitbucket Cloud リポジトリ

Pipelines ビルドにほかの Bitbucket リポジトリ (ビルドの実行元とは異なるリポジトリ) へのアクセス権を与えたい場合、次の手順を実行します。

  1. 前述のステップ 1 の説明に従い、ビルドが実行されるリポジトリの設定で SSH キーを追加します (Bitbucket Pipelines で新しいキーを作成することも、既存のキーを使用することもできます)。

  2. 他の Bitbucket リポジトリ (ビルドにアクセス権を与えるリポジトリ) の設定に、SSH キー ペアの公開キーを直接追加します。
    Bitbucket リポジトリに公開キーを追加する方法の詳細については、「アクセス キー」をご参照ください。

パイプラインで複数の SSH キーを使用する

Bitbucket Pipelines では、リポジトリについて 1 つの SSH キーがサポートされます。ただし、パイプラインで複数のキーを使用したい場合、それらをセキュアな変数として追加し、bitbucket-pipelines.yml ファイルから参照できます。パイプラインで複数の SSH キーを設定して使用するには、次の手順に従います。

1: (必要に応じて) SSH キーを生成する 

パスフレーズを持たない RSA キー ペアを生成します。Linux または OS X の場合、ターミナルで次の操作を実行します。

1 $ ssh-keygen -t rsa -b 4096 -N '' -f my_ssh_key

2: 非公開キーを暗号化する

Pipelies では、現時点では環境変数での改行がサポートされません。このため、次の操作を実行して非公開キーを base-64 エンコードします。

Linux

1 $ base64 -w 0 < my_ssh_key

Mac OS X

1 $ base64 < my_ssh_key

3: キーをセキュアな変数として追加する

非公開キーをリポジトリ変数として受け渡す場合、次のようなセキュリティ上のリスクがあります。

  • パイプラインのビルドが子プロセスを生成する場合、それらにリポジトリ変数がコピーされる。

  • セキュアな環境変数は、リポジトリへの書き込みアクセスを持つすべてのユーザーが取得できる。

個人の SSH キーをリポジトリ変数として渡すのではなく、セキュリティ侵害があった場合に簡単に無効化できるよう、Pipelines 用に新しい SSH キー ペアを生成することをおすすめします。デプロイメント権限と組み合わせてアクセスを制御できるデプロイメント変数を使用することもご検討ください。

暗号化されたキーをターミナルからコピーし、リポジトリのセキュアな Bitbucket Pipelines 環境変数として次のように追加します。

  1. Bitbucket のリポジトリで、[リポジトリ設定]、[リポジトリ変数] の順に選択します。

  2. ターミナルで、base64 エンコード済みの非公開キーをコピーします。

  3. エンコード済みのキーを環境変数の値としてペーストします。[セキュア] が選択されていることを確認します。

ボックスにチェックが入って強調表示され保護された

4: 公開キーをリモート ホストにインストールする

前述の手順の「ステップ 3: リモート ホストへの公開鍵の追加」の説明に従い、リモート ホストに公開鍵を追加します。

5:  my_known_hosts ファイルを作成してリポジトリに追加する

known_hosts ファイルには、ユーザーがアクセスする SSH サーバの DSA ホスト キーが格納されます。適切なリモート ホストに接続していることを確認することが重要です。Bitbucket Pipelines では、Bitbucket と GitHub サイトのフィンガープリントがすべてのパイプラインに自動的に追加されています。

  1. リモート ホストの公開 SSH キーを含む my_known_hosts ファイルを作成します。これを行うには、次のコマンドを実行します。

    1 $ ssh-keyscan -t rsa server.example.com > my_known_hosts
  2. my_known_hosts ファイルを、パイプラインがアクセス可能なリポジトリにコミットします。

過去に SSH 経由でリモート ホストにアクセスしたユーザーの ~/.ssh ディレクトリから既存の known_hosts ファイルをコピーすることもできます。無関係なすべての行を削除します。

6: bitbucket-pipelines.yml ファイルですべての情報を関連付ける

Pipelines では、ビルドごとに新しい Docker コンテナ環境が作成されます。bitbucket-pipelines.yml ファイル内で SSH キーを参照することで、SSH キーを使用できます。 

パイプラインを実行する Docker コンテナ用に SSH キーを参照するには、次のコマンドを実行します。

1 2 3 4 5 6 7 8 9 image: node:6 # specify your Docker image here pipelines: default: - step: script: - mkdir -p ~/.ssh - cat my_known_hosts >> ~/.ssh/known_hosts - (umask 077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa) - ssh <user>@<host> 'echo "connected to `host` as $USER"'

前述の例では、ホストに接続し、echo コマンドで「connected to 'host' as <user>」を指定しています。

最終行の ssh コマンドは、既定の SSH 情報が使用されることにご注意ください。異なるキーを指定するには、次のように -i オプションを使用します。

1 ssh -i ~/.ssh/my_other_ssh_key <user>@<host>

最終行を編集して、ファイルの転送に scp を使用したり、リモート サーバーから SSH 経由でファイルをクローンするために git を使用したりするように設定することもできます。

    最終更新日 2021年03月12日)
    次でキャッシュ 9:05 PM on Oct 21, 2021 |

    その他のヘルプ