Aka, создавая строитель запроса на привлечение для Bitbucket [шаги малыша]
Что такое Dangerjs?
С официального сайта
Опасность работает во время вашего процесса CI и дает командам возможность автоматизировать работу по обзору кода. Это происходит из -за опасности, оставляя сообщения в ваших PRS на основе правил, которые вы создаете с помощью JavaScript или TypeScript.
Мы (в Admitkard) также недавно решили интегрировать DangerJS с нашей настройкой React + TS, чтобы получить нам сообщения в наших запросах на привлечение в Bitbucket.
Мы используем BitBucket, и в Интернете очень мало статей вокруг BitBucket+DangerJS (поскольку GitHub является более популярным выбором). Поэтому я решил написать статью, чтобы помочь вам.
Давайте начнем.
Есть четыре больших частях этого:
- Ваш репо
- Местное тестирование
- Битбакет
- Дженкинс.
Изменения в репо
Вот пошаговые руководства, которые мы сделали в нашем (React +TS). Вы можете следовать официальному руководству здесь: https://danger.systems/js/guides/getting_started.html
Установите Dangerjs в свою репо
пряжа добавить опасность -dev
ИлиУстановка NPM-Danger-Save-Dev
Создайте DangerFile Создайте новый файл
dangerfile.js
илиdangerfile.ts
Добавить следующий код вDangerFile
import { message, warn, fail, danger } from 'danger'; import { exec } from 'child_process'; import * as path from 'path'; // TSLint const runTSLint = () => { const modifiedFiles = danger.git.modified_files .filter((file) => /\.ts[x]?$/.test(file)) .join(' '); const tsLintExec = path.join(__dirname, 'node_modules', '.bin', 'tslint'); const tslintCommand = `${tsLintExec} ${modifiedFiles} -t prose --project tsconfig.json`; const tslintOut = exec(tslintCommand, (error, stdout, stderr) => { if (error) { warn(stdout || stderr); } }); }; runTSLint();
danger.git.modified_files
Это Danger API для предоставления нам модифицированных файлов в PR, прикрепленном к конкретной сборке (вы также можете использовать GIT API, но вам придется возиться через поиск коммитов в текущем PR). tslintexec
Наша местная установка tslint
через пакеты exec
выполняет нашу команду для Tslint
tslint
потерпит неудачу, если возникнут ошибки tslint, поэтому мы получим ошибка
Предупреждение
Позвольте Dangerjs опубликовать предупреждение о нашем запросе.
Изменить Package.json для DangerJS
Этот шаг не является обязательным, но нам будет легче запустить DangerJS. Добавьте скрипт в свой package.json
"scripts": { "danger": "danger", },
Это все, что нужно в вашем репо.
Чтобы проверить ваши изменения локально, вам нужно будет настроить доступные токены в вашем репот -репо. Итак, мы сначала перейдем в Bitbucket Part
Изменения в Bitbucket для DangerJs
Эта статья предназначена для Bitbucket Cloud, но шаги также должны быть похожими для сервера Bitbucket.
Получите Bitbucket uuid
Получите UUID пользователя, который DangerJS будет использовать для публикации этих комментариев (рекомендуется создать пользователя бота для таких задач).
В Bitbucket перейдите в свой профиль. Ваш URL изменится на https://bitbucket.org/%7B
Это
это то, что нам нужно.
Получите Bitbucket Oauth Key и секрет, теперь нам нужно настроить клиента OAuth для опасности (чтобы он мог опубликовать комментарии к вашему PR).
- Перейдите в настройки BitBucket [значок профиля> Настройки BitBucket]
- Перейти в Оаут
- Добавить потребителя
- Дайте ему имя
- Дайте ему эти разрешения:
- Репозитории
- Читать
- Напишите
- Вытащить запросы
- Читать
- Напишите
- Репозитории
Вы получите oauth ключ
и oauth Секрет
Анкет
Вот и все, но так как мы в этом. Давайте сделаем еще одно изменение в Bitbucket, которое нам понадобится позже.
Добавить веб -крюк в Bitbucket
Нам нужно добавить WebHook, чтобы мы могли дистанционно запустить наши задания Jenkins, используя этот веб -крюк.
Для этого иди к твоему репо
- Перейдите в настройки> Webhooks
- Добавить веб -крюк
- Дать ему название
- Дайте URL
https://
/generic-webhook-trigger/invoke? token = - Триггеры> Выберите из полного списка триггеров
- Получить запрос
- Созданный
- Обновлено
- Получить запрос
Вот и все для Bitbucket. Теперь давайте проверим это в нашем местном репо.
Тестирование DangerJS на местном терминале
Во -первых, нам нужно настроить некоторые переменные ENV для DangerJS. Эти переменные в основном являются учетными данными BitBucket, которые нам необходимы для предоставления DangerJS.
Установка переменных среды для DangerJS для BitBucket
export DANGER_BITBUCKETCLOUD_OAUTH_KEY=export DANGER_BITBUCKETCLOUD_OAUTH_SECRET= export DANGER_BITBUCKETCLOUD_UUID={ }
Теперь вы можете проверить DangerJS на PR:
yarn danger pr https://bitbucket.org// /pull-requests/ /
Вы увидите вывод DangerJS в вашем терминале с предупреждениями.
Чтобы фактически проверить, как это будет вести себя, когда он будет интегрирован в ваш трубопровод CI, необходимо будет сделать дополнительный шаг. (Этот шаг необязательно)
export DANGER_FAKE_CI="YEP" export DANGER_TEST_REPO='/ '
Теперь беги Danger_test_pr = '
Опасность будет работать, и это фактически опубликует комментарий к вашему пиару
С помощью местного тестирования, теперь пришло время интегрировать его с Дженкинсом.
Интеграция Дженкинса с Dangerjs и Bitbucket
Установка требуемых плагинов
Теперь делаю работу Jenkins для нашего строителя запроса на привлечение
- Создайте новый проект Freestyle в Дженкинсе
- Перейдите к управлению исходным кодом и выберите GIT в качестве SCM
- Добавить URL и учетные данные (SSH или пароль имени пользователя)
- Теперь перейдите, чтобы построить триггеры, и выберите общий триггер Webhook
- Под параметрами содержимого сообщения добавьте параметр
- Параметр
- Переменная:
ПЕРИЧИК
- Выражение:
$ .pullRequest.source.branch.name
Jsonpath
- Переменная:
- Параметр
- Переменная:
pullrequestid
- Выражение
$ .pullRequest.id
Jsonpath
- Переменная:
- Параметр
- Токен:
(Этот токен должен быть таким же, как мы настроили в нашем WebHook - Причина: Причина для триггера (вы можете использовать переменные ENV и параметры POST содержимого, которые мы настроили выше)
- Теперь, чтобы перейти к привязке
- Добавьте свои учетные данные Bitbucket
BitBucketDangerJsoAuthkey
иBitBucketDangerJsoAuthSecret
в магазин учетных данных Jenkins - Также добавьте
Bitbucketuseruuid
Дженкинсу тоже
- Добавьте свои учетные данные Bitbucket
- Иди, чтобы построить
Под сборкой добавьте это:
#!/bin/bash export ghprbGhRepository="/ " export ghprbPullId=$pullRequestId export DANGER_BITBUCKETCLOUD_UUID=$bitbucketUserUUID export DANGER_BITBUCKETCLOUD_OAUTH_KEY=$bitbucketDangerJSOauthKey export DANGER_BITBUCKETCLOUD_OAUTH_SECRET=$bitbucketDangerJSOauthSecret npm install npm run danger ci
ghprbghrepository
Ваш репозитный URL ghprbpullid
Наш PR ID, который мы извлекли из Webhook Отдых — это переменные, которые мы сделали в нашем репо.
Примечание Дженкинс может дать вам ошибку Пропустить опасность из -за этого прогона, не выполняющего PR.
. Это связано с отсутствующими переменными.
Почему переменные названы так, как даже для Bitbucket? В настоящее время ghprbghrepository а также ghprbpullid Похоже, они потребуются только для GitHub-Pull-Request-Builder, но это не так. Посмотрите здесь: || https://github.com/danger/danger-js/blob/master/source/ci_source/providers/jenkins.ts Вы можете увидеть под || ISPR || , он проверяет эти переменные (также для Bitbucket). Я собираюсь поднять пиар с DangerJS, чтобы получить эти переменные, на которые сталкивались что -то общее, например || DANGER_PR_REPO || и || DANGER_PR_ID || .
При этом ваш PR запустит Jenkins Jobs и опубликует комментарии к вашему PR, если что -то не сможет в Tslint. Вы можете легко расширить DangerJS, чтобы опубликовать другие комментарии, а также можете контролировать свой вывод трубопровода Jenkins.
Последние слова
DangerJS предоставляет простой способ облегчить рецензенту и разработчику получить уведомление о проблемах в своем коде, которые можно настроить с помощью инструментов сборки. По словам опасности
⚠ Перестаньте говорить «Вы забыли…» в обзоре кода
Оригинал: «https://dev.to/admitkard/how-to-integrate-dangerjs-with-jenkins-and-bitbucket-cloud-2kh2»