2014-12-27 2 views
2

У меня есть экземпляр Jenkins, работающий за брандмауэром, и я не хочу раскрывать интерфейс Jenkins в Интернете. (Даже с безопасностью, это определенно не вариант). Мое желание состояло в том, чтобы открыть другой порт, который может запускать только сборки, но не предоставляет интерфейс. Я просмотрел список плагинов, но я не нашел подходящего плагина. В моей текущей настройке выполняется apache как прокси-сервер и разрешается запуск с помощью регулярного выражения на другом порту. (Но не любой другой URL). Apache делает для большой дополнительной нагрузки (и памяти, ее очень маленькой машины), поэтому я действительно хотел бы избавиться от нее. Есть ли у кого-нибудь предложение разрешить триггеры через открытый порт, но не подвергать Jenkins UI или другим URL-адресам Jenkins через этот порт?Как безопасно запускать Jenkins сборки из Github

+0

@Andrew Существует несколько причин, почему я рассматриваю опрос не как вариант. [Это] (http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-hook/) - один. – Cfx

ответ

0

Если вы столкнулись с проблемой, вы можете опробовать репозиторий github для внесения изменений. Расписание опроса можно настроить с помощью синтаксиса CRONTAB.

«5 asterixs» в CRONTAB означает опрос каждую минуту каждого часа каждого дня. Более или менее то же, что и каждое здание.

0

У меня теперь есть настройка, которая отвечает моим требованиям: низкое использование ресурсов & безопасно. Я заменил апача небольшой Баш скрипт, используя чистую кошку, чтобы эмулировать веб-сервер:

#!/bin/bash 
while true ; do 
    echo -e "HTTP/1.1 204 No Content\r\nConnection: close\r\n\r" | nc -l -v -p [outer port number] > /dev/null 
    wget -O /dev/null [jenkins base url]/git/notifyCommit?url=[repository url] &>/dev/null 
    sleep 5 
done 
  • Первая строка (в цикле) ответов с HTTP никакого статуса содержимого, которое поддерживается с помощью триггера Github. Полезная нагрузка направляется в/dev/null. Важно не смотреть на полезную нагрузку и пытаться извлечь детали в сценарий оболочки, потому что дезинфицирующий ввод легко делается неправильно в bash (по крайней мере для меня).

  • Вторая строка запускает Jenkins для поиска изменений (и сборки, если есть изменения).

  • Сон в последней строке заключается в предотвращении сценария DOS, если часто используется вызывающий порт.

  • Сценарий запускается через cron с графиком @reboot.

Смежные вопросы