Azureビルドパイプラインでpowershellタスクを構成して、githubパブリックリポジトリの開発からマスターへの変更をマージし、変更をマスターにプッシュします。私は得ています
致命的: ' https://github.com 'のユーザー名を読み取れませんでした:端末プロンプトが無効になっています
注意:
これに関するどんな助けでも大歓迎です。さらに情報が必要な場合は、このスレッドでコメントしてください。
これは実際のスニペットです。
$branchName = $env:BRANCH_NAME;
Write-Host "Getting SHA for last commit in the latest release" -ForegroundColor Blue;
$latestReleaseCommitSHA = git rev-list --tags --max-count=1;
if([string]::IsNullOrEmpty($latestReleaseCommitSHA)) {
Write-Host "Unable to get the SHA for last commit in latest release" -ForegroundColor Red;
EXIT 1;
}
Write-Host "SHA for last commit in the latest release is '$($latestReleaseCommitSHA)'" -ForegroundColor Green;
Write-Host "Merging Changes till '$($latestReleaseCommitSHA)'" -ForegroundColor Blue;
git merge $latestReleaseCommitSHA
Write-Host "Checking Conflicted Files";
$conflictedFiles = git diff --name-only --diff-filter=U
if (-Not [string]::IsNullOrEmpty($conflictedFiles)) {
Write-Host "Unable to Merge" -ForegroundColor Red;
Write-Host "There are conflicts in below files:" -ForegroundColor Cyan;
Write-Host -Object $conflictedFiles -ForegroundColor Cyan;
EXIT 1;
}
Write-Host "Merged changes to '$($branchName)'" -ForegroundColor Green;
Write-Host "Pushing changes." -ForegroundColor Blue;
git Push Origin HEAD:$branchName
Write-Host "Pushed the changes to the $($branchName) branch." -ForegroundColor Green;
理由はわかりませんが、Push
の後にmerge
を試すと、gitでユーザー名とパスワードが必要になります。
Azure DevOpsでは、デフォルトでプロンプトを無効にして資格情報を入力すると、エラーが発生します。
プロンプトを有効にするには、環境変数GIT_TERMINAL_Prompt
を1
に設定しますが、ビルド中は値を入力できず、ビルドがハングします。
エラーを修正するには、git Push
コマンドにユーザー名とパスワードまたはPersonal Access Token(PAT)を追加するだけです。
git Push https://username:password(or PAT)@github.com/username/reponame.git
https://...
はOrigin
を置き換えます。
組み込みの「サービスアカウント」があり、これは実際にはProject Collection Build Service
というPATであり、Project Collection Build Service Accounts
groupと混同しないでください。
差出人: https://marcstan.net/blog/2018/08/31/Mirror-github-gitlab-and-VSTS-repositories/
雑学:「$ env:SYSTEM_ACCESSTOKEN」がビルドサーバーによって自動生成されたPAT(個人/プライベートアクセストークン)であり、ビルド内からVSTSに対して認証できるPAT(個人/プライベートアクセストークン)リリース。これを有効にするには、ビルドまたはリリース定義内の「エージェントジョブ」を選択し、「追加オプション」の下にある「スクリプトにOAuthトークンへのアクセスを許可する」チェックボックスをオンにします。
これには2つのステップがあります。
fatal: could not read username for...
エラーを取り除くには、スクリプトがOAuthトークンにアクセスすることを許可する必要があります。最新のYAMLベースのAzure Pipelineを使用している場合は、 「スクリプトがUIのOAuth token」オプションにアクセスすることを許可します。Microsoftの回答は here です。 =。YAMLファイル(Azure-pipelines.yml
)に、以下を追加します。
steps:
- checkout: self
persistCredentials: true
OPのエラーを解決した後、コミットできず、エラーを受け取りました。
remote: 001f# service=git-receive-pack
remote: 0000000000aaTF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\c21ba3ac-5ad4-de50-bc1a-12ee21de21f0', scope 'repository'.
remote: TF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\c21ba3ac-5ad4-de50-bc1a-12ee21de21f0', scope 'repository'.
fatal: unable to access 'https://[username].visualstudio.com/[repo]/_git/[repo]/': The requested URL returned error: 403
また、アクセス許可を与える必要があります。上記の 同じページ から。 userProject Collection Build Service
をリポジトリに追加します。
注:ユーザー(1)であり、グループ(2)ではありません。
付与:
Contribute: Allow
Create Branch: Allow
Create Tag: Allow (Inherited)
Read: Allow (Inherited)
HTH
まったく同じ状況ではありませんが、これは私の同様の状況に近づいた唯一の投稿なので、ここに私の解決策を追加する価値があると思いました。ホストされているUbuntu Azure Pipelineでこのエラーが発生し、シェルコマンドタスクを実行してチェックアウト、編集、およびgitへのプッシュを実行しました。
コマンドでプッシュしようとするとエラーが発生しました:
git Push
コマンドを次のように変更して修正しました。
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" Push
$(System.AccessToken)は、Azure Pipelinesの定義済み変数です: https://docs.Microsoft.com/en-us/Azure/devops/pipelines/build/variables?view=Azure-devops&viewFallbackFrom=vsts&tabs = yaml