Igor เป็นบริการที่ให้จุดเดียวของการรวมเข้ากับบริการ Integration Continuous (CI) และบริการการจัดการการควบคุมแหล่งที่มา (SCM) สำหรับ Spinnaker
อิกอร์มีจำนวนผู้สำรวจความคิดเห็นจำนวนมากที่มีสถาปัตยกรรมทั่วไปเหมือนกัน ในระดับสูงพวกเขาทั้งหมด:
คุณสมบัติ:
HealthIndicator ที่รายงาน Down หากไม่มีการสำรวจหรือหากพวกเขาไม่ได้มีวงจรการเลือกตั้งที่ประสบความสำเร็จในเวลานาน/admin/pollers/fastforward/{monitorName}[?partition={partition}] การส่งต่ออย่างรวดเร็วหมายความว่าสถานะแคชที่รอดำเนินการทั้งหมดจะได้รับการสำรวจและบันทึก แต่จะไม่ส่งการแจ้งเตือนเสียงสะท้อนคุณสมบัติที่เกี่ยวข้อง:
| คุณสมบัติ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
spinnaker.build.pollingEnabled | จริง | กำหนดว่ากลไกการสำรวจระบบการสร้างระบบจะเปิดใช้งานหรือไม่ การปิดการใช้งานสิ่งนี้จะปิดการใช้งานการรวมใด ๆ กับระบบบิลด์ที่ขึ้นอยู่กับการสำรวจของ Igor |
spinnaker.build.pollInterval | 60 | ช่วงเวลาไม่กี่วินาทีระหว่างรอบการเลือกตั้ง |
spinnaker.pollingSafeguard.itemUpperThreshold | 1000 | กำหนดเกณฑ์ด้านบนสำหรับจำนวนรายการใหม่ก่อนที่วงจรการอัปเดตแคชจะถูกปฏิเสธ |
locking.enabled | false | เปิดใช้งานการล็อคแบบกระจายเพื่อให้อิกอร์สามารถทำงานได้หลายโหนดโดยไม่มีสัญญาณรบกวน |
ตัวชี้วัดที่เกี่ยวข้อง:
| ตัวชี้วัด | พิมพ์ | คำอธิบาย |
|---|---|---|
pollingMonitor.newItems | วัด | แสดงจำนวนรายการใหม่ที่ถูกแคชโดยจอภาพที่กำหนดในระหว่างรอบการเลือกตั้ง |
pollingMonitor.itemsOverThreshold | วัด | 0 ถ้า deltasize <threshold, deltasize เป็นอย่างอื่น |
pollingMonitor.pollTiming | ตัวจับเวลา | จัดพิมพ์สำหรับทุกรอบการเลือกตั้งที่มีระยะเวลาที่จะเสร็จสมบูรณ์ |
pollingMonitor.failed | เคาน์เตอร์ | ตัวนับข้อผิดพลาดระบุรอบการเลือกตั้งที่ล้มเหลว |
ตัวชี้วัดทั้งหมดเหล่านี้สามารถจัดกลุ่มโดยแท็ก monitor (เช่น DockerMonitor , JenkinsMonitor ... ) เพื่อติดตามปัญหา
รองรับแบ็กเอนด์ที่เก็บข้อมูลต่อไปนี้:
คุณสมบัติที่เกี่ยวข้อง:
redis:
enabled: true
connection: redis://host:port
รองรับบริการ SCM ต่อไปนี้:
Commit classes impose apis เพื่อดึงรายการของ commits เช่น /github/{{projectKey}}/{{repositorySlug}}/compareCommits?from={{fromHash}}&to={{toHash}}
ในขณะนี้อิกอร์เปิดเผยเฉพาะการอ่าน 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 ต่อไปนี้:
สำหรับแต่ละบริการเหล่านี้สามารถเปิดใช้งาน poller (เช่น jenkins.enabled ) ที่จะเริ่มตรวจสอบการสร้าง/ท่อ/สิ่งประดิษฐ์ใหม่, แคชพวกเขาและส่งเหตุการณ์ไปยังเสียงสะท้อนดังนั้นจึงสนับสนุนการทริกเกอร์ไปป์ไลน์ GCB แตกต่างกันเล็กน้อยในการไม่สำรวจและต้องมีการตั้งค่าการสมัครสมาชิก PubSub
คลาส BuildController ยังเปิดเผย API สำหรับบริการที่สนับสนุนพวกเขาเช่น:
API เหล่านี้ใช้เพื่อให้ข้อมูลสิ่งประดิษฐ์สำหรับขั้นตอนการอบ
ในบล็อกการกำหนดค่าของคุณ (ไม่ว่าจะเป็น igor.yml, igor-local.yml, spinnaker.yml หรือ spinnaker-local.yml) คุณสามารถกำหนดบล็อกมาสเตอร์หลายบล็อกโดยใช้รูปแบบรายการ
คุณสามารถรับโทเค็น Jenkins API ได้โดยการนำทางไปยัง 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) คุณสามารถกำหนดบล็อกมาสเตอร์หลายบล็อกโดยใช้รูปแบบรายการ
ในการรับรองความถูกต้องกับเทรวิสคุณใช้ "โทเค็นการเข้าถึงส่วนบุคคล" บนผู้ใช้ 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 จะใช้ regex เริ่มต้นที่จะจับคู่กับเอาต์พุตจากเครื่องมือ jfrog rt / art CLI 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
คุณสมบัติการสร้างจะถูกอ่านโดยอัตโนมัติจากท่อ Gitlab CI ที่ประสบความสำเร็จโดยใช้รูปแบบ SPINNAKER_PROPERTY_*=value ตัวอย่างเช่นบันทึกที่มีบรรทัด SPINNAKER_PROPERTY_HELLO=world จะสร้างรายการคุณสมบัติการสร้าง hello=world สิ่งประดิษฐ์ Gitlab CI ยังไม่ได้รับการสนับสนุน
CloudDriver สามารถกำหนดค่าเพื่อสำรวจความคิดเห็นของคุณ เมื่อเป็นเช่นนั้น Igor สามารถสร้าง poller ที่จะแสดงรายการการลงทะเบียนที่จัดทำดัชนีโดย CloudDriver ตรวจสอบแต่ละภาพสำหรับภาพใหม่และส่งเหตุการณ์ไปยังเสียงสะท้อน (ดังนั้นจึงอนุญาตให้ทริกเกอร์ Docker)
คุณสมบัติที่เกี่ยวข้อง:
dockerRegistry.enabledservices.clouddriver.baseUrl ที่จะกำหนดค่าอิกอร์ต้องการให้เซิร์ฟเวอร์ Redis พร้อมใช้งาน
เริ่มต้น Igor ผ่าน. ./gradlew bootRun หรือโดยทำตามคำแนะนำโดยใช้สคริปต์การติดตั้ง Spinnaker
ในการเริ่มต้น JVM ในโหมดการดีบักให้ตั้งค่าคุณสมบัติของ Java System DEBUG=true :
./gradlew -DDEBUG=true
จากนั้น JVM จะฟังดีบักเกอร์ที่จะแนบบนพอร์ต 8188 JVM จะ ไม่ รอให้ผู้ดีทำการดีขึ้นก่อนที่จะเริ่มต้น Igor; อาร์กิวเมนต์ JVM ที่เกี่ยวข้องสามารถมองเห็นและแก้ไขได้ตามต้องการใน build.gradle