Igorは、Spinnaker向けの継続的な統合(CI)およびソースコントロール管理(SCM)サービスとの単一の統合ポイントを提供するサービスです。
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 | ゲージ | 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のみを公開しており、PollersもSCM Servicesに直接関与するトリガーもいません。
関連するプロパティ:
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サービスがサポートされています。
これらの各サービスについて、新しいビルド/パイプライン/アーティファクトの監視を開始し、それらをキャッシュし、イベントをエコーに送信し、パイプライントリガーをサポートするポーラー(例えば、 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で認証するには、Permissionsを使用してGitユーザーに「Personal Access Token」を使用しますread:org, repo, user 。これは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からのアーティファクト情報を解析するとき、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
ビルドプロパティは、パターンSPINNAKER_PROPERTY_*=valueを使用して、成功したGitLab CIパイプラインから自動的に読み取られます。たとえば、Line SPINNAKER_PROPERTY_HELLO=worldを含むログは、ビルドプロパティアイテムhello=worldを作成します。 Gitlab CIアーティファクトはまだサポートされていません。
CloudDriverは、レジストリを投票するように構成できます。その場合、IgorはCloudDriverによってインデックス付けされたレジストリをリストするポーラーを作成し、それぞれが新しい画像をチェックし、イベントをエコーに送信します(したがって、Dockerトリガーを許可します)
関連するプロパティ:
dockerRegistry.enabledservices.clouddriver.baseUrlを設定する必要がありますIgorは、Redisサーバーを稼働させる必要があります。
./gradlew bootRun経由でIgorを開始します。または、Spinnakerインストールスクリプトを使用して手順に従うことにより。
JVMをデバッグモードで起動するには、Java System Property DEBUG=trueを設定します。
./gradlew -DDEBUG=true
その後、JVMはポート8188にデバッガーが添付されるのを聞きます。JVMは、Igorを開始する前にデバッガーが添付されるのを待ちません。関連するJVM引数は、 build.gradleで必要に応じて確認および変更できます。