ЗАБУДЬТЕ IPSECURITAS, ЕСЛИ ВЫ НЕ АДМИНИСТРАТОР VPN!!!
Harald Haentsch полностью решил эту проблему путем создания очень простого в использовании учебного руководства о том, как "зафиксировать" SecureClient для выполнения в Snow Leopard OSX 10.6:
http://www.sysadmins-world.com/?p=1
Я просто следовал за существующими действиями по установке (я использовал Шестнадцатеричного Злодея вместо 0xED, но любой Hex-редактор должен хорошо работать), и он работал через 5 минут над моим обновлением Snow Leopard от OSX 10.5.7.
Если Вы - технический тип и хотите знать больше об "обновлении существующую установку" опция..., по-видимому, единственная причина, SecureClient не работает в Snow Leopard, то, потому что Контрольная точка трудно кодировала "kextload-s" вместо "kextload-d" в файлах запуска для программы SecureClient. Snow Leopard не поддерживает "-s", но он поддерживает "-d" так все, что необходимо сделать, скопировать 2 файла от программы SecureClient до временного каталога, изменить эти 2 файла и скопировать их назад.
Супер легкий, гарантируемый. Похоже, что фиксация файла установки также очень легка и возможно не необходима в некоторой "новой установке" ситуации.
Спасибо!!!
- nate
Вот мое решение в jython:
from hudson.cli import CLI
class Hudson():
def StartJob(self, server, port, jobname, waitForCompletion = False):
args = ["-s", "http://%s:%s/hudson/" % (server, port), "build", jobname]
if waitForCompletion: args.append("-s")
CLI.main(args)
if __name__ == "__main__":
h = Hudson()
h.StartJob("myhudsonserver", "8080", "my job name", False)
Python API совпадает с json API. Единственная разница - то, что Вы Вы оценка () на коде возврата и Вы получаете объекты Python вместо того, чтобы иметь необходимость назвать json библиотеку.
При ответе на исходный вопрос в чистом Python, это - то, что я сделал для нашего задания (это называют как рычаг фиксации сообщения) обратите внимание, что у нас есть http автор перед нашим Гудзоном, который делает вещи более сложными.
import httplib
import base64
TESTING = False
def notify_hudson(repository,revision):
username = 'XXX'
password = 'XXX'
server = "XXX"
cmd = 'svnlook uuid %(repository)s' % locals()
#we strip the \n at the end of the input
uuid = os.popen(cmd).read().strip()
cmd = 'svnlook changed --revision %(revision)s %(repository)s' % locals()
body = os.popen(cmd).read()
#we strip the \n at the end of the input
base64string = base64.encodestring('%s:%s' % (username, password)).strip()
headers = {"Content-Type":"text/plain",
"charset":"UTF-8",
"Authorization":"Basic %s" % base64string
}
path = "/subversion/%(uuid)s/notifyCommit?rev=%(revision)s" % locals()
if not TESTING:
conn = httplib.HTTPSConnection(server)
conn.request("POST",path,body,headers)
response = conn.getresponse()
conn.close()
if response.status != 200:
print >> sys.stderr, "The commit was successful!"
print >> sys.stderr, "But there was a problem with the hudson post-commit hook"
print >> sys.stderr, "Please report this to the devteam"
print >> sys.stderr, "Http Status code %i" % response.status
notify_hudson(repository,revision)
Существует проект под названием JenkinsAPI , который предоставляет высокоуровневый API, который (помимо прочего) может использоваться для запуска заданий Jenkins. Синтаксис следующий:
api = jenkins.Jenkins(baseurl, username, password)
job = api.get_job(jobname)
job.invoke(securitytoken=token, block=block)