
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/giteasudochmodx /usr/local/bin/gitea新增配置文件 /etc/systemd/system/gitea.service[Unit]DescriptionGitea(Git with a cup of tea)Afternetwork.target[Service]RestartSec2sTypesimpleUsergitGroupgitWorkingDirectory/var/lib/gitea/ExecStart/usr/local/bin/gitea web--config/etc/gitea/app.iniRestartalwaysEnvironmentUSERgitHOME/home/gitGITEA_WORK_DIR/var/lib/gitea[Install]WantedBymulti-user.target配置自启动服务sudosystemctl daemon-reloadsudosystemctlenable--nowgitea#确认服务是否启动成功sudosystemctl status giteasudosystemctl restart gitea#重启服务打开http://你的Ubuntu服务器IP:3000进行初始化配置。配置Action功能开关打开配置文件/etc/gitea/app.ini后面新增[actions]ENABLEDtrue配置act_runner自启动服务sudocp-fgitea-runner-5.2.2-linux-amd64 /usr/local/bin/act_runnersudochmodx /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:hostsudochown-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]DescriptionGitea Act RunnerAfternetwork.target gitea.service[Service]TypesimpleUseract_runnerGroupact_runnerWorkingDirectory/var/lib/act_runnerExecStart/usr/local/bin/act_runner daemon--config/etc/act_runner/config.yamlRestartalwaysRestartSec5[Install]WantedBymulti-user.target配置系统服务自启动sudosystemctl daemon-reloadsudosystemctlenable--nowact_runnersudosystemctl status act_runnersudosystemctl restart act_runner此时刷新 Gitea 管理界面的 Runners 页面,会出现对应的Idle的状态信息如下新增一个本地仓库代码在管理web界面上新增New Repository仓库比如我新增如下文件新增一个本地C文件和Makefile如下#include stdio.hintmain(){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:Releasetype:choiceoptions:-Release-Debugjobs:build_and_package:runs-on:hoststeps:-name:检出源码uses:actions/checkoutv4-name:编译并生成自定义日志run:|mkdir -p output/bin logs LOG_FILElogs/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 21|tee-a $LOG_FILE else make CFLAGS-Wall-O2 21|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-artifactv4with:name:release-packagepath:output/*.tar.gz在web端可以在Action那一栏中看到Run Workflow配置项如下可以选择手动Debug或者Release编译模式并下载编译成果物包参考Gitea docs