📅  最后修改于: 2023-12-03 15:27:07.484000             🧑  作者: Mango
Peril是一个基于GitHub的规则和机器人系统,可与CI工具(如Travis、CircleCI和GitHub Actions)和GitHub代码库集成。它使您能够在Pull Request上执行自动化任务、生成错误报告、提供文档和测试用例等。
Peril的模块系统是其自定义规则和自定义机器人的核心。这些模块可以以单独的npm包的形式共享,并根据需要安装和使用。下面是一些常用的Peril模块。
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插件,允许您访问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插件,它将在您的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规则的库。借助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的一些基本模块,使用这些模块可以让您的开发过程更加高效、规范化和安全。