Autolabeler 开源项目教程
1. 项目的目录结构及介绍
Autolabeler 项目的目录结构如下:
autolabeler/
├── .github/
│ └── workflows/
│ └── autolabeler.yml
├── .gitignore
├── LICENSE
├── README.md
├── action.yml
├── index.js
├── package.json
└── yarn.lock
目录结构介绍
.github/workflows/autolabeler.yml
: GitHub Actions 的工作流配置文件,用于定义自动标签的触发条件和操作。.gitignore
: 指定 Git 忽略的文件和目录。LICENSE
: 项目的开源许可证。README.md
: 项目的主文档,包含项目的介绍、使用方法等。action.yml
: GitHub Actions 的定义文件,描述了 Action 的输入、输出和运行环境。index.js
: 项目的主入口文件,包含了自动标签的逻辑。package.json
: 项目的依赖管理文件,包含了项目的依赖和脚本。yarn.lock
: 锁定依赖版本的文件。
2. 项目的启动文件介绍
项目的启动文件是 index.js
,它包含了自动标签的主要逻辑。以下是 index.js
的简要介绍:
const core = require('@actions/core');
const github = require('@actions/github');
async function run() {
try {
const token = core.getInput('repo-token');
const client = github.getOctokit(token);
// 获取仓库信息和事件数据
const { owner, repo } = github.context.repo;
const eventName = github.context.eventName;
// 根据事件类型执行相应的标签逻辑
if (eventName === 'pull_request') {
const pr = github.context.payload.pull_request;
// 添加标签的逻辑
await client.issues.addLabels({
owner,
repo,
issue_number: pr.number,
labels: ['autolabeled']
});
}
} catch (error) {
core.setFailed(error.message);
}
}
run();
启动文件介绍
index.js
使用@actions/core
和@actions/github
模块来处理 GitHub Actions 的输入和输出。- 通过
core.getInput('repo-token')
获取仓库的访问令牌。 - 使用
github.getOctokit(token)
创建一个 GitHub API 客户端。 - 根据事件类型(如
pull_request
)执行相应的标签逻辑。 - 通过
client.issues.addLabels
方法为 Pull Request 添加标签。
3. 项目的配置文件介绍
项目的配置文件主要是 .github/workflows/autolabeler.yml
,它定义了 GitHub Actions 的工作流。以下是 autolabeler.yml
的简要介绍:
name: Autolabeler
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
autolabel:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Autolabeler
uses: mithro/autolabeler@main
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
配置文件介绍
name: Autolabeler
: 定义工作流的名称。on: pull_request
: 指定触发工作流的事件类型,这里是 Pull Request 的打开、同步和重新打开事件。jobs: autolabel: runs-on: ubuntu-latest
: 定义工作流的运行环境,这里是 Ubuntu 最新版本。steps
: 定义工作流的步骤。Checkout code
: 使用actions/checkout@v2
动作来检出代码。Autolabeler
: 使用mithro/autolabeler@main
动作来执行自动标签逻辑,并传递repo-token
参数。
通过以上配置,当 Pull Request 被打开、同步或重新打开时,工作流会自动执行标签逻辑。