Как да интегрирате DangerJS в тръбопроводите на GoCD

В настоящата ми компания наскоро мигрирахме нашата CI инфра от CircleCI към GoCD. След няколко месеца, когато използвах новата платформа CI, бях достатъчно удобна, за да я изцедя. Едно от нещата, които планирах, беше интегрирането на DangerJS - невероятен инструмент за ускоряване на преглеждането на заявки за изтегляне чрез извършване на конфигурируеми автоматични проверки на нов код. Какво означава? Няма повече време, прекарано за писане на PR коментари от рода на: „О, вярвам, че сте забравили X… Y… Z…“.

Моята цел с тази статия е да помогна на следващия човек, изпълняващ тази мисия, за да подобри процесите за преглед на качеството на кода и PR на техния екип.

контекст

Преди използвах правомощията на Danger (макар и интегрирана с Ruby) и вече знаех, че първоначалната настройка ще бъде доста проста ... ако само ние все още използвахме CircleCI!

При първия ми опит да се интегрирам, опитах googling „Интегриране на DangerJS с GoCD“, без да имам късмет. Също така, след като прочетох документацията на DangerJS, открих, че няма такова нещо като интеграция с GoCD, която да мога да използвам.

Това означаваше, че няма да мога лесно да интегрирам проверките на Danger в моя CI поток. Така че останах с няколко възможности:

  1. Опитвайки се да накарате разработчиците да включват местни ръчни изпълнения на DangerJS команди;
  2. Изградете специфичен тръбопровод в (CircleCI / CodeShip / FooBar), за да изпълнявате само DangerJS;
  3. Предавам се.

Не харесвах нито една от възможностите си и бях наистина разочарован след няколко часа, прекарани в настройките на Danger и GoCD. Тогава се натъкнах на секцията „Използване на опасност и фалшив достъп до CI“ в документите на DangerJS. Това е! Ако мога да фалшифицирам, че съм на CI в моята локална машина, каква е разликата от фалшифицирането на CI в GoCD машина?

След това беше просто да измисляме как да подражаваме на същото локално поведение вътре в инфрачервената програма на GoCD.

Първи стъпки

Преди всичко трябва да преминете през официалната документация, за да настроите и започнете да използвате DangerJS.

По принцип това, което трябва е:

  • Създайте своя файл filefile.js. Тук има няколко примера.
  • Създайте ботов акаунт в GitHub / BitBucket за опасност за използване
  • Отворете PR с променени файлове, за да проверите промените
  • Стартирайте DangerJS локално срещу PR връзка (тази, която току-що отворихте)
  • Опитайте да фалшифицирате CI среда във вашата локална машина

В следващия раздел ще се задълбоча в тази последна стъпка, тъй като е критичната част да накара DangerJS да работи с GoCD.

Конфигуриране на фалшив потребителски интерфейс в средата на GoCD

Първо, ако все още нямате отделен тръбопровод за GoCD, който да изпълнява само изграждания на Pull Requests, горещо ви препоръчвам да го направите. Ето ръководство, ако имате нужда от помощна настройка, която да настроите.

Второ, след създаването на вашия PR тръбопровод, създайте нов Job само за опасност:

Сега, за да можете да фалшифицирате CI с помощта на Danger, трябва да зададете куп променливи от средата, като например:

експортиране DANGER_FAKE_CI = "YEP"
export DANGER_TEST_REPO = "потребителско име / преименуване"

В настройките на Pipeline Job на GoCD, отворете раздела Променливи на околната среда и задайте тези две env променливи, заместващи заместителите на потребителско име / преименуване със собствени настройки.

Препоръчвам да поставите DANGER_GITHUB_API_TOKEN, генериран на първите стъпки за конфигуриране на DangerJS, в секцията Защитни променливи.

След тази първа партида конфигурации, за да можете действително да стартирате тестовете на Danger в GoCD, можете да използвате скрипт за черупки, който изпълнява същите команди, използвани за фалшифициране на CI в локална среда. Нека да наречем този файл опасност-build.sh.

# опасност-build.sh
ехо '- - НАЧАЛО ОПАСНОСТ ПРОВЕРКА JS -'
echo Тестване срещу ангажименти за PR: $ {GO_SCM_PIPELINE_PR_URL}
DANGER_TEST_PR = $ {GO_SCM_PIPELINE_PR_ID} npx опасност от прежда ci
ехо '- - КРАЙ НА ОПАСНОСТТА ПРОВЕРКА JS - -'

Моля, обърнете внимание, че ще ви е необходим възел, npm / прежда, предварително инсталиран в наличната машина на GoCD.

Забелязахте ли тези две променливи GO_SCM? Те са уловката, която ви позволява да стартирате вашите проверки за опасност в машина на GoCD.

Моля, обърнете специално внимание на променливата PR_ID, тъй като тя е тази, която предоставя PR препратката, за да позволи на опасността да чете, интерпретира промените и след това да пише предложения в Pull Request.

В случай, че сте любопитни, тези променливи на средата са генерирани от машините на GoCD. Те могат да бъдат оценени чрез изпълнение на командата / usr / bin / printenv UNIX при изграждане и инспектиране на изхода.

И това е!

След като картографират правилните env променливи в своя скрипт на Shell, DangerJS проверките ще започнат да се изпълняват в тръбопроводите на GoCD до текущия ви тестов пакет.

За да завършите стъпките:

1. Настройте първите DangerJS локални файлове и настройки

2. Създайте конкретен Pipeline / Job в GoCD

3. Открийте и след това картографирайте подходящите променливи на средата в скрипт на обвивка, за да оставите GoCD да изпълнява DangerJS

Надявам се, че сте намерили това ръководство за полезно. Ако сте харесали статията, моля, споделете с колегите си разработчици и мениджъри и помогнете за разпространението на думата.

За всякакви въпроси, не се колебайте да задавате в секцията за коментари!

PS: Опасността също има много опции за плъгини, проверете ги!