Igor - это сервис, который предоставляет единую точку интеграции с службами непрерывной интеграции (CI) и управления управлением источником (SCM) для Spinnaker.
Игорь управляет несколькими полировками, которые имеют одну и ту же общую архитектуру. На высоком уровне все они:
Функции:
HealthIndicator
, который сообщает, что не Down
, или если у них не было успешного цикла опроса в течение длительного времени/admin/pollers/fastforward/{monitorName}[?partition={partition}]
. Фактер-переход означает, что все ожидающие состояния кэша будут опробованы и спасены, но не будут отправлять уведомления Echo.Соответствующие свойства:
Свойство | Значение по умолчанию | Описание |
---|---|---|
spinnaker.build.pollingEnabled | истинный | Определяет, включен ли механизм опроса системы сборки. Отключение этого будет эффективно отключить любую интеграцию с системой сборки, которая зависит от опроса IGOR. |
spinnaker.build.pollInterval | 60 | Интервал за секунды между циклами опроса |
spinnaker.pollingSafeguard.itemUpperThreshold | 1000 | Определяет верхний порог для количества новых элементов до того, как цикл обновления кэша будет отклонен |
locking.enabled | false | Включает распределенную блокировку, чтобы Игорь мог работать на нескольких узлах без помех |
Соответствующие показатели:
Показатель | Тип | Описание |
---|---|---|
pollingMonitor.newItems | измерять | представляет количество новых предметов, кэшируемых данным монитором во время цикла опроса |
pollingMonitor.itemsOverThreshold | измерять | 0, если Deltasize <порог, Deltasize иначе |
pollingMonitor.pollTiming | таймер | Опубликовано для каждого цикла избирательного участка с продолжительностью, которая потребовалась для завершения |
pollingMonitor.failed | прилавок | счетчик ошибок, указывающий неудачный цикл опроса |
Все эти показатели могут быть сгруппированы с помощью тега monitor
(например, DockerMonitor
, JenkinsMonitor
...), чтобы отслеживать проблемы.
Поддерживаются следующие бэкэнды хранения:
Соответствующие свойства:
redis:
enabled: true
connection: redis://host:port
Поддерживаются следующие услуги SCM:
Классы контроллера Commit
разоблачайте API для получения списков коммитов, таких как /github/{{projectKey}}/{{repositorySlug}}/compareCommits?from={{fromHash}}&to={{toHash}}
На данный момент Igor только выставляет API READ, нет никаких полировки, и нет триггеров, связанных с услугами SCM напрямую.
Соответствующие свойства:
github:
baseUrl: "https://api.github.com"
accessToken: '<your github token>'
commitDisplayLength: 8
stash:
baseUrl: "<stash url>"
username: '<stash username>'
password: '<stash password>'
bitbucket:
baseUrl: "https://api.bitbucket.org"
username: '<bitbucket username>'
password: '<bitbucket password>'
commitDisplayLength: 7
gitlab:
baseUrl: "https://gitlab.com"
privateToken: '<your gitlab token>'
commitDisplayLength: 8
Поддерживаются следующие услуги CI:
Для каждой из этих услуг может быть включен Poller (например, с jenkins.enabled
), который начнет контролировать новые сборки/трубопроводы/артефакты, кэшируя их и отправляя события в Echo, поддерживая триггеры трубопровода. GCB немного отличается тем, что он не опробовал и требует настройки подписок PubSub.
Класс BuildController
также раскрывает API для услуг, которые их поддерживают, такие как:
Эти API используются для предоставления информации о артефакте для этапов выпечки.
В вашем блоке конфигурации (либо в igor.yml, igor-local.yml, spinnaker.yml или spinnaker-local.yml) вы можете определить несколько блоков мастеров, используя формат списка.
Вы можете получить токен API Jenkins, перейдя по http://your.jenkins.server/me/configure
(где me
ваше имя пользователя).
jenkins:
enabled: true
masters:
-
address: "https://spinnaker.cloudbees.com/"
name: cloudbees
password: f5e182594586b86687319aa5780ebcc5
username: spinnakeruser
-
address: "http://hostedjenkins.amazon.com"
name: bluespar
password: de4f277c81fb2b7033065509ddf31cd3
username: spindoctor
В вашем блоке конфигурации (либо в igor.yml, igor-local.yml, spinnaker.yml или spinnaker-local.yml) вы можете определить несколько блоков мастеров, используя формат списка.
Для аутентификации с Travis вы используете «токен личного доступа» для пользователя GIT с разрешениями read:org, repo, user
. Это добавлено в settings -> Personal access tokens
на GitHub/Github -Enterprise.
travis:
enabled: true
# Travis names are prefixed with travis- inside igor.
masters:
- name: ci # This will show as travis-ci inside spinnaker.
baseUrl: https://travis-ci.com
address: https://api.travis-ci.com
githubToken: 6a7729bdba8c4f9abc58b175213d83f072d1d832
regexes:
- /Upload https?://.+/(.+.(deb|rpm))/
Когда информация об артефакте анализа от Travis Builds Igor использует регулярное выражение по умолчанию, которое будет соответствовать выводу из инструмента jfrog rt
/ art
CLI. Различные регуляторы, чем по умолчанию, могут быть настроены с использованием списка regexes
.
В вашем блоке конфигурации (либо в igor.yml, igor-local.yml, spinnaker.yml или spinnaker-local.yml) вы можете определить несколько блоков мастеров, используя формат списка.
Для аутентификации с Gitlab CI используйте токен личного доступа с разрешениями read_api
.
gitlab-ci:
enabled: true
itemUpperThreshold: 1000 # Optional, default 1000. Determines max new pipeline count before a cache cycle is rejected
masters:
- address: "https://git.mycompany.com"
name: mygitlab
privateToken: kjsdf023ofku209823
# Optional:
defaultHttpPageLength: 100 # defaults 100, page length when querying paginated Gitlab API endpoints (100 is max per Gitlab docs)
limitByOwnership: false # defaults false, limits API results to projects/groups owned by the token creator
limitByMembership: true # defaults true, limits API results to projects/groups the token creator is a member in
httpRetryMaxAttempts: 5 # defaults 5, # default max number of retries when hitting Gitlab APIs and errors occur
httpRetryWaitSeconds: 2 # defaults 2, # of seconds to wait between retries
httpRetryExponentialBackoff: false # deafults false, if true retries to Gitlab will increase exponentially using the httpRetryWaitSeconds option's value
Свойства сборки автоматически считываются из успешных трубопроводов Gitlab CI с использованием шаблона SPINNAKER_PROPERTY_*=value
. Например, журнал, содержащий строку SPINNAKER_PROPERTY_HELLO=world
создаст элемент свойства сборки hello=world
. Артефакты Gitlab CI еще не поддерживаются.
CloudDriver может быть настроен на опрос ваших реестров. Если это так, Игорь может затем создать Poller, который перечислит реестры, индексированные CloudDriver, проверьте каждый из них на наличие новых изображений и отправить события в Echo (следовательно, разрешение на триггеры Docker)
Соответствующие свойства:
dockerRegistry.enabled
services.clouddriver.baseUrl
Игорь требует, чтобы Redis Server был запущен и запущен.
Начните Игорь через ./gradlew bootRun
. Или следуя инструкциям, используя сценарии установки Spinnaker.
Чтобы запустить JVM в режиме отладки, установите Java System Property DEBUG=true
:
./gradlew -DDEBUG=true
Затем JVM прослушает, как отладчик будет прикреплен к порту 8188. JVM не будет ждать, пока отладчик будет прикреплен до начала Игоря; Соответствующие аргументы JVM можно увидеть и изменить по мере необходимости в build.gradle
.