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

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

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

Origin 変数

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

  • ${BITBUCKET_GIT_HTTP_ORIGIN}
  • ${BITBUCKET_GIT_SSH_ORIGIN}

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

プッシュの例

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

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

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

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


新しいタグのプッシュ

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

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 クライアントを使用していない場合、以下を構成する必要があります。

  1. ${BITBUCKET_GIT_HTTP_ORIGIN}  変数を使用する origin
  2. your git client to use the proxy  (proxy url is http://localhost:29418)

Pushing back from a Pipe

If you want to push commits created inside a running pipe, you have to configure a git authentication proxy by adding the following bash command to your pipe code:

git config http.${BITBUCKET_GIT_HTTP_ORIGIN}.proxy http://host.docker.internal:29418/

代替の認証方法を使用したプッシュ バック

リポジトリでブランチ権限が有効になっていて、既定で構成された http origin を使用してコミット バックできない場合や、"Bot" アカウントまたは他の認証方法を使用してコミットしたい場合は、いくつかのオプションがあります。セキュリティと、http origin との互換性のため、OAuth を使用することをおすすめします。

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

OAuth

  • Bitbucket で、左下のアバターから [Bitbucket 設定] > [OAuth] > [コンシューマーを追加] をクリックします。

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

  • 名前と任意で説明を提供し、コールバック url を https://bitbucket.org に設定します。

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

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

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

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

  • bitbucket-pipelines.yml ファイルのスクリプト セクションに以下を追加します。

# 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 を構成する必要があります。次のコマンドを実行します。

git remote set-url origin ${BITBUCKET_GIT_SSH_ORIGIN}

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

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

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

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

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

ssh-keygen
  • Bitbucket UI でアカウントに公開鍵を追加し、アバター > [Bitbucket 設定] > [SSH キー] をクリックします。

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

cat <keyfile> | base64 -d -w 0 | pbcopy

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

- 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 でアプリ パスワードを使用するように構成します。

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

最終更新日 2019 年 11 月 18 日

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

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