リポジトリにプッシュして戻す

パイプラインからリポジトリを変更する必要がある場合、変更をプッシュ バックすることができます。既定で設定されている http git origin の使用をおすすめします。http は事前構成済みのため、http を使用したプッシュバックはシームレスに機能します。

リポジトリをプッシュバックする際は [skip ci] を使用します。これにより、新しいコミットでパイプラインがトリガーされることを防止して、永久ループを回避します。

Origin 変数

パイプラインには、http と ssh の origin URL を含む、2 つの既定の変数があります。

  • ${BITBUCKET_GIT_HTTP_ORIGIN}

  • ${BITBUCKET_GIT_SSH_ORIGIN}

これらは、スクリプトや、パイプラインで呼び出される他のツールに origin を渡す必要がある場合に使用できます。

プッシュの例

ブランチへの変更のコミット

パイプライン内からリポジトリを動的に変更する必要がある場合、次のようなスクリプトを使用できます。

1 2 3 4 5 6 7 8 pipelines: default: - step: script: - echo "Made a change in build ${BITBUCKET_BUILD_NUMBER}" >> changes.txt - git add changes.txt - git commit -m "[skip ci] Updating changes.txt with latest build number." - git push

サンプル リポジトリへの変更のコミット」で実際の例を確認できます。

新しいタグのプッシュ

バージョン管理にタグを使用する場合、次のようなスクリプトを使用できます。

1 2 3 4 5 6 7 8 9 pipelines: default: - step: script: - echo "Made a change in build ${BITBUCKET_BUILD_NUMBER}" >> changes.txt - git add changes.txt - git commit -m "Updating changes.txt with latest build number." - git tag -am "Tagging for release ${BITBUCKET_BUILD_NUMBER}" release-${BITBUCKET_BUILD_NUMBER} - git push origin release-${BITBUCKET_BUILD_NUMBER}

新しいタグのプッシュ用のサンプル リポジトリでデモを確認できます。

代替 Git クライアントの構成

パイプラインで提供される Git クライアントを使用していない場合、以下を構成する必要があります。

  • ${BITBUCKET_GIT_HTTP_ORIGIN}  変数を使用する origin

  • git クライアントでプロキシを使用 (プロキシ URL は http://localhost:29418)

認証方法によるプッシュ バック

リポジトリでブランチ権限が有効になっていて、初期設定で構成された HTTP origin によってコミット バックできない、または「Bot」アカウントまたは別の認証方法によってコミットする場合は、いくつかのオプションがあります。

OAuth、アプリのシークレット キー、または SSH をアカウントに構成する場合、これらの資格情報を使用したアクセスを許可するリポジトリを制限することはできません。

OAuth

OAuth を使用する際は、アカウントまたはボット アカウントを持っているか作成してそのアカウントにブランチへの書き込みアクセス権限を付与し、main ブランチに直接プッシュできるようにする必要があります。

  1. Bitbucket でアバターをクリックして、ワークスペース > [設定] > [OAuth コンシューマー] > [コンシューマーを追加] の順に選択します。

  2. 新しいクライアント/コンシューマーを作成し、自身のアカウントのリポジトリへの読み取りおよび書き込み権限を付与します。

  3. 名前と任意の説明を入力して、コールバック URL を https://bitbucket.org に設定します。

  4. [これは非公開コンシューマーです] チェックボックスを選択します。

  5. [権限] > [リポジトリ] で、読み取り書き込みの両方を選択します。

  6. [保存] をクリックします。

  7. 新しく作成されたコンシューマーに移動してキーを記録します。

  8. CLIENT_ID および CLIENT_SECRET という名前のパイプライン変数としてキーを追加します。

  9. Add the following to the script section in your bitbucket-pipelines.yml file.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # Get an oauth access token using the client credentials, parsing out the token with jq. - apt-get update && apt-get install -y curl jq - > export access_token=$(curl -s -X POST -u "${CLIENT_ID}:${CLIENT_SECRET}" \ https://bitbucket.org/site/oauth2/access_token \ -d grant_type=client_credentials -d scopes="repository"| jq --raw-output '.access_token') # Configure git to use the oauth token. - git remote set-url origin "https://x-token-auth:${access_token}@bitbucket.org/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}" # Make changes and commit back. - echo "Made a change in build ${BITBUCKET_BUILD_NUMBER}" >> changes.txt - git add changes.txt - git commit -m "[skip ci] Updating changes.txt with latest build number." - git push

使用例を OAuth のサンプル リポジトリで確認できます。

Bitbucket Pipelines で管理される SSH キー ペア

  • Bitbucket で、リポジトリから [リポジトリの設定] をクリックします。

  • [Pipelines] で、[SSH キー] > [キーを生成] をクリックします。

  • 公開キーをクリップボードにコピーします。

  • 左下のアバターから [個人設定] > [SSH キー] の順にクリックします。

  • [キーを追加] をクリックして公開キーを貼り付け、名前と説明を追加します。

bitbucket-pipeline.yml ファイルで ssh origin を使用するように git を構成する必要があります。次のコマンドを実行します。

1 git remote set-url origin ${BITBUCKET_GIT_SSH_ORIGIN}

これで、追加構成を行うことなく、パイプライン内で SSH 操作を実行できるようになりました。

https://bitbucket.org/bitbucketpipelines/git-auth-ssh-configured-in-ui/

変数で管理される SSH キー ペア

この方法は、これまでの手順で SSH キーを構成していない場合にのみ、すぐに使用できる状態で提供されます。

  • コマンド ラインで、公開/非公開のキー ペアを生成します。

1 ssh-keygen
  • Bitbucket UI でアカウントに公開鍵を追加して、アバター > [個人設定] > [SSH キー] の順に選択します。

  • 秘密鍵を Base64 でエンコードし、パイプライン変数として追加します。

MacOS

1 cat <keyfile> | base64 | pbcopy

Linux

1 cat <keyfile> | base64 -w0 | xclip -selection clipboard

In your bitbucket-pipeline.yml script, configure git to use the ssh origin, and copy the ssh private key into the correct location, by executing the following commands:

1 2 3 4 - git remote set-url origin ${BITBUCKET_GIT_SSH_ORIGIN} - echo $PRIVATE_KEY > ~/.ssh/id_rsa.tmp - base64 -d ~/.ssh/id_rsa.tmp > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa

サンプル リポジトリ: https://bitbucket.org/bitbucketpipelines/git-auth-ssh-using-variables

アプリの秘密鍵

  • Bitbucket で、左下のアバターから [個人設定] > [アプリ パスワード] > [アプリ パスワードを作成] の順にクリックします。

  • アプリ パスワードとパイプラインのパスワードをセキュアな変数として生成します。

  • In your bitbucket-pipelines.yml file, configure git to use the app password by changing the remote URL to authenticate with your Bitbucket username and the app password.

1 git remote set-url origin https://<your username>:${APP_SECRET}@bitbucket.org/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}

サンプル リポジトリ: https://bitbucket.org/bitbucketpipelines/git-auth-appsecret

その他のヘルプ