visual subir studio repositorio recuperar puede proyecto porque poder pendientes para los instalar insertar hay extraer debe confirmar confirmación code cambios git azure-devops azure-pipelines

git - subir - para poder insertar, debe confirmar los cambios en el repositorio local.



Ejecutar comandos git dentro de un trabajo de compilación en Visual Studio Team Services(era VSO) (6)

Cualquier archivo que pueda generar desde la fuente generalmente se considera un artefacto de compilación y no se agrega / confirma / empuja a un repositorio git.

Dicho esto, si puedes, deberías usar una URL ssh en lugar de una https: ssh requeriría una clave ssh, y si tu clave ssh privada no contiene contraseña, git no tendrá que consultar nada en la entrada estándar.

Otra forma es usar el GCH de Microsoft (Git Credential Helper) , que se incluye en Git para Windows (desde Git 2.7.3 , marzo de 2016).
Vea esta respuesta para un ejemplo. Eso almacenaría en caché su nombre de usuario / contraseña dentro del almacén de credenciales de Windows.

[Entorno: Servicios de equipo, GIT, agente de compilación alojado]

Me gustaría crear una definición de compilación de Team Services que sea capaz de hacer lo siguiente:

  1. Ejecutando un script para generar algunos archivos nuevos basados ​​en archivos existentes en el repositorio

  2. Confirmar / empujar esos archivos generados de nuevo a repo

Puedo hacer el # 1 sin ningún problema. Pero no estoy seguro de cómo puedo hacer # 2.

Descubrí que en realidad podía ejecutar git.exe desde un trabajo de compilación. Pero no estoy seguro de cómo puedo pasar la credencial a git. Basado en los registros de compilación, está fallando porque está tratando de obtener el nombre de usuario de stdin.

Intenté agregar un paso en la definición de compilación con algo como "git config --global user.name xxxx", pero aún así no ayudó.

¿Es este un escenario soportado? ¿Alguna sugerencia?

¡Gracias!

Editar

Probé el siguiente enfoque en mi script de compilación:

git -c http.extraheader="AUTHORIZATION: bearer %SYSTEM_ACCESSTOKEN%" pull ...

Parecía funcionar para comandos como pull, etc. Pero cuando intentaba impulsar los cambios, recibí el siguiente error:

fatal: unable to access ''https://example.visualstudio.com/SampleTeam/_git/SampleRepo/'': SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054

¿Pensamientos?



Este es solo un seguimiento de la respuesta de Tony''s Blues.

Lo siento, no puedo publicar enlaces ya que mi reputación es inferior a 10, pero todas están ubicadas en el sitio web de Visualstudio, así que estoy seguro de que puedes resolverlo por ti mismo.

Para permitir las contribuciones de GIT dentro de un script necesitas

  1. Asegúrese de tener todo lo mencionado en los requisitos previos del Agente VSTS hecho

  2. Asegúrese de haber seguido las instrucciones en / en-us / docs / build / scripts / git-commands

    • Especialmente agregue los permisos necesarios a la cuenta de Project Build Service en su repositorio, al menos contribuya (no dude en considerar otros permisos de acuerdo con sus necesidades); esta es la verdadera causa del "error de lectura de SSL"

Lo que es diferente entre esta publicación y la de Tony es que en nuestra configuración (TFS 2015; VSTS Agent instalado en Mac OS Sierra) hemos tenido que agregar el permiso "Contribuir" para la cuenta " Proyecto de servicio de construcción ", por lo que no es la cuenta con la palabra "colección" mencionada en nombre. También tenga cuidado y no lo mezcle con el grupo llamado Cuentas de servicios de compilación de Project Collection : creo que se puede usar bajo ciertas condiciones, pero no funciona de manera predeterminada. Lo señalo, ya que esto es lo que hice accidentalmente, por lo que dediqué más tiempo a depurar lo que está mal.

Verifique la siguiente imagen. Puede encontrarla en su proyecto -> Panel de control -> Control de versiones -> Repositorio GIT

También tenga cuidado con los requisitos del sistema, ya que en mi caso (en MacOS Sierra) la parte con enlaces simbólicos para dos directorios específicos se volvió crítica. Los requisitos específicos del sistema para OSX se ubican en [github] /Microsoft/vsts-agent/blob/master/docs/start/envosx.md y los estados

Instalar openssl

$ brew update $ brew install openssl

Cree enlaces simbólicos para openssl libs , esto es necesario en MacOS (Sierra)

$ mkdir -p /usr/local/lib/ $ ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/ $ ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/

Descubre tu versión de GIT

$ git --version

Actualiza GIT en caso de que tengas menos de 2.9.0

$ brew update $ brew install git


Lamento responder mi propia pregunta aquí ...

Acabo de recibir una pista de un experto en TFS, quien me indicó este artículo: https://www.visualstudio.com/en-us/docs/build/scripts/git-commands , que resolvió perfectamente mi problema.

Creo que debería compartirlo para ayudar a quienquiera que se encuentre en la misma situación que yo.

Aquí estoy citando los pasos clave (reformateado un poco):

Otorgar permisos de control de versión al servicio de compilación

Vaya a la pestaña del panel Control de versiones

  • Servicios de equipo: https: // {your-account} .visualstudio.com / DefaultCollection / {your-team-project} / _admin / _versioncontrol

  • En las instalaciones: https: // {su-servidor}: 8080 / tfs / DefaultCollection / {su-equipo-proyecto} / _admin / _versioncontrol

En la pestaña Control de versión , seleccione el repositorio en el que desea ejecutar los comandos de Git y luego seleccione Project Collection Build Service (account_name) . Conceda los permisos necesarios para los comandos de Git que desea ejecutar. Normalmente querrás otorgar:

  • Creación de rama : Permitir
  • Contribuir : Permitir
  • Leer : Heredar permitir
  • Creación de etiquetas : Permitir heredado

Cuando haya terminado de otorgar los permisos, asegúrese de hacer clic en Guardar cambios .

Habilita tu definición de compilación para ejecutar Git.exe

  • En la pestaña de variables establezca esta variable: system.prefergit = true
  • En la pestaña de opciones, seleccione Permitir que los scripts accedan al token de OAuth .

Con esta configuración, no es necesario instalar la extensión Git Build Tools o modificar el Administrador de credenciales. Tampoco es necesario establecer explícitamente el encabezado adicional para el token OAuth. Siento que es una solución muy buena. :)

Pero realmente aprecio la ayuda de Eddie y VonC!


Puede instalar la extensión Git Build Tools y luego agregar la tarea "Permitir acceso remoto a Git" en su definición de compilación. Asegúrese de que la característica "Permitir que los scripts accedan a OAuth Token" en la pestaña "Opciones" esté habilitada.

Habilitar acceso remoto Git

Ciertas operaciones requieren acceso al repositorio remoto desde una compilación. Esta tarea actualiza un remoto del repositorio Git en el agente para permitir el acceso al repositorio anterior en Visual Studio Team Services.

Requerimientos

Para que esta tarea de compilación funcione, se requiere que la opción Permitir que las secuencias de comandos accedan al token de OAuth se establezca en las opciones de definición de compilación.

Parámetros

Habilitar acceso remoto Git

Nombre remoto: Nombre del remoto que debe actualizarse. El valor predeterminado es el origen.

Tareas relacionadas

Restaurar Git Remote debe llamarse al final de la definición de compilación para restaurar el control remoto a su valor original.

Problemas conocidos

Las operaciones de Git-Lfs, como git lfs fetch, todavía no funcionan con esto. Ver este tema de Git-Lfs.

Agregue los pasos para usar el script powershell en la extensión:

  1. Cree una secuencia de comandos power-shell con el código en la secuencia de comandos "EnableGitRemoteAccess.ps1" y agregue la secuencia de comandos al control de origen.
  2. Habilite la opción "Permitir que los scripts accedan al token de OAuth" en la definición de compilación.
  3. Agregue una tarea de PowerShell en la definición de compilación y establezca la ruta de la secuencia de comandos la secuencia de comandos para habilitar el acceso remoto de git.
  4. Agregue otra tarea de PowerShell en la definición de compilación para confirmar e impulsar los cambios.

El código que utilizo para confirmar y empujar cambios:

git add . git commit -m "changesinbuild" git push origin master 2>&1 | Write-Host


Visual Studio Team Services (VSTS) ahora tiene una funcionalidad integrada para hacer esto:

  1. Conceda a la cuenta Project Collection Build Service (account_name) acceso al repositorio apropiado en VSTS.
  2. En la fase de agente, marque la casilla para permitir que los scripts accedan al token de OAuth .
  3. Ahora, dentro de la tarea, puede hacer referencia a la variable SYSTEM_ACCESSTOKEN para acceder al repositorio de git: git clone https://randomusername:${SYSTEM_ACCESSTOKEN}@instance.visualstudio.com/proj1/_git/repo

Ref: https://github.com/Microsoft/vsts-tasks/issues/962