Construindo Jenkins em vários servidores

<figure class = “tmblr-full” data-orig-height = “128” data-orig-width = “398”> imagem</figure>

Durante o teste de carga com Locustio, descobri que gerou 10 escravos Locust na AWS. </p>

Infelizmente, Locustio não possui uma interface web (ou algo equivalente) para gerenciar centralmente seus escravos. <br /> E o que acontece com os escravos é que cada um deles deve ter o código mais recente e atualizado que vai rodar no mestre. <br /> Como isso é possível? Bem, com Jenkins CI instalado em cada escravo. <br /> Então, eu tive que construir o mesmo código em 10 instâncias diferentes da AWS. <br /> A primeira e imediatamente mais produtiva solução é abrir 10 guias do Chrome / Firefox e pronto para os urls do Jenkins. Mas, como você pode imaginar, qualquer bom engenheiro que fica entediado facilmente … bem, fica entediado com a quantidade de cliques incluídos. </p>

Então, eu sentei e criei um pequeno pedaço de código para construir todos eles de uma vez. <br /> Como alguém pode ver, eu não usei seus IPs, mas se alguém quiser fazer dessa forma é bem simples. < / p>

    def build_jenkins(j_user, j_pass, j_url, job_name):
"""
# https://github.com/stackforge/python-jenkins

# http://python-jenkins.readthedocs.org/en/latest/index.html

"""

import time
from jenkins import Jenkins

# set the jenkins object
j
= Jenkins(j_url, j_user, j_pass)

if j.job_exists(job_name) is True:
j
.build_job(job_name)
print("\n Build command sent to Jenkins: %s \n"%j_url)
print("Wait for the build to complete....")
time
.sleep(15)

last_b
= j.get_job_info(job_name)['lastCompletedBuild']['number']
last_successful_b
= j.get_job_info(job_name)['lastSuccessfulBuild']['number']
# print last_b , last_successful_b #for debugging
# print "Take extra build info from this:\n" , j.get_job_info(job_name) # for debugging

print "Checking last build ... "
print "Last build : %s" % last_b
print "Last successful build : %s" % last_successful_b, "\n"

# time.sleep(10)
if last_b == last_successful_b:
print "-- Build success --"
else:
print "Failed build :["

# Build all locust slaves
jenkins_urls
= []
for i in range(1,11):
# create the jenkins url
jenkins_url
= "http://host%s.site.com:8686/"%i
# add the jenkins url to the list
jenkins_urls
.append(jenkins_url)
# print jenkins_urls #for debugging

for url in jenkins_urls:
build_jenkins
(j_user="username", j_pass="password", j_url=url, job_name='JobName')

Bem, o problema é que ele envia os comandos em série. Deixo aqui uma nota para mim mesmo para fazê-lo abrir threads e fazê-lo em paralelo. </p> <a href=” https://coderwall.com/wehappyfew”>Endossar wehappyfew em Coderwall </a>