تشغيل برنامج على جهاز بعيد كجزء من التكامل المستمر

StackOverflow https://stackoverflow.com/questions/1605478

  •  05-07-2019
  •  | 
  •  

سؤال

ونحن نستخدم TeamCity، نانت وpsexec لتشغيل أمر على جهاز بعيد كجزء من التعبئة والتغليف الافراج عنهم. كل شيء يعمل بشكل جيد عندما كنت تشغيل نانت من وحدة التحكم ولكن عند تشغيل من توقف teamcity psexec (تجميد) 50٪ من الأوقات.
نظرت من خلال العديد من المنتديات ويبدو أن هناك الحلول التي تزيد من تعقيد هذه الدعوة، وتنطوي على فقدان الانتاج وERRORCODE الأمر.
لا أحد يعرف طريقة أسهل لتشغيل أمر على جهاز بعيد منتديات أنا لا أمانع إنشاء بعض التطبيقات على الجهاز البعيد، مثل ملقم Telnet، أي نصائح حول ما يجب فعله منتديات بفضل

هل كانت مفيدة؟

المحلول

ولقد حلت هذه المسألة مع مزيج من RemCom ومهمة MSBuild مخصص يسمى ExecParse.

وRemCom، لأنها لا تفعل أشياء غريبة مع STDOUT (وبالتالي شنقا بناء). كنا، وExecParse للقبض على إخراج مهمة عن بعد، وتحليل قانون خروج من الإخراج، لأن المهمة MSBuild اكسيك القياسية لا يشمل الانتاج. بعض تعادل نانت الذي يلتقط من شأنه إخراج العمل.

ولقد مفصل ذلك في بلوق وظيفة: <لأ href = "http://hotgazpacho.org/2009/10/continuous-integration-executing-remote-tasks-with-teamcity-msbuild-remcom-and- execparse / "يختلط =" نوفولو noreferrer ">" مستمر التكامل: تنفيذ المهام عن بعد مع TeamCity، MSBuild، RemCom، وExecParse "

نصائح أخرى

وPsExec يفعل بعض الأشياء غير تقليدي مع الإدخال القياسي / الإخراج، واستدعاء هذا من جافا (التي بنيت TeamCity على) يثير كل أنواع المشاكل والقضايا الاستقرار. لم psexec -d لا تعمل تذوي.

وأنا حلها باستخدام PowerShell في مدينة فريق.

والسيناريو يتوقف أدناه ApplicationPool IIS 7 على الملقم البعيد:

[string]$HostName = "myWebServer"
[string]$Cmd = "C:\Windows\System32\inetsrv\appcmd.exe stop apppool MyMainAppPool” 
Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ($Cmd) -ComputerName $HostName

والمزيد حول هذا الموضوع على بلدي بلوق: <لأ href = "http://blog.degree.no/2012/03/executing-commands-and-programs-on-a-remote-machine-using-powershell/" يختلط = "نوفولو"> http://blog.degree.no/2012/03/executing-commands-and-programs-on-a-remote-machine-using-powershell/

وماذا عن وضع (نانت) المهلة على psexec وكرر الدعوة حتى لا يحدث المهلة؟

وأنا استخدم PSExec مع الخيار -d (لا تنتظر حتى النهاية) والاستيلاء على رمز الإرجاع. رمز الإرجاع عند استخدام -d هو معرف العملية للعملية التي تعمل على النظام البعيد. ثم يمكنني استخدام PSList الاستقصاء النظام البعيد لمعرف العملية حتى لا أجد على النظام البعيد أي لفترة أطول.

وماذا يحدث إذا الإعداد وكيل TeamCity بناء على الجهاز البعيد والسماح لها تنفيذ العملية محليا، فمررها الثنائيات مع "التبعيات قطعة أثرية"؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top