{"action":"opened","issue":{"url":"https://api.github.com/repos/appveyor/ci/issues/188","labels_url":"https://api.github.com/repos/appveyor/ci/issues/188/labels{/name}","comments_url":"https://api.github.com/repos/appveyor/ci/issues/188/comments","events_url":"https://api.github.com/repos/appveyor/ci/issues/188/events","html_url":"https://github.com/appveyor/ci/issues/188","id":62031317,"number":188,"title":"NuGet deployment provider reliability improvements","user":{"login":"FeodorFitsner","id":5041459,"avatar_url":"https://avatars.githubusercontent.com/u/5041459?v=3","gravatar_id":"","url":"https://api.github.com/users/FeodorFitsner","html_url":"https://github.com/FeodorFitsner","followers_url":"https://api.github.com/users/FeodorFitsner/followers","following_url":"https://api.github.com/users/FeodorFitsner/following{/other_user}","gists_url":"https://api.github.com/users/FeodorFitsner/gists{/gist_id}","starred_url":"https://api.github.com/users/FeodorFitsner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FeodorFitsner/subscriptions","organizations_url":"https://api.github.com/users/FeodorFitsner/orgs","repos_url":"https://api.github.com/users/FeodorFitsner/repos","events_url":"https://api.github.com/users/FeodorFitsner/events{/privacy}","received_events_url":"https://api.github.com/users/FeodorFitsner/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/appveyor/ci/milestones/9","html_url":"https://github.com/appveyor/ci/milestones/March%2020","labels_url":"https://api.github.com/repos/appveyor/ci/milestones/9/labels","id":1011726,"number":9,"title":"March 20","description":"","creator":{"login":"FeodorFitsner","id":5041459,"avatar_url":"https://avatars.githubusercontent.com/u/5041459?v=3","gravatar_id":"","url":"https://api.github.com/users/FeodorFitsner","html_url":"https://github.com/FeodorFitsner","followers_url":"https://api.github.com/users/FeodorFitsner/followers","following_url":"https://api.github.com/users/FeodorFitsner/following{/other_user}","gists_url":"https://api.github.com/users/FeodorFitsner/gists{/gist_id}","starred_url":"https://api.github.com/users/FeodorFitsner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FeodorFitsner/subscriptions","organizations_url":"https://api.github.com/users/FeodorFitsner/orgs","repos_url":"https://api.github.com/users/FeodorFitsner/repos","events_url":"https://api.github.com/users/FeodorFitsner/events{/privacy}","received_events_url":"https://api.github.com/users/FeodorFitsner/received_events","type":"User","site_admin":false},"open_issues":9,"closed_issues":2,"state":"open","created_at":"2015-03-09T03:14:17Z","updated_at":"2015-03-16T09:57:03Z","due_on":"2015-03-15T07:00:00Z","closed_at":null},"comments":0,"created_at":"2015-03-16T09:57:03Z","updated_at":"2015-03-16T09:57:03Z","closed_at":null,"body":"Discussion: http://help.appveyor.com/discussions/problems/1767-nuget-deploy-failing\r\n\r\nWe should do NuGet deployment process more reliable. Obviously, we can't be sure in 100% availability of nuget.org.\r\n\r\nCurrent implementation based on `nuget.exe` doesn't allow checking HTTP status codes and it will be changed with direct communication to nuget service.\r\n\r\nRight now I'm thinking about the following workflow:\r\n\r\n@@@\r\n- Push package to a feed:\r\n  - if response is 200 - everything was OK, finish\r\n  - if response is 409 (conflict, package exists) - ignore and finish\r\n  - if response is 500 error:\r\n    Push package again:\r\n    - if response is 200 - OK, finish\r\n    - if response is 409 - we assume package was pushed on previous step and 500 error was \"transient\" - ignore and finish\r\n    - if response is 500 - it's second time we get 500 error - terminate with error.\r\n@@@\r\n\r\nAll other responses like 404 (not found), 401 (unauthorized) terminates deployment immediately.\r\n\r\nLet me know what you think."}}