gitea介绍
Gitea 是一个开源的轻量级全功能 Git 代码托管平台,采用 Go 语言编写,遵循 MIT 许可证。提供类似 GitHub 或 GitLab 的一站式协作与 DevOps 体验。Gitea 在保留核心协作与 Actions 功能的同时,资源占用仅为其数十分之一,适合个人、敏捷小团队或私有硬件设备。
Gitea 具备类似的交互体验与 Actions 语法生态,但支持完全私网部署、数据自主可控,无需担心外部网络连通性或私密源码外泄。
ubuntu环境搭建准备
需要的一些关键组件程序
sudoaptupdatesudoaptinstall-ygitcurlwgetca-certificates sqlite3curl-fsSLhttps://deb.nodesource.com/setup_20.x|sudo-Ebash-sudoaptinstall-ynodejssudoaptinstall-ybuild-essential cmake pkg-configsudoaptinstall-ytargzipbzip2xz-utilszipunzipdpkg-devsudoaptinstall-ynginx certbot python3-certbot-nginxsudoaptinstall-ygit-lfsgitlfsinstall下载最新的gitea和 act runner
配置gitea自启动服务
sudoadduser--system--shell/bin/bash--group--disabled-password--home/home/gitgitsudomkdir-p/var/lib/gitea/{custom,data,log}sudochown-Rgit:git /var/lib/gitea/sudochmod-R750/var/lib/gitea/sudomkdir-p/etc/giteasudochown-Rroot:git /etc/giteasudochmod-R770/etc/giteasudocp-fgitea-1.27.3-linux-amd64 /usr/local/bin/giteasudochmod+x /usr/local/bin/gitea新增配置文件 /etc/systemd/system/gitea.service
[Unit]Description=Gitea(Git with a cup of tea)After=network.target[Service]RestartSec=2sType=simpleUser=gitGroup=gitWorkingDirectory=/var/lib/gitea/ExecStart=/usr/local/bin/gitea web--config/etc/gitea/app.iniRestart=alwaysEnvironment=USER=gitHOME=/home/gitGITEA_WORK_DIR=/var/lib/gitea[Install]WantedBy=multi-user.target配置自启动服务
sudosystemctl daemon-reloadsudosystemctlenable--nowgitea#确认服务是否启动成功sudosystemctl status giteasudosystemctl restart gitea#重启服务打开http://<你的Ubuntu服务器IP>:3000,进行初始化配置。
配置Action功能开关,打开配置文件/etc/gitea/app.ini后面新增
[actions]ENABLED=true配置act_runner自启动服务
sudocp-fgitea-runner-5.2.2-linux-amd64 /usr/local/bin/act_runnersudochmod+x /usr/local/bin/act_runner# 创建专属运行用户与工作目录sudouseradd-r-m-d/var/lib/act_runner-s/bin/bash act_runnersudomkdir-p/etc/act_runner获取注册token
- 登陆Gitea Web端,获取管理后台的Action->Runners的右上角的Ceate new Runner中的弹出的Registration Token
使用如下的配置命令注册runner的命令:
# 生成默认配置act_runner generate-config|sudotee/etc/act_runner/config.yaml>/dev/null#act_runner config generate | sudo tee /etc/act_runner/config.yaml > /dev/null#先修改为host:host的标签,sudo vim /etc/act_runner/config.yaml# ... 其他默认配置保持不变 ...labels: -"host:host"sudochown-Ract_runner:act_runner /var/lib/act_runner /etc/act_runnersudochmod755/var/lib/act_runnercd/var/lib/act_runnersudo-uact_runner act_runner register\--config/etc/act_runner/config.yaml\--instancehttp://本机ip:3000\--token"前面粘贴的Token信息"\--namelocal-builder\--labelslocal-builder\--no-interactivesudochown-Ract_runner:act_runner /var/lib/act_runner托管act_runner为系统服务
#创建 /etc/systemd/system/act_runner.service[Unit]Description=Gitea Act RunnerAfter=network.target gitea.service[Service]Type=simpleUser=act_runnerGroup=act_runnerWorkingDirectory=/var/lib/act_runnerExecStart=/usr/local/bin/act_runner daemon--config/etc/act_runner/config.yamlRestart=alwaysRestartSec=5[Install]WantedBy=multi-user.target配置系统服务自启动
sudosystemctl daemon-reloadsudosystemctlenable--nowact_runnersudosystemctl status act_runnersudosystemctl restart act_runner此时刷新 Gitea 管理界面的 Runners 页面,会出现对应的Idle的状态信息如下
新增一个本地仓库代码
在管理web界面上新增New Repository仓库,比如我新增如下文件:
新增一个本地C文件和Makefile如下:
#include <stdio.h>intmain(){printf("Hello from Gitea CI/CD Automated Build!\n");printf("ok!\r\n");return0;}#Makefile 文件CC ?=gcc CFLAGS ?=-Wall-O2all: hello_app hello_app: main.c$(CC)$(CFLAGS)-ohello_app main.c clean:rm-fhello_appCI/CD打包配置文件build.yaml 如下所示:
name:Manual Build Pipelineon:push:# 补充 push 事件,推送即可自动跑一次完成初始化branches:[main,master]workflow_dispatch:inputs:build_env:description:'编译模式'required:truedefault:'Release'type:choiceoptions:-Release-Debugjobs:build_and_package:runs-on:hoststeps:-name:检出源码uses:actions/checkout@v4-name:编译并生成自定义日志run:|mkdir -p output/bin logs LOG_FILE="logs/build_info.log"# 写入自定义打包元数据{echo "==================== BUILD LOG ===================="echo "Build Timestamp:$(date '+%Y-%m-%d %H:%M:%S')"echo "Operator:${{github.actor}}"echo "Target Commit:${{github.sha}}"echo "Build Profile:${{inputs.build_env}}"echo "Compiler Info:$(gcc--version|head-n 1)" echo "==================================================="}|tee "$LOG_FILE"# 编译逻辑make clean if["${{inputs.build_env}}" = "Debug"]; then make CFLAGS="-Wall-g-O0" 2>&1|tee-a "$LOG_FILE" else make CFLAGS="-Wall-O2" 2>&1|tee-a "$LOG_FILE" fi# 收集程序与日志并打包cp hello_app output/bin/ cp "$LOG_FILE" output/ tar-czvf "app_package_${{inputs.build_env}}.tar.gz"-C output . mv "app_package_${{inputs.build_env}}.tar.gz" output/-name:上传构建产物uses:actions/upload-artifact@v4with:name:release-packagepath:output/*.tar.gz在web端,可以在Action那一栏中看到Run Workflow配置项如下:
可以选择手动Debug或者Release编译模式,并下载编译成果物包
参考
- Gitea docs