IGOR ist ein Dienst, der einen einzigen Integrationspunkt mit Continuous Integration (CI) und Source Control Management (SCM) -Diensten für Spinnaker bietet.
Igor betreibt eine Reihe von Pollern, die alle dieselbe gemeinsame Architektur haben. Auf hohem Niveau alle:
Merkmale:
HealthIndicator
, der berichtet, wenn keine Poller Down
oder wenn sie seit langer Zeit keinen erfolgreichen Wahlzyklus hatten/admin/pollers/fastforward/{monitorName}[?partition={partition}]
. Schnellwart bedeutet, dass alle ausstehenden Cache-Status befragt und gespeichert werden, aber keine Echo-Benachrichtigungen senden.Relevante Eigenschaften:
Eigentum | Standardwert | Beschreibung |
---|---|---|
spinnaker.build.pollingEnabled | WAHR | Definiert, ob der Umfragemechanismus des Bausystems aktiviert ist oder nicht. Wenn Sie dies deaktivieren, deaktiviert dies effektiv jede Integration mit einem Build -System, das von IGOR abhängt. |
spinnaker.build.pollInterval | 60 | Intervall in Sekunden zwischen Wahlzyklen |
spinnaker.pollingSafeguard.itemUpperThreshold | 1000 | Definiert den oberen Schwellenwert für die Anzahl neuer Elemente, bevor ein Cache -Update -Zyklus abgelehnt wird |
locking.enabled | false | Ermöglicht die verteilte Sperre, damit Igor ohne Interferenz auf mehreren Knoten ausgeführt werden kann |
Relevante Metriken:
Metrisch | Typ | Beschreibung |
---|---|---|
pollingMonitor.newItems | Messgerät | repräsentiert die Anzahl der neuen Elemente, die während eines Wahlzyklus von einem bestimmten Monitor zwischengespeichert wurden |
pollingMonitor.itemsOverThreshold | Messgerät | 0 Wenn deltasiert <Schwelle, deltasizieren Sie sonst |
pollingMonitor.pollTiming | Timer | Veröffentlicht für jeden Wahlzyklus mit der Dauer, die es brauchte, um abgeschlossen zu werden |
pollingMonitor.failed | Schalter | Ein Fehlerzähler, der einen fehlgeschlagenen Wahllokal angibt |
Alle diese Metriken können durch ein monitor
-Tag (z. B. DockerMonitor
, JenkinsMonitor
...) gruppiert werden, um Probleme aufzuspüren.
Die folgenden Speicher -Backends werden unterstützt:
Relevante Eigenschaften:
redis:
enabled: true
connection: redis://host:port
Die folgenden SCM -Dienste werden unterstützt:
Commit
Controller -Klassen enthüllen APIs zum Abrufen von Listen von Commits wie /github/{{projectKey}}/{{repositorySlug}}/compareCommits?from={{fromHash}}&to={{toHash}}
Im Moment enthüllt Igor nur Lese -APIs, es gibt keine Poller und keine Auslöser, die SCM -Dienste direkt betreffen.
Relevante Eigenschaften:
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
Die folgenden CI -Dienste werden unterstützt:
Für jeden dieser Dienste kann ein Poller aktiviert werden (z. B. mit jenkins.enabled
), mit der neue Builds/Pipelines/Artefakte überwacht werden, sie zwischengespeichert und Ereignisse in Echo einreichen, wodurch Pipeline -Trigger unterstützt werden. GCB ist insofern etwas anders, als es keine Umfrage hat und die Einrichtung von PubSub -Abonnements erfordert.
Die BuildController
-Klasse enthält auch APIs für Dienste, die sie unterstützen, wie z. B.:
Diese APIs werden verwendet, um Artefaktinformationen für Backphasen bereitzustellen.
In Ihrem Konfigurationsblock (entweder in igor.yml, igor-local.yml, spinnaker.yml oder spinnaker-local.yml) können Sie mithilfe des List-Formats mehrere Masterblöcke definieren.
Sie können ein Jenkins -API -Token erhalten, indem Sie zu http://your.jenkins.server/me/configure
(wo me
Ihr Benutzername ist) navigiert.
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
In Ihrem Konfigurationsblock (entweder in igor.yml, igor-local.yml, spinnaker.yml oder spinnaker-local.yml) können Sie mithilfe des List-Formats mehrere Masterblöcke definieren.
Um sich mit Travis zu authentifizieren, verwenden Sie ein "Personal Access Token" für einen Git -Benutzer mit Berechtigungen read:org, repo, user
. Dies wird in settings -> Personal access tokens
auf Github/Github -Enterprise hinzugefügt.
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))/
Bei der Parsen von Artefaktinformationen von Travis Builds verwendet Igor eine Standardregex, die mit der Ausgabe des jfrog rt
/ art
CLI -Tools übereinstimmt. Unter Verwendung der regexes
-Liste können verschiedene Regexes als die Standardeinstellung konfiguriert werden.
In Ihrem Konfigurationsblock (entweder in igor.yml, igor-local.yml, spinnaker.yml oder spinnaker-local.yml) können Sie mithilfe des Listenformates mehrere Masters-Blöcke definieren.
Um sich mit GitLab CI zu authentifizieren, verwenden Sie ein persönliches Zugriffs -Token mit Berechtigungen 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
Build -Eigenschaften werden automatisch aus erfolgreichen GitLab -CI -Pipelines unter Verwendung des Muster SPINNAKER_PROPERTY_*=value
gelesen. Zum Beispiel wird ein Protokoll mit einer Zeile SPINNAKER_PROPERTY_HELLO=world
ein Build -Eigenschaftselement hello=world
erstellen. Gitlab CI -Artefakte werden noch nicht unterstützt.
CloudDriver kann so konfiguriert werden, dass Sie Ihre Registrien befragen. Wenn dies der Fall ist, kann IGOR dann einen Poller erstellen, in dem die vom CloudDriver indizierten Register aufgelistet sind. Überprüfen Sie jede auf neue Bilder und senden Ereignisse an Echo (daher erlauben Docker -Trigger).
Relevante Eigenschaften:
dockerRegistry.enabled
services.clouddriver.baseUrl
konfiguriert werdenIgor erfordert, dass Redis Server in Betrieb ist.
Starten Sie Igor über ./gradlew bootRun
. Oder durch Befolgen der Anweisungen mit den Spinnaker -Installationsskripten.
Um die JVM im Debug -Modus zu starten, setzen Sie das Java -System -Eigenschaft DEBUG=true
:
./gradlew -DDEBUG=true
Die JVM hört dann zu einem Debugger, der auf Port 8188 angehängt wird. Die JVM kaumt nicht darauf, dass der Debugger vor dem Start von Igor angehängt wird. Die relevanten JVM -Argumente sind nach Bedarf in build.gradle
zu sehen und modifiziert.