解決したい問題
Azure Pipelineのスクリプト内でgit submoduleコマンドを使おうとすると、認証が通らずに失敗する。
submoduleのURL自体にトークンを入れておけば通るが、リポジトリ自体にトークンを入れてしまうと変更時などに困るし、できればパイプライン側からトークンを与えたい。
解決方法
次のように-cオプションを使うことで、実行時にトークンを与えることが出来た。
git -c http.extraheader="AUTHORIZATION: bearer <トークン文字列>" submodule ・・・
応用
Azure Pipelinesの場合、同一のグループ内のリポジトリを参照するのであれば、次のようにSystem.AccessToken変数を与えることでビルド時トークンを使ってそのままアクセスさせることが出来る。
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" submodule ・・・
これで、同一グループ内のリポジトリをsubmoduleにする場合に、トークンで悩む必要がなくなった。
ちなみに、クラシックパイプラインの場合は$(System.AccessToken)を使うためには、さらに「Allow scripts to access the OAuth token」設定をONにする必要がある点に注意。