Рубрики
Uncategorized

Создайте PR -Builder в Bitbucket, Dangerjs и Jenkins

Aka, создавая строитель запроса на привлечение для Bitbucket [шаги малыша] Что такое Dangerjs? … Tagged с DevOps, Codequality, JavaScript, Git.

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

  1. Установите Dangerjs в свою репо пряжа добавить опасность -dev Или Установка NPM-Danger-Save-Dev

  2. Создайте 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%7D/ Это это то, что нам нужно.

Получите Bitbucket Oauth Key и секрет, теперь нам нужно настроить клиента OAuth для опасности (чтобы он мог опубликовать комментарии к вашему PR).

  1. Перейдите в настройки BitBucket [значок профиля> Настройки BitBucket]
  2. Перейти в Оаут
  3. Добавить потребителя
  4. Дайте ему имя
  5. Дайте ему эти разрешения:
    1. Репозитории
      1. Читать
      2. Напишите
    2. Вытащить запросы
      1. Читать
      2. Напишите

Вы получите oauth ключ и oauth Секрет Анкет

Вот и все, но так как мы в этом. Давайте сделаем еще одно изменение в Bitbucket, которое нам понадобится позже.

Добавить веб -крюк в Bitbucket

Нам нужно добавить WebHook, чтобы мы могли дистанционно запустить наши задания Jenkins, используя этот веб -крюк.

Для этого иди к твоему репо

  1. Перейдите в настройки> Webhooks
  2. Добавить веб -крюк
  3. Дать ему название
  4. Дайте URL https:///generic-webhook-trigger/invoke? token =
  5. Триггеры> Выберите из полного списка триггеров
    1. Получить запрос
      1. Созданный
      2. Обновлено

Вот и все для 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 = '' npm запустить Danger ci Опасность будет работать, и это фактически опубликует комментарий к вашему пиару

С помощью местного тестирования, теперь пришло время интегрировать его с Дженкинсом.

Интеграция Дженкинса с Dangerjs и Bitbucket

Установка требуемых плагинов

  1. Установить https://plugins.jenkins.io/generic-webhook-rigger

Теперь делаю работу Jenkins для нашего строителя запроса на привлечение

  1. Создайте новый проект Freestyle в Дженкинсе
  2. Перейдите к управлению исходным кодом и выберите GIT в качестве SCM
  3. Добавить URL и учетные данные (SSH или пароль имени пользователя)
  4. Теперь перейдите, чтобы построить триггеры, и выберите общий триггер Webhook
  5. Под параметрами содержимого сообщения добавьте параметр
    1. Параметр
      1. Переменная: ПЕРИЧИК
      2. Выражение: $ .pullRequest.source.branch.name Jsonpath
    2. Параметр
      1. Переменная: pullrequestid
      2. Выражение $ .pullRequest.id Jsonpath
  6. Токен: (Этот токен должен быть таким же, как мы настроили в нашем WebHook
  7. Причина: Причина для триггера (вы можете использовать переменные ENV и параметры POST содержимого, которые мы настроили выше)
  8. Теперь, чтобы перейти к привязке
    1. Добавьте свои учетные данные Bitbucket BitBucketDangerJsoAuthkey и BitBucketDangerJsoAuthSecret в магазин учетных данных Jenkins
    2. Также добавьте Bitbucketuseruuid Дженкинсу тоже
  9. Иди, чтобы построить

Под сборкой добавьте это:

#!/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»