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

パイプラインからリポジトリを変更する必要がある場合、変更をプッシュ バックすることができます。既定で設定されている 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. bitbucket-pipelines.yml ファイルのスクリプト セクションに以下を追加します。

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 キー] > [キーを生成] をクリックします。

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

  • 上部のナビゲーション バーで [設定] (歯車アイコン ) を選択してから、[Bitbucket パーソナル設定] > [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 でアカウントに公開キーを追加して、上部のナビゲーション バーで [設定] の歯車アイコンを選択し、[Bitbucket パーソナル設定] > [SSH キー] を選択します。

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

MacOS

1 cat <keyfile> | base64 | pbcopy

Linux

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

bitbucket-pipeline.yml スクリプトで次のコマンドを実行し、ssh origin を使用するように git を構成して、ssh 非公開キーを適切な場所にコピーします。

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 で、上部のナビゲーション バーにある [設定] (歯車アイコン ) を選択してから、[Bitbucket パーソナル設定] > [アプリ パスワードを作成] を選択します。

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

  • bitbucket-pipelines.yml ファイルで、Bitbucket のユーザー名とアプリ パスワードで認証するようにリモート URL を変更し、git でアプリ パスワードを使用するように構成します。

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

その他のヘルプ