teamcity nuget nuget-package nuget-server teamcity-7.0

¿Cómo eliminar una versión específica de un paquete en un feed de TeamCity Nuget?



nuget-package nuget-server (8)

Esto ahora es compatible a través de la interfaz de usuario web

Simplemente elimine la construcción ofensiva abriendo la construcción y seleccionando Actions > Remove . Esto elimina la compilación de la lista en TeamCity, y también elimina todos los artefactos de compilación de esa compilación específica de la fuente Nuget .

¿Alguien sabe cómo eliminar una versión específica de un paquete en un Feed de Nuget de TeamCity?


Ahora es la tercera vez que encuentro este post, porque tengo un problema similar. Resulta que el ticket con Jetbrains se cerró hace mucho tiempo, y TeamCity ahora (al menos nuestra versión 9.1) lo admite directamente abriendo los detalles de una compilación específica, haga clic en el menú desplegable "Acciones" y seleccione "Eliminar". . ". Esto eliminará la compilación de TeamCity, así como los artefactos del repositorio de paquetes nuget, eliminando así completamente la necesidad de llamar a la API REST de formas ligeramente complicadas.

Después de haber publicado esto, es posible que incluso lo recuerde, la próxima vez que tenga que hacerlo.


Ampliando la respuesta del rey Roger ... la extensión de cromo del cliente REST del cartero es una manera fácil de lograrlo con poco herramientas.

> HTTP GET to http://servername:port/httpAuth/app/rest/builds/

La salida se verá como

<builds count="100" nextHref="/httpAuth/app/rest/builds?count=100&amp;start=100"> <build id="48459" number="1.0.187-nightly" ... etc

Busque la salida de su ID de compilación, en la misma etiqueta que el número de compilación que ve en teamcity, luego

> HTTP DELETE to http://servername:port/httpAuth/app/rest/builds/*theid*

No necesitaba etiquetas de autorización ni ningún otro encabezado, posiblemente ya que había iniciado sesión en teamcity en otra ventana o hemos configurado Teamcity para que se abra internamente, pero es posible que deba introducirlas en la URL y en los encabezados.


Como han mencionado otros, la solución sugerida por JetBrains es eliminar las compilaciones que produjeron el artefacto , es decir, el paquete NuGet, que desea eliminar.

Con curl 7.3x (que se encuentra en ubuntu y Git para Windows / msysgit), el siguiente comando elimina el número de compilación 42:

curl -v -u <username>:<password> -X DELETE http://teamcity:8111/httpAuth/app/rest/builds/42

  • Tenga en cuenta el uso de opciones cortas ( -X lugar de -request , -u lugar de -user ); Las opciones largas no funcionaron para mí.
  • Omitir :<password> si desea que se le solicite su contraseña.
  • Una respuesta de HTTP/1.1 204 No Content indica éxito.

Documentación completa: http://confluence.jetbrains.com/display/TCD8/REST+API#RESTAPI-Generalinformation


Creé un script de PowerShell para hacer esto en la línea de respuesta de King Rogers.

Guarde este script como tc_deletebuild.ps1 ...

param($build, $teamcityhost, $username, $password) $encodedcredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($username+":"+$password)) Invoke-WebRequest -Uri "http://$teamcityhost/httpAuth/app/rest/builds/id:$build" -Method Delete -Headers @{"Authorization"="Basic $encodedcredentials"}

... y ejecutar desde powershell con

./tc_deletebuild.ps1 <buildid> <host> <username> <password>


En extensión a la respuesta del rey Roger, utilicé una forma de solicitud de composición ligeramente diferente en Fiddler. Hice una solicitud de obtención para una compilación particular de Teamcity y tomé los encabezados http de la herramienta Chrome Developer. Copiado y pegado en el cuadro de encabezados de solicitud de Fiddler. De esta manera no tuve que codificar nombre de usuario y contraseña.


En primer lugar, parece que la eliminación de paquetes NuGet ad-hoc todavía no se admite directamente en TeamCity. Hay un problema abierto con JetBrains al respecto, pero actualmente no hay una solución planificada. Dicho esto, ideamos una solución alternativa que nos permitió superar nuestro problema específico y puede ayudar con el suyo.

Teníamos una serie de archivos nupkg que utilizaban una versión incorrecta (acelerada). Por lo tanto, parecían ser "más nuevos" que los paquetes que estamos creando ahora. Sin una forma de eliminar solo las versiones incorrectas, configuramos la política de "Artefactos Limpios" de cada configuración de construcción de TeamCity individual en una ventana corta (2 días) y ejecutamos la Limpieza. Necesitará privilegios de administrador del sistema para hacer esto.

Esto eliminó cualquier artefacto un día anterior al último artefacto y eliminó todos nuestros paquetes defectuosos. Esto lo verificamos a través del comando List línea de comandos de NuGet. Dado que los paquetes más recientes son correctos, ahora solo estamos publicitando buenos paquetes en nuestro feed de NuGet.

Es cierto que esta es una opción de "precisión nuclear" y puede no funcionar para todos. Espero que TeamCity sea totalmente compatible con la API de línea de comandos de NuGet en un futuro próximo.


Sé que esto se me pidió hace mucho tiempo, pero de vez en cuando me encuentro con este problema y siempre olvido cómo hacerlo, así que pensé que publicaría mi solución, lo cual creo que podría ser un poco más fácil (dependiendo de cómo se mire). en eso).

Básicamente, ejecuté una compilación de TeamCity que desafortunadamente creó una versión duff de un paquete de terceros que intenté recrear pero con un par de modificaciones. No funcionó, pero significaba que siempre se me presentaba este paquete duff dentro del administrador de paquetes y se mantendría así hasta que el tercero lance una versión más nueva. Como tal, quería eliminar el paquete del servidor de TeamCity Nuget y la única forma de hacerlo era eliminar la compilación que también eliminaría los artefactos (el paquete duff Nuget en este caso).

Ahora, no pude ver una forma de eliminar la compilación, excepto con la API REST, así que eso es lo que usé (espero que no sea estúpido y que en realidad haya una manera fácil de eliminar compilaciones de la interfaz de usuario). Utilicé fiddler para generar el comando DELETE. Esto se logró simplemente publicando una solicitud de eliminación similar a la que se muestra a continuación:

Desde el violinista vaya a la ventana del compositor. Seleccione ''BORRAR'' en lugar de ''GET'' e ingrese su url de TeamCity en el siguiente formulario:

http://<server>:<port>/httpAuth/app/rest/builds/<build ID>

El ID de compilación se puede encontrar simplemente inspeccionando la URL cuando selecciona la compilación que desea eliminar de TeamCity (busque el número después del parámetro de consulta ''buildId''). El único otro paso fue agregar el encabezado de autorización al comando. Ingrese lo siguiente en la línea debajo de ''User-Agent'' en la ventana de Encabezados de Solicitud.

Authorization: Basic (Username:Password encoded as base64)

Para codificar su nombre de usuario / contraseña como base64, vaya a Herramientas-> Asistente de texto en fiddler e ingrese los detalles de su TeamCity en este formato - Nombre de usuario: Contraseña. Finalmente, debe seleccionar el botón ''Ejecutar'' y, si todo está bien, la compilación se eliminará junto con el paquete Nuget.

Esto funcionó para mí, pero obviamente tenga cuidado al hacer todo esto, ya que no quiere eliminar la compilación incorrecta. Puede ser prudente hacer una copia de seguridad / instantánea de su servidor TeamCity primero.

Espero que esto ayude a alguien.