Igor는 Spinnaker를위한 CI (Continuous Integration) 및 SCM (Source Control Management) 서비스와 단일 통합 지점을 제공하는 서비스입니다.
Igor는 모두 동일한 공통 아키텍처를 공유하는 다수의 폴러를 운영합니다. 높은 수준에서 그들은 모두 :
특징:
Down HealthIndicator 를 가지고 있습니다./admin/pollers/fastforward/{monitorName}[?partition={partition}] 와 같은 수동 조치가 필요합니다. 빠르게 진행되는 것은 보류중인 모든 캐시 상태가 투표되고 저장 될 것이지만 에코 알림을 보내지 않는다는 것을 의미합니다.관련 속성 :
| 재산 | 기본값 | 설명 |
|---|---|---|
spinnaker.build.pollingEnabled | 진실 | 빌드 시스템 폴링 메커니즘이 활성화되어 있는지 여부를 정의합니다. 이를 비활성화하면 Igor 폴링에 의존하는 빌드 시스템과의 통합이 효과적으로 비활성화됩니다. |
spinnaker.build.pollInterval | 60 | 폴링주기 사이의 초의 간격 |
spinnaker.pollingSafeguard.itemUpperThreshold | 1000 | 캐시 업데이트주기가 거부되기 전에 새 항목 수에 대한 상한 임계 값을 정의합니다. |
locking.enabled | false | Igor가 간섭없이 여러 노드에서 실행할 수 있도록 분산 잠금을 활성화합니다. |
관련 메트릭 :
| 메트릭 | 유형 | 설명 |
|---|---|---|
pollingMonitor.newItems | 계량기 | 폴링주기 동안 주어진 모니터로 캐시 된 새 항목의 수를 나타냅니다. |
pollingMonitor.itemsOverThreshold | 계량기 | deltasize <임계 값이 deltasize 인 경우, 그렇지 않으면 deltasize |
pollingMonitor.pollTiming | 시간제 노동자 | 완료하는 데 걸리는 기간으로 모든 폴링주기에 대해 게시 |
pollingMonitor.failed | 계수기 | 폴링 사이클이 실패한 오류 카운터 |
이러한 모든 메트릭은 monitor 태그 (예 : DockerMonitor , JenkinsMonitor ...)로 그룹화하여 문제를 추적 할 수 있습니다.
다음과 같은 스토리지 백엔드가 지원됩니다.
관련 속성 :
redis:
enabled: true
connection: redis://host:port
다음 SCM 서비스가 지원됩니다.
Commit 컨트롤러 클래스 /github/{{projectKey}}/{{repositorySlug}}/compareCommits?from={{fromHash}}&to={{toHash}} 과 같은 커밋 목록을 검색하기 위해 API를 노출시킵니다.
현재 Igor는 읽기 API 만 노출되며 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 서비스가 지원됩니다.
이러한 각 서비스에 대해 새로운 빌드/파이프 라인/아티팩트를 모니터링하고 캐싱 및 ECHO에 이벤트를 제출하여 파이프 라인 트리거를 지원할 폴러 (예 : jenkins.enabled )를 활성화 할 수 있습니다. GCB는 설문 조사가없고 PubSub 구독을 설정해야한다는 점에서 약간 다릅니다.
BuildController 클래스는 또한 다음과 같은 서비스를 지원하는 서비스에 대한 API를 노출시킵니다.
이 API는 빵 단계에 대한 아티팩트 정보를 제공하는 데 사용됩니다.
구성 블록 (igor.yml, igor-local.yml, spinnaker.yml 또는 spinnaker-local.yml)에서 목록 형식을 사용하여 여러 마스터 블록을 정의 할 수 있습니다.
http://your.jenkins.server/me/configure (여기서 me 의 사용자 이름)로 탐색하여 Jenkins API 토큰을 얻을 수 있습니다.
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로 인증하려면 read:org, repo, user 권한이있는 GIT 사용자에 "개인 액세스 토큰"을 사용합니다. settings -> Personal access tokens 에 추가됩니다.
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 도구의 출력에 맞는 기본 Regex를 사용합니다. 기본값과 다른 Regexes는 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
빌드 속성은 패턴 SPINNAKER_PROPERTY_*=value 사용하여 성공적인 Gitlab CI 파이프 라인에서 자동으로 읽습니다. 예를 들어 라인 SPINNAKER_PROPERTY_HELLO=world 포함 된 로그는 빌드 속성 항목 hello=world 만듭니다. Gitlab CI 인공물은 아직 지원되지 않았습니다.
CloudDriver는 레지스트리를 폴링하도록 구성 할 수 있습니다. 이 경우 Igor는 CloudDriver가 색인화 된 레지스트리를 나열하고 새 이미지를 확인한 다음 Echo에 이벤트를 제출하는 폴러를 만들 수 있습니다 (따라서 Docker 트리거가 허용).
관련 속성 :
dockerRegistry.enabledservices.clouddriver.baseUrl 구성해야합니다Igor는 Redis Server가 시작되어 실행되어야합니다.
./gradlew bootRun 통해 Igor를 시작하십시오. 또는 Spinnaker 설치 스크립트를 사용하여 지침을 따릅니다.
디버그 모드에서 JVM을 시작하려면 Java 시스템 속성 DEBUG=true 설정하십시오.
./gradlew -DDEBUG=true
그런 다음 JVM은 포트 8188에 디버거가 부착 될 수 있도록들을 것입니다. JVM은 Igor를 시작하기 전에 디버거가 부착 될 때까지 기다리지 않습니다 . 관련 JVM 인수는 build.gradle 에서 필요에 따라보고 수정 될 수 있습니다.