Gitea Actions 完整指南:30 分钟搭好你的 CI 流水线
Gitea Actions 完整指南30 分钟搭好你的 CI 流水线【免费下载链接】giteaGit with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD项目地址: https://gitcode.com/GitHub_Trending/gi/gitea凌晨两点监控告警把手机震醒线上直接 502。白天你手动跑过构建和测试可发布时是一条条命令敲下来的其中一步漏了测试步骤压根没在这个环境里跑过全靠记忆执行。问题出在哪没有机器替你兜底构建、测试、发布这几步。Gitea Actions 干的就是这件事把这些手动步骤变成持续集成流水线每次提交自动触发自动化构建结果直接告诉你。快速认知Actions 到底是什么Gitea Actions 就是 Gitea 内置的 CI/CD 系统你在仓库里放一个 YAML 文件代码一推送它就开始自动构建、自动测试。整条链路不长核心概念只有三个先混个脸熟Workflow一条完整的自动化流程存在仓库.gitea/workflows/目录下的.yml文件里。JobWorkflow 里的独立执行单元每个 Job 单独分配一个执行环境。StepJob 里的最小动作要么跑一条命令要么引用一个现成的 Action。这三个词搞懂了任何流水线配置你都能看懂个大概。从零搭建你的第一条流水线第一步启用 Actions 并注册 Runner流水线要动得先有台机器接单。先去管理后台的站点管理 → 配置 → Actions 页勾选启用 Actions再进目标仓库的设置确认 Actions 功能对仓库开放。然后到仓库的 Actions 页面点新建 Runner复制生成的 token在一台 Linux 机器上安装。下面这两条命令下载并解压 Runner 二进制官方为各平台提供编译好的包wget https://dl.gitea.com/act_runner/0.2.10/act_runner-0.2.10-linux-amd64.tar.gz tar xzf act_runner-0.2.10-linux-amd64.tar.gz版本号替换成发布页最新的那版就行Runner 协议迭代快别用太老的版本。接着用刚才复制的 token 注册这台 Runner./act_runner register --no-interactive \ --config /etc/act_runner/config.toml \ --instance https://git.example.com \ --token 你复制的token \ --name ci-runner-01 \ --labels linux,amd64--labels决定了这台机器能接什么活后面 YAML 里的runs-on必须和它对得上对不上任务就永远排队。注册成功后启动常驻进程./act_runner daemon生产环境建议把它挂进 systemd否则终端一关Runner 也跟着没了。Runner 就位下一步就是给它写工作说明书。第二步编写你的第一个 Workflow 文件在仓库的.gitea/workflows/目录下新建ci.yml内容直接照抄name: ci # 只在 main 分支的 push 和 PR 时触发省得每个分支都跑 on: push: branches: [main] pull_request: branches: [main] jobs: check: # 标签必须和 Runner 注册的 labels 完全一致 runs-on: [linux, amd64] steps: - name: 拉取代码 uses: actions/checkoutv4 - name: 安装 Go # 版本钉死别让碰巧有什么决定构建结果 uses: actions/setup-gov5 with: go-version: 1.26 - name: 构建 run: go build ./... - name: 单元测试 # -count1 关掉测试缓存保证每次都是真跑 run: go test -count1 ./...配置放在仓库里还有个好处它跟代码一样走版本管理和 PR 评审谁改了流水线一目了然。文件写好了但每行到底在干嘛逐字段过一遍。逐字段解读on / jobs / steps / needs / runs-onon是触发开关定义什么时候跑比如 push、PR、定时任务。jobs是任务集合每个任务有独立环境天然可以并行。steps是任务内的动作清单从上到下顺序执行。runs-on挑选 Runner标签必须和注册时一字不差。needs声明依赖依赖的任务全过了它才开跑。⚠️runs-on的标签是最常见的隐形杀手错一个字母任务就永久排队而且日志里不会直接报错给你看。配置读懂了推上去之后还得会看结果。第三步查看执行结果、定位失败步骤代码推上去后仓库的 Actions 页面会多出一条运行记录绿勾通过红叉失败。点进运行详情每个 Job、每个 Step 的日志独立成块失败的 Step 会被标出来直接定位到报错那一行不用在一万多行日志里翻。提交页面也会挂一个状态标记review PR 的人不用切去 Actions 页面就知道测试过没过。进阶玩法让流水线更聪明用 needs 串起三步流水线一个 Job 从头干到尾构建十分钟你受得了吗把测试、构建、部署拆成三个 Job用needs串起来测试不过就根本不进构建环节省时间也省资源jobs: test: runs-on: [linux, amd64] steps: - uses: actions/checkoutv4 - run: go test ./... build: needs: [test] # 测试通过才允许构建 runs-on: [linux, amd64] steps: - run: go build -o dist/app ./... deploy: needs: [build] # 三步串联的最后一环 runs-on: [linux, amd64] steps: - run: echo deploying dist/app关键价值是短路一行代码改挂了测试流水线在测试阶段就停下不会带着坏包往下走。一次提交跑六个环境在我机器上是好的十有八九是环境差异。把版本和系统的组合写进 matrixGitea 会自动为每种组合起一个 Job 并行跑兼容性问题在合并前就全暴露出来jobs: test: runs-on: [linux, amd64] strategy: # 2 个 Go 版本 × 3 个系统共 6 组并行 matrix: go-version: [1.25, 1.26] os: [linux, windows, macos] steps: - uses: actions/checkoutv4 - uses: actions/setup-gov5 with: go-version: ${{ matrix.go-version }} - run: go test ./...前提是三种系统的 Runner 都得注册上缺哪个组合哪个就排队。踩坑与排错1. Workflow 不触发现象推完代码Actions 页面一条运行记录都没有。 原因文件不在.gitea/workflows/下目录名和大小写都要对或者仓库设置里没开 Actions。 解决先查路径再查开关九成是这俩之一。2. 依赖缓存失效现象每次构建都重新拉全量依赖一次十分钟。 原因缓存键没包含go.sum依赖变了缓存却不会跟着失效或者键每次都变永远命中不了。 解决键用hashFiles(**/go.sum)拼依赖一变自动换键。3. Runner 连接超时现象任务一直挂着Runner 日志安静得像没发生过什么。 原因Runner 连不上 Gitea——防火墙拦了或者--instance填了 Runner 访问不到的内网地址。 解决在 Runner 机器上curl一下实例地址通了再查网络策略。收尾一句话Runner 是干活的机器YAML 是工作说明书needs和 matrix 让流水线跑得又省又全。下一步就一件事——把文中的ci.yml改成你项目自己的构建命令推上去看一次绿勾。遇到什么坑评论区见有补充的欢迎拍砖。【免费下载链接】giteaGit with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD项目地址: https://gitcode.com/GitHub_Trending/gi/gitea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

千牛活动提报系统:独占IP+Profile固化,从创建到销毁零关联

千牛活动提报系统:独占IP+Profile固化,从创建到销毁零关联

千牛活动提报系统:独占IPProfile固化,从创建到销毁零关联 老店群人都有个体会:千牛的自动提报活动,是店群运营中最耗人力也最容易出错的环节。 平台大促活动报名是流量红利窗口,但提报流程极其繁琐。每个活动要填商品…

2026/8/24 1:13:17 阅读更多 →
千牛活动提报系统:夜间全自动客服,3分钟内回复率100%

千牛活动提报系统:夜间全自动客服,3分钟内回复率100%

千牛活动提报系统:夜间全自动客服,3分钟内回复率100% 做电商这么多年,最大的感悟就是:千牛的自动提报活动,是店群运营中最耗人力也最容易出错的环节。 平台大促活动报名是流量红利窗口,但提报流程极其繁琐…

2026/8/24 1:13:17 阅读更多 →
机器学习模型性能提升审计:如何识别与验证真实增益

机器学习模型性能提升审计:如何识别与验证真实增益

在模型迭代与算法优化的实践中,我们常常追求一个核心目标:让模型通过自我学习或外部反馈,在特定指标上获得“提升”。然而,一个至关重要却常被忽视的问题是:我们观测到的性能增益,究竟是模型能力真实的“自…

2026/8/24 1:12:17 阅读更多 →

最新新闻

6U VPX系统700W/1400W电源设计:从核心拓扑到高可靠集成

6U VPX系统700W/1400W电源设计:从核心拓扑到高可靠集成

1. 项目概述:从“板卡”到“系统”的电源进化在嵌入式系统,尤其是高密度、高性能计算领域,6U VPX这个名字你一定不陌生。它早已超越了早期VME总线时代那种“板卡”的概念,演变成了一个承载着处理器、FPGA、高速交换、数据采集等核…

2026/8/24 4:51:35 阅读更多 →
基于DeepSeek Harness构建工业级知识库智能体:从零到一实战指南

基于DeepSeek Harness构建工业级知识库智能体:从零到一实战指南

这次我们来看一个能让你从零开始构建工业级知识库智能体的实战项目——DeepSeek Harness。如果你正在寻找一个能整合大模型能力、支持插件扩展、并能通过Skills(技能)和Agent预设来快速搭建智能体应用的开源框架,这篇文章就是为你准备的。 D…

2026/8/24 4:51:35 阅读更多 →
Python Lambda函数:从匿名工具到函数式编程核心

Python Lambda函数:从匿名工具到函数式编程核心

1. 从“匿名”到“核心”:为什么Lambda函数是Python的“瑞士军刀”如果你写过一段时间的Python,尤其是在处理数据清洗、列表操作或者给sort、map这类函数传回调时,大概率见过下面这种写法:sorted_list sorted(data, keylambda x:…

2026/8/24 4:51:35 阅读更多 →
OpenHarmony 4G模组EC20驱动适配与网络连接实战指南

OpenHarmony 4G模组EC20驱动适配与网络连接实战指南

1. 项目概述:为什么要在OpenHarmony上折腾4G模组?最近在搞一个基于OpenHarmony的户外数据采集终端项目,核心需求是设备能在没有Wi-Fi和有线网络的地方,稳定地把采集到的传感器数据传回云端。这活儿听起来简单,不就是让…

2026/8/24 4:51:35 阅读更多 →
构建MCP评测沙盒:评估LLM Agent在复杂工具环境下的真实能力

构建MCP评测沙盒:评估LLM Agent在复杂工具环境下的真实能力

1. 项目缘起:为什么我们需要一个“复杂”的MCP评测沙盒?最近几个月,Model Context Protocol(MCP)这个词在AI开发圈里火得不行。从Cursor、VSCode的插件,到Dify、Workbuddy这类平台,再到Figma、U…

2026/8/24 4:51:35 阅读更多 →
FreeRTOS任务通知:STM32嵌入式实时通信的轻量级核心机制

FreeRTOS任务通知:STM32嵌入式实时通信的轻量级核心机制

1. 为什么任务通知是FreeRTOS在STM32上最值得优先掌握的通信机制? FreeRTOS任务通知(Task Notification)不是“又一种IPC方式”,而是专为嵌入式实时系统量身定制的、轻量级任务间同步与数据传递的底层原语。它不像队列&#xff08…

2026/8/24 4:50:34 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →