Automatisch 集成 Gitea 触发器指南:用轮询触发 Issue、Pull Request、Star 与 Watch 事件

发布时间:2026/11/5 19:40:26

Automatisch 集成 Gitea 触发器指南:用轮询触发 Issue、Pull Request、Star 与 Watch 事件 Automatisch 集成 Gitea 触发器指南用轮询触发 Issue、Pull Request、Star 与 Watch 事件【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch本指南基于 Automatisch 开源项目GitHub 上备受欢迎的开源 Zapier 替代方案中 Gitea 应用的官方文档与真实源码系统讲解如何在 Automatisch 工作流中使用 Gitea 的四个内置触发器——New issues、New pull requests、New stargazers、New watchers。读完本文你将掌握每个触发器的功能、可配置参数、底层轮询实现原理含分页逻辑与幂等去重机制并能够独立搭建仓库动态 → 自动化动作的工作流。一、Gitea 触发器概览Automatisch 的 Gitea 应用通过**轮询polling**方式监听仓库动态共提供四个触发器定义于 triggers/index.js与官方文档 triggers.md 一一对应触发器key触发条件轮询间隔分钟New issuesnewIssues仓库中创建了新 Issue15New pull requestsnewPullRequests用户创建了新的 Pull Request15New stargazersnewStargazers有用户给仓库点 Star15New watchersnewWatchers有用户 Watch订阅了仓库15四个触发器全部声明了pollInterval: 15即每 15 分钟检查一次对应 API 端点。根据 define-trigger.js 的校验逻辑触发器必须带有pollInterval或声明为 webhook 类型才能通过定义校验Gitea 这四个触发器均属于轮询型polling trigger无需在 Gitea 侧配置 Webhook仅依赖 API 轮询即可工作。二、前置条件建立 Gitea 连接在使用任何触发器之前必须先完成 Gitea OAuth2 连接配置完整步骤见 connection.md登录你的 Gitea 实例进入Settings设置面板点击Applications应用按钮在Manage OAuth2 Applications区域创建一个新的 OAuth2 应用将 Automatisch 提供的OAuth Redirect URL复制到 Gitea 的Redirect URIs字段每个 URI 单独占一行将 Gitea 生成的Client ID填入 Automatisch将 Gitea 生成的Client Secret填入 Automatisch在 Automatisch 的Instance URL字段填写你的 Gitea 实例地址点击Submit提交完成连接创建。连接所需的字段定义在 auth/index.jsoAuthRedirectUrl只读字段固定值为{WEB_APP_URL}/app/gitea/connections/add可一键复制instanceUrl必填你的 Gitea 实例地址支持 Gitea.com 或自托管实例clientId/clientSecret必填来自 Gitea 的 OAuth2 应用。instanceUrl之所以关键是因为 set-base-url.js 会在每个请求发出前把baseURL动态设置为${instanceUrl}/api/v1所有触发器与动态数据的 API 调用都基于该地址。授权流程由 generate-auth-url.js 实现构造{instanceUrl}/login/oauth/authorize授权链接含client_id、redirect_uri、response_typecode与随机state并将原始 state 保存用于后续校验。三、New issues新 Issue 触发触发条件指定的 Gitea 仓库中创建了新 Issuenew-issues/index.js。该触发器提供三个配置参数Repo必选下拉框动态加载当前用户可见的仓库列表数据源来自动态数据listRepos见下文动态数据支持Which types of issues should this trigger on?必选Issue 状态过滤默认值为all可选closed、open、allLabels可选动态字段可为每个 Label 再次打开下拉框从指定仓库的标签列表中选择只有被添加了所选标签的 Issue 才会触发。底层会把这些标签以逗号连接后作为 API 的labels查询参数传递。触发运行时先读取$.step.parameters中的repo、issueType、labels并从$.auth.data.repoOwner取出仓库属主然后分页请求GET /repos/{repoOwner}/{repo}/issues查询参数包含state状态过滤与labels标签过滤。四、New pull requests新 Pull Request 触发触发条件用户创建了新的 Pull Requestnew-pull-requests/index.js。配置参数Repo必选同 New issues动态加载仓库列表Which types of pulls should this trigger on?可选PR 状态过滤默认all可选closed、open、allType of Sort?可选排序方式默认all可选oldest、recentupdate、leastupdate、mostcomment、leastcomment、priority。触发运行时请求GET /repos/{repoOwner}/{repo}/pulls查询参数为sort排序与state状态同样采用分页拉取全部结果。五、New stargazers 与 New watchersStar 与 Watch 事件触发New stargazersnew-stargazers/index.js当有用户给仓库点 Star 时触发仅需选择Repo必选运行时请求GET /repos/{repoOwner}/{repo}/stargazers。New watchersnew-watchers/index.js当有用户 Watch订阅仓库时触发仅需选择Repo必选运行时请求GET /repos/{repoOwner}/{repo}/subscribersGitea 将订阅者视为 watch 用户。两个触发器返回的每一条数据都会通过$.pushTriggerItem推入执行流raw 数据为 Gitea API 返回的用户对象internalId取id字段字符串用于事件去重。六、底层实现机制轮询、分页与去重四个触发器的run($)函数采用完全一致的轮询模式核心流程如下以 New issues 为例const params { page: 1, limit: 100, state: issueType, labels: formattedAllLabels }; let totalCount; let totalRequestedCount; do { const { data, headers } await $.http.get(/repos/${repoOwner}/${repo}/issues, { params }); params.page params.page 1; totalCount Number(headers[x-total-count]); totalRequestedCount params.page * params.limit; if (data?.length) { for (const issue of data) { $.pushTriggerItem({ raw: issue, meta: { internalId: issue.id.toString() } }); } } } while (totalRequestedCount totalCount);值得注意的实现细节分页拉全量单页上限limit: 100通过 Gitea 响应头x-total-count判断总条数循环递增page直至拉完全部数据避免遗漏历史事件幂等去重internalId取自 Gitea 数据的idAutomatisch 会依据该 ID 跳过已处理过的事件因此即使轮询间隔内产生多条数据也不会重复触发轮询频率pollInterval: 15表示每 15 分钟执行一次检查属于近实时触发无法做到秒级即时响应适合对时效性要求不高的场景。七、配套动态数据支持触发器中的仓库下拉框由动态数据listRepos提供list-repos/index.js分页请求GET /user/repos将当前连接用户可见的仓库以{ value: repo.name, name: repo.name }形式返回为下拉选项。New issues 的 Labels 动态字段依赖listLabelslist-labels/index.js请求GET /repos/{repoOwner}/{repo}/labels依据showLabelId参数决定下拉值使用标签 ID 还是名称。listRepos与listLabels均由应用定义文件 index.js 挂载到dynamicData集合触发器通过getDynamicData查询机制动态引用。八、实战搭建新 Issue → 自动通知工作流综合上述能力一个典型的使用场景是Gitea 仓库出现新 Issue 时自动发送通知。在 Automatisch 中新建 Flow添加Gitea → New issues触发器下拉选择要监听的仓库按需设置 Issue 状态如open与标签过滤连接后续动作步骤例如使用 SMTP 或 Slack 等应用发送告警触发器每 15 分钟检查一次新 Issue 会作为触发数据进入下游步骤可直接引用 Issue 的标题、编号、创建人等字段。同理将触发器替换为 New pull requests、New stargazers 或 New watchers即可分别实现 PR 提醒、Star 播报与 Watch 统计等自动化。九、适用范围与限制触发器依赖 OAuth2 连接且请求目标为instanceUrl对应的 Gitea 实例 API/api/v1自托管 Gitea 与 Gitea.com 均可使用触发方式为轮询而非 Webhook存在最长 15 分钟的延迟不适用于需要即时响应的场景若 Gitea 实例不可达或 Token 失效轮询将失败请通过连接的重新授权refresh-token 逻辑恢复。上述实现细节均可在仓库中验证触发器定义位于 packages/backend/src/apps/gitea/triggers/连接配置说明见 packages/docs/pages/apps/gitea/connection.md官方触发器清单见 packages/docs/pages/apps/gitea/triggers.md。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/31 0:52:31

策略模式实战指南:如何用优雅的代码替代if-else

1. 策略模式到底在解决什么问题 1.1 从一段真实崩溃的if-else开始 我做前端开发这些年,最怕看到的不是报错,而是一坨由if-else堆起来的业务逻辑。给大家看一个我去年接手的老项目代码,它的功能是根据不同会员等级计算订单折扣: …

2026/10/25 15:16:19

HTML5+CSS3+JS期末作业规范实践指南

简介:本资源是一套面向计算机专业本科生的前端综合实践项目源码,适用于《Web前端开发》《程序设计基础》等课程期末作业参考与自学提升。项目基于HTML、CSS、JavaScript构建,完整呈现网页结构、样式与交互的协同实现逻辑,辅以JSP动…

2026/10/22 21:19:48

十字绣小程序源码拆解:从目录结构到发布验证全指南

简介:一款模拟传统手工十字绣的微信小程序完整项目源码,适合微信小程序开发者、前端学习者以及对手工艺数字化有兴趣的人群。项目基于微信开发者工具直接打开运行,涵盖全局配置、页面路由、交互逻辑与样式布局等完整结构,可实现十…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑