📜  珀尔 |模块(1)

📅  最后修改于: 2023-12-03 15:27:07.484000             🧑  作者: Mango

Peril | 模块

Peril是一个基于GitHub的规则和机器人系统,可与CI工具(如Travis、CircleCI和GitHub Actions)和GitHub代码库集成。它使您能够在Pull Request上执行自动化任务、生成错误报告、提供文档和测试用例等。

Peril的模块系统是其自定义规则和自定义机器人的核心。这些模块可以以单独的npm包的形式共享,并根据需要安装和使用。下面是一些常用的Peril模块。

danger

danger是一个在您的GitHub Pull Request上运行JavaScript的bot,它可以检查代码、文档、测试和其他资产的变化。您可以使用danger来自定义规则,以便在提交之前能够确定您的更改是否符合代码质量标准。使用danger,您可以在pull request中自动构建文档和发布npm软件包等。

## 如何安装和使用danger

要使用danger,请首先确保安装了Node.js和npm。然后可以在您的项目目录中安装danger:

```sh
npm install danger --save-dev
// dangerfile.js

import {danger, fail, warn} from 'danger';

// 检查PR标题
if (!danger.github.pr.title.includes('[WIP]')) {
  fail('标题必须以"[WIP]"开头');
}

// 检查拉取请求标签
if (danger.github.pr.labels.length === 0) {
  warn('请分配至少一个标签');
}

使用GitHub Actions集成danger,添加以下步骤:

# .github/workflows/danger.yml

name: danger
on:
  pull_request:
    types: [opened, edited]
jobs:
  danger:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Use Node.js
        uses: actions/setup-node@v1.4.3
        with:
          node-version: '10.x'
      - name: Install dependencies
        run: npm install
      - name: Danger
        uses: grahamedgecombe/action-danger-js@v1.1.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
danger-plugin-github

danger-plugin-github是一个danger插件,允许您访问GitHub的API并创建评论和问题。

npm install danger-plugin-github --save-dev
// dangerfile.js

import { danger, message } from "danger";
import { issues } from "danger-plugin-github";

// 获得较早封闭的 PR 并提醒开发人员
const longClosedPRs = await issues
  .createdBy("haya14busa")
  .closed()
  .notUpdatedSinceDays(30);
if (longClosedPRs.length !== 0) {
  message(
    `下列PR很久以前关闭了, 请确认是否可以关闭:${longClosedPRs.join(", ")}`
  );
}
peril-plugin-yarn

peril-plugin-yarn 是一个peril插件,它将在您的PR中检查或安装项目的Yarn依赖项。当有人向您的代码库添加一个依赖项时,这很有用,并需要保持一致性。

npm install peril peril-plugin-yarn --save-dev
// perilfile.ts

import { schedulePeril } from 'peril';
import yarn from 'peril-plugin-yarn';

schedulePeril(yarn({ logLevel: 'info' }));
peril-typed

peril-typed是有助于创建完全类型化Peril规则的库。借助peril-typed,添加类型注释,可以为规则添加安全的修改,自动感知和指南。

  npm install peril peril-typed --save-dev
// perilfile.ts

import { rules } from 'peril-typed';

rules.github.pull_request.draft(({ danger }) => {
  // do something
});

rules.github.pull_request.opened.ts(({ danger, utils }) => {
  const pr = danger.github.pr;
  const status = await utils.buildStatusUpdate(pr.head.sha, {
    title: '4 tests failing',
    failTitle: '4 tests failing',
    message: 'Fix or merge commit to proceed.',
    detailsURL: 'https://example.com',
  });
  await utils.expectLater(status).toBeSuccessOrFail();
});

以上是Peril的一些基本模块,使用这些模块可以让您的开发过程更加高效、规范化和安全。