ビルド アーティファクトの公開とリンク
パイプラインの結果ビューからアーティファクトを直接ダウンロードできます。アーティファクトに 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 認証トークンを含む) を定義済みである必要があります。
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 ファイルをチェックすることができます。