web-dev-qa-db-fra.com

Azure Pipelines: je deviens fatal: impossible de lire le nom d'utilisateur pour 'https://github.com': invites de terminal désactivées

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:

  • J'ai configuré mon gitconfig avec mon nom d'utilisateur et mon emailid.
  • Le git Push fonctionne très bien quand je fais des modifications dans les fichiers et que je commets et poussez, mais cela génère cette erreur lorsque je fusionne et poussez
  • J'ai le privilège suffisant pour pousser dans la branche

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;
9
Muthurathinam

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.

0
Shayki Abramczyk

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:

Étape 1

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

Étape 2

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.

enter image description here

Remarque: l'utilisateur (1) et non le groupe (2).

Subvention:

Contribute: Allow
Create Branch: Allow
Create Tag: Allow (Inherited)
Read: Allow (Inherited)

HTH

10
woter324

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

9
Darren Rogers