J'ai une tâche PowerShell configurée dans les pipelines de génération Azure pour fusionner les modifications du développeur vers le maître de mon référentiel public Github et pousser les modifications vers le maître. Je reçois
fatal: impossible de lire le nom d'utilisateur pour ' https://github.com ': les invites du terminal sont désactivées
Remarque:
Toute aide à ce sujet serait très appréciée. Si plus d'informations sont nécessaires, commentez ce fil.
Ceci est l'extrait réel.
$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;
Je ne sais pas pourquoi mais quand vous essayez Push
après merge
git veut le nom d'utilisateur et le mot de passe.
Azure DevOps désactive par défaut l'invite pour entrer les informations d'identification et vous obtenez l'erreur.
Vous pouvez activer l'invite en définissant la variable d'environnement GIT_TERMINAL_Prompt
à 1
mais pendant la construction, vous ne pouvez pas entrer les valeurs et la construction se bloquera.
Pour corriger l'erreur, ajoutez simplement le nom d'utilisateur et le mot de passe ou le jeton d'accès personnel (PAT) dans le git Push
commande:
git Push https://username:password(or PAT)@github.com/username/reponame.git
Le https://...
remplacez le Origin
.
Il existe un "compte de service" intégré qui est en fait un PAT appelé Project Collection Build Service
, à ne pas confondre avec Project Collection Build Service Accounts
groupe .
De: https://marcstan.net/blog/2018/08/31/Mirror-github-gitlab-and-VSTS-repositories/
Anecdote: Au cas où vous ne saviez pas que "$ env: SYSTEM_ACCESSTOKEN" est un PAT (Personal/Private Access Token) qui est généré automatiquement par le serveur de build (mais désactivé par défaut) et permet de s'authentifier contre VSTS depuis l'intérieur de vos builds et versions. Pour l'activer, vous devez sélectionner le "travail de l'agent" dans votre définition de build ou de version et cocher la case "Autoriser les scripts à accéder à la case à cocher OAuth token" sous "Options supplémentaires".
Il y a deux étapes:
Pour se débarrasser du fatal: could not read username for...
erreur, nous devons autoriser les scripts à accéder au jeton OAuth. Si vous utilisez le dernier pipeline Azure basé sur YAML, vous rechercherez haut et bas " Autorisez les scripts à accéder à l'option OAuth token "dans l'interface utilisateur. La réponse de Microsoft est ici . Dans votre fichier YAML (Azure-pipelines.yml
), ajouter:
steps:
- checkout: self
persistCredentials: true
Après avoir résolu l'erreur de l'OP, je n'ai pas pu valider, recevant l'erreur:
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
Nous devons également lui donner des autorisations. Depuis même page comme ci-dessus. Ajoutez l'utilisateur Project Collection Build Service
à votre/vos repo.
Remarque: l'utilisateur (1) et non le groupe (2).
Subvention:
Contribute: Allow
Create Branch: Allow
Create Tag: Allow (Inherited)
Read: Allow (Inherited)
HTH
Ce n'est pas exactement la même situation que vous, mais c'était le seul article qui se rapprochait de ma situation similaire, j'ai donc pensé qu'il valait la peine d'ajouter ma solution ici. J'ai eu cette erreur dans un pipeline Ubuntu Azure hébergé, exécutant une tâche de commande Shell pour extraire, modifier et pousser pour git.
J'ai eu l'erreur en essayant de pousser avec la commande:
git Push
Je l'ai corrigé en changeant la commande en:
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" Push
$ (System.AccessToken) est une variable prédéfinie dans les pipelines Azure: https://docs.Microsoft.com/en-us/Azure/devops/pipelines/build/variables?view=Azure-devops&viewFallbackFrom=vsts&tabs = yaml