ビルド アーティファクトの公開とリンク

パイプラインの結果ビューからアーティファクトを直接ダウンロードできます。アーティファクトに 14 日以上アクセスする必要がある場合、アーティファクトをサードパーティのストレージに送信し、Bitbucket ビルド ステータス API を使用してコミット ビューでリンクを作成することができます。

ビルド ステータス API 経由で公開およびリンクしたアーティファクトへのリンクは、Bitbucket のコミットに次のように表示されます。

ステップ 1: リポジトリ所有者向けにアプリ パスワードを作成する

リポジトリの所有者かつファイルをアップロードするユーザーとして Bitbucket にログインし、[Personal settings] > [アプリ パスワード] に移動します。

リポジトリへの書き込み権限を持つアプリ パスワードを新しく作成します。生成されたパスワードがポップアップで表示されるのでそれを記録します。パスワードの名前はユーザーの識別用にのみ使われるため、「Pipelines」などの任意の名前を設定できます。

次のステップでは 2 つの値を使用します。

パラメーター
<username>リポジトリを所有かつアーティファクトをアップロードするユーザーの Bitbucket ユーザー名
<password>Bitbucket が生成したアプリ パスワード

手順 2: 認証トークンを使用して Pipelines 変数を作成する

Pipelines 設定で新しくセキュアな変数を定義します。

  • パラメーター名: BB_AUTH_STRING
  • パラメーターの値: <username>:<password> (ステップ 1 の値を使用)

この変数は、リポジトリまたはアカウント レベルで定義できます。次の例は、アカウント変数を示しています。

ステップ 3: アーティファクトを AWS に公開する

AWS や S3 に馴染みが薄い場合、弊社が提供している S3 連携の例の手順を利用することで、S3 バケットを作成し、Bitbucket Pipelines 内の関連する認証用変数を構成できます。

python s3_upload.py <bucket-id> <artifact-file> <artifact-key>

既存の AWS ツールを使用してアーティファクトを適切なロケーションにアップロードすることもできます。

ステップ 4: Bitbucket REST API を使用してアーティファクトをビルドにリンクする

変数とアプリ パスワードを設定し、アーティファクトを S3 に公開したら、ビルド スクリプトで curl を使用して、ビルド ステータス REST API 経由でアーティファクトの S3 URL を Bitbucket のコミットにリンクできます。

export S3_URL="https://${S3_BUCKET}.s3.amazonaws.com/${S3_KEY_PREFIX}_${BITBUCKET_COMMIT}"
export BUILD_STATUS="{\"key\": \"doc\", \"state\": \"SUCCESSFUL\", \"name\": \"Documentation\", \"url\": \"${S3_URL}\"}"
curl -H "Content-Type: application/json" -X POST --user "${BB_AUTH_STRING}" -d "${BUILD_STATUS}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/commit/${BITBUCKET_COMMIT}/statuses/build"


bitbucket-pipelines.yml の例

Python のサンプル プロジェクトのすべての構成要素を含む例について、以降に示します。この例のパラメーターは自身のリポジトリに合わせて調整する必要があります。また、必要なすべての変数 (AWS 認証トークンを含む) を定義済みである必要があります。

bitbucket-pipelines.yml
image: python:3.5.1
 
pipelines:
  branches:
    master:
      - step:
          script:
            - pip install boto3==1.3.0   # required for s3_upload.py
            - python run_tests.py
            - python s3_upload.py "${S3_BUCKET}" documentation.html "${S3_KEY_PREFIX}_${BITBUCKET_COMMIT}"   # upload docs to S3
            - export S3_URL="https://${S3_BUCKET}.s3.amazonaws.com/"${S3_KEY_PREFIX}_${BITBUCKET_COMMIT}"
            - export BUILD_STATUS="{\"key\":\"doc\", \"state\":\"SUCCESSFUL\", \"name\":\"Documentation\", \"url\":\"${S3_URL}\"}"
            - curl -H "Content-Type:application/json" -X POST --user "${BB_AUTH_STRING}" -d "${BUILD_STATUS}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/commit/${BITBUCKET_COMMIT}/statuses/build"

オンライン バリデーターを使用して bitbucket-pipelines.yml ファイルをチェックすることができます。

最終更新日 2020 年 4 月 21 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.