IGOR هي خدمة توفر نقطة تكامل واحدة مع خدمات التكامل المستمر (CI) وخدمات التحكم في المصادر (SCM) لـ Spinnaker.
يدير IGOR عددًا من الملوثات التي تشترك جميعها في نفس الهندسة المعمارية المشتركة. على مستوى عالٍ ، كلهم:
سمات:
HealthIndicator التي تقارير Down إذا لم يكن أي من الملوقين يعملون أو إذا لم يكن لديهم دورة اقتراع ناجحة منذ فترة طويلة/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 التطبيقات لاسترداد قوائم الالتزامات ، مثل /github/{{projectKey}}/{{repositorySlug}}/compareCommits?from={{fromHash}}&to={{toHash}}
في الوقت الحالي ، يعرض Igor فقط واجهات برمجة التطبيقات القراءة ، ولا توجد ملوثات ولا توجد مشغلات تنطوي على خدمات 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 التالية:
بالنسبة لكل من هذه الخدمات ، يمكن تمكين الملوث (على سبيل المثال مع jenkins.enabled ) التي ستبدأ في مراقبة عمليات التصميم/الأنابيب/القطع الأثرية الجديدة ، وتخزينها للتخزين المؤقت لها وتقديم الأحداث إلى صدى ، وبالتالي دعم مشغلات خطوط الأنابيب. يختلف GCB قليلاً من حيث أنه لا يستطلح ويتطلب إعداد اشتراكات PubSub.
تعرض فئة BuildController أيضًا واجهات برمجة التطبيقات للخدمات التي تدعمها مثل:
يتم استخدام واجهات برمجة التطبيقات هذه لتوفير معلومات قطعة أثرية لمراحل الخبز.
في كتلة التكوين الخاصة بك (إما في igor.yml ، igor-local.yml ، spinnaker.yml أو spinnaker-local.yml) ، يمكنك تحديد كتل Masters المتعددة باستخدام تنسيق القائمة.
يمكنك الحصول على رمز 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) ، يمكنك تحديد كتل Masters المتعددة باستخدام تنسيق القائمة.
للمصادقة مع Travis ، يمكنك استخدام "رمز الوصول الشخصي" على مستخدم 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) ، يمكنك تحديد كتل Masters المتعددة باستخدام تنسيق القائمة.
للمصادقة باستخدام 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 ، والتحقق من كل منها للحصول على صور جديدة وتقديم الأحداث إلى Echo (وبالتالي السماح بمشغلات Docker)
الخصائص ذات الصلة:
dockerRegistry.enabledservices.clouddriver.baseUrlيتطلب IGOR أن يكون خادم Redis قيد التشغيل.
ابدأ igor عبر ./gradlew bootRun . أو باتباع التعليمات باستخدام البرامج النصية للتثبيت Spinnaker.
لبدء JVM في وضع التصحيح ، قم بتعيين خاصية Java System DEBUG=true :
./gradlew -DDEBUG=true
سيستمع JVM بعد ذلك إلى إرفاق مصحح الأخطاء على المنفذ 8188. لن ينتظر JVM إرفاق الأخطاء قبل بدء Igor ؛ يمكن رؤية وسائط JVM ذات الصلة وتعديلها حسب الحاجة في build.gradle .