2015-01-16 2 views
1

У меня есть проект в Git с Dockerfile, описывающий производственный сервер. Код и файл Docker создаются Jenkins на специальной машине (физический CI-сервер). После успешной сборки я хотел бы развернуть это изображение в контейнере на удаленном удаленном хосте (другое физическое развертывание).Развертывание как производственный сервер

Что такое самый простой способ сделать это? Есть ли какие-либо разъемы Jenkins для развертывания изображения/контейнера на удаленном докере (на другом компьютере)

ответ

1

Как насчет того, если у вас есть удаленный хост-опрос Дженкинса, чтобы узнать, была ли последняя сборка успешной. Возможно, cron поможет вам запланировать его. Затем, если последний статус == «УСПЕХ» вытащит последнее изображение git/docker и запустится.

Я нашел этот сценарий на serverfault.com, https://serverfault.com/questions/309848/how-can-i-check-the-build-status-of-a-jenkins-build-from-the-command-line

Первый параметр скрипта название проекта Дженкинс. Сценарий будет подключен к вашему экземпляру Jenkins, см. Параметр jenkinsURL и проверьте, была ли последняя сборка успешной.

#!/usr/bin/python 
# 
# author: ajs 
# license: bsd 
# copyright: re2 


import json 
import sys 
import urllib2 

jenkinsUrl = "https://jenkins.example.com/job/" 


if len(sys.argv) > 1 : 
    jobName = sys.argv[1] 
else : 
    sys.exit(1) 

try: 
    jenkinsStream = urllib2.urlopen(jenkinsUrl + jobName + "/lastBuild/api/json") 
except urllib2.HTTPError, e: 
    print "URL Error: " + str(e.code) 
    print "  (job name [" + jobName + "] probably wrong)" 
    sys.exit(2) 

try: 
    buildStatusJson = json.load(jenkinsStream) 
except: 
    print "Failed to parse json" 
    sys.exit(3) 

if buildStatusJson.has_key("result"):  
    print "[" + jobName + "] build status: " + buildStatusJson["result"] 
    if buildStatusJson["result"] != "SUCCESS" : 
     exit(4) 
else: 
    sys.exit(5) 

sys.exit(0) 
+0

Это может быть решение, но я использую Github OAuth плагин, который перенаправляет меня на GitHub страницу, если я не уполномочен Кроме того, наши корпоративные стандарты не позволяют иметь SSH соединение на сервере развертывания ... Так что я положил Дженкинс в контейнере докеров, который также запускается на одном сервере развертывания в режиме «--privileged», чтобы иметь возможность запускать докер в докере. И код от Jenkins развернут на хосте ssh – Art