IGOR adalah layanan yang menyediakan satu titik integrasi dengan integrasi kontinu (CI) dan layanan manajemen kontrol sumber (SCM) untuk spinnaker.
Igor menjalankan sejumlah penyerbuk yang semuanya memiliki arsitektur umum yang sama. Pada level tinggi, mereka semua:
Fitur:
HealthIndicator
yang Down
jika tidak ada pemuda yang berlari atau jika mereka tidak memiliki siklus pemungutan suara yang berhasil dalam waktu yang lama/admin/pollers/fastforward/{monitorName}[?partition={partition}]
. Maju cepat berarti bahwa semua keadaan cache yang tertunda akan disurvei dan disimpan, tetapi tidak akan mengirim pemberitahuan gema.Properti yang relevan:
Milik | Nilai default | Keterangan |
---|---|---|
spinnaker.build.pollingEnabled | BENAR | Mendefinisikan apakah mekanisme pemungutan suara sistem build diaktifkan atau tidak. Menonaktifkan ini akan secara efektif menonaktifkan integrasi apa pun dengan sistem build yang tergantung pada pemungutan suara IGOR. |
spinnaker.build.pollInterval | 60 | Interval dalam detik antara siklus pemungutan suara |
spinnaker.pollingSafeguard.itemUpperThreshold | 1000 | Menentukan ambang batas atas untuk jumlah item baru sebelum siklus pembaruan cache akan ditolak |
locking.enabled | false | Mengaktifkan penguncian terdistribusi sehingga Igor dapat berjalan pada beberapa node tanpa gangguan |
Metrik yang relevan:
Metrik | Jenis | Keterangan |
---|---|---|
pollingMonitor.newItems | mengukur | mewakili jumlah item baru di -cache oleh monitor yang diberikan selama siklus pemungutan suara |
pollingMonitor.itemsOverThreshold | mengukur | 0 Jika Deltasize <ambang batas, deltasize sebaliknya |
pollingMonitor.pollTiming | timer | Diterbitkan untuk setiap siklus pemungutan suara dengan durasi yang diperlukan untuk menyelesaikannya |
pollingMonitor.failed | menangkal | penghitung kesalahan yang menunjukkan siklus pemungutan suara yang gagal |
Semua metrik ini dapat dikelompokkan dengan tag monitor
(misalnya DockerMonitor
, JenkinsMonitor
...) untuk melacak masalah.
Backend penyimpanan berikut didukung:
Properti yang relevan:
redis:
enabled: true
connection: redis://host:port
Layanan SCM berikut didukung:
Kelas pengontrol Commit
mengekspos API untuk mengambil daftar komit, seperti /github/{{projectKey}}/{{repositorySlug}}/compareCommits?from={{fromHash}}&to={{toHash}}
Saat ini, Igor hanya memaparkan API baca, tidak ada pemecah poller dan tidak ada pemicu yang melibatkan layanan SCM secara langsung.
Properti yang relevan:
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
Layanan CI berikut didukung:
Untuk masing -masing layanan ini, seorang poller dapat diaktifkan (misalnya dengan jenkins.enabled
) yang akan mulai memantau build baru/pipa/artefak, menangani mereka dan mengirimkan acara ke Echo, sehingga mendukung pemicu pipa. GCB sedikit berbeda karena tidak polling dan membutuhkan pengaturan langganan pubsub.
Kelas BuildController
juga memperlihatkan API untuk layanan yang mendukung mereka seperti:
API ini digunakan untuk memberikan informasi artefak untuk tahap panggang.
Di blok konfigurasi Anda (baik di igor.yml, igor-local.yml, spinnaker.yml atau spinnaker-local.yml), Anda dapat mendefinisikan beberapa blok master dengan menggunakan format daftar.
Anda dapat memperoleh token API Jenkins dengan menavigasi ke http://your.jenkins.server/me/configure
(di mana me
adalah nama pengguna Anda).
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
Di blok konfigurasi Anda (baik di igor.yml, igor-local.yml, spinnaker.yml atau spinnaker-local.yml), Anda dapat mendefinisikan beberapa blok master dengan menggunakan format daftar.
Untuk mengotentikasi dengan Travis, Anda menggunakan "token akses pribadi" pada pengguna git dengan izin read:org, repo, user
. Ini ditambahkan dalam settings -> Personal access tokens
di 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))/
Saat parsing informasi artefak dari Travis builds, Igor menggunakan regex default yang akan cocok dengan output dari alat jfrog rt
/ art
CLI. Regex yang berbeda dari default dapat dikonfigurasi menggunakan daftar regexes
.
Di blok konfigurasi Anda (baik di igor.yml, igor-local.yml, spinnaker.yml atau spinnaker-local.yml), Anda dapat mendefinisikan beberapa blok master dengan menggunakan format daftar.
Untuk mengotentikasi dengan gitlab CI, gunakan token akses pribadi dengan izin 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
Properti Build secara otomatis dibaca dari pipa GitLab CI yang berhasil menggunakan pola SPINNAKER_PROPERTY_*=value
. Misalnya log yang berisi garis SPINNAKER_PROPERTY_HELLO=world
akan membuat item properti build hello=world
. Artefak Gitlab CI belum didukung.
CloudDriver dapat dikonfigurasi untuk polling pendaftar Anda. Ketika itu masalahnya, IGOR kemudian dapat membuat poller yang akan mencantumkan pendaftar yang diindeks oleh CloudDriver, periksa masing -masing untuk gambar baru dan kirimkan acara untuk bergema (karenanya memungkinkan pemicu Docker)
Properti yang relevan:
dockerRegistry.enabled
services.clouddriver.baseUrl
untuk dikonfigurasiIGOR membutuhkan server Redis untuk berjalan dan berjalan.
Mulai Igor melalui ./gradlew bootRun
. Atau dengan mengikuti instruksi menggunakan skrip instalasi spinnaker.
Untuk memulai JVM dalam mode debug, atur properti sistem java DEBUG=true
:
./gradlew -DDEBUG=true
JVM kemudian akan mendengarkan debugger untuk dilampirkan di port 8188. JVM tidak akan menunggu debugger dilampirkan sebelum memulai Igor; Argumen JVM yang relevan dapat dilihat dan dimodifikasi sesuai kebutuhan dalam build.gradle
.