Gitea Actions 的概念及基础使用

1.Runner概念

1.和其他CI/CD解决方案一样,Gitea不会自己运行Job,而是将Job委托给Runner。 Gitea Actions的Runner被称为act runner,它是一个独立的程序,也是用Go语言编写的。 它是基于nektos/act的一个分支 。

2.Gitea Actions需要act runner 来运行Job。 为了避免消耗过多资源并影响Gitea实例,建议您在与Gitea实例分开的机器上启动Runner。

3.官方文档: https://docs.gitea.cn/usage/actions/quickstart

2.快速入门

从1.21.0开始,默认情况下,Actions是启用的。如果您正在使用1.21.0之前的版本,您需要将以下内容添加到配置文件中以启用它:

sh 复制代码
[actions]
ENABLED=true

3.下载Runner

3.1.地址:https://dl.gitea.com/act_runner/0.2.13/

3.2.根据系统类型选择,文中使用: act_runner-0.2.13-linux-amd64

4.注册Runner

4.1在运行Runner之前,您需要使用以下命令将其注册到Gitea实例中:

bash 复制代码
./act_runner register --no-interactive --instance <instance> --token <token>

需要两个必需的参数:instance 和 token。

参数1 : instance是您的Gitea实例的地址,如http://192.168.8.8:3000或https://gitea.com。 Runner和Job容器(由Runner启动以执行Job)将连接到此地址。 这意味着它可能与用于Web访问的ROOT_URL不同。 使用回环地址(例如 127.0.0.1 或 localhost)是一个不好的选择。 如果不确定使用哪个地址,通常选择局域网地址即可。

参数2 : token用于身份验证和标识,例如P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23。 它只能使用一次,并且不能用于注册多个Runner。 您可以从以下位置获取不同级别的token,从而创建出相应级别的runner

  • 实例级别:管理员设置页面,例如 <your_gitea.com>/admin/actions/runners。

  • 组织级别:组织设置页面,例如 <your_gitea.com>/<org>/settings/actions/runners。

  • 存储库级别:存储库设置页面,例如 <your_gitea.com>/<owner>/<repo>/settings/actions/runners。

4.2 运行注册之后,检查gitea控制台设置中的Runner会新增一个

bash 复制代码
root@snp:/home/gitea_runner# ./act_runner register --no-interactive --instance http://192.168.1.40:8999/ --token Q1zxdj3b4WpHcC9nLBMKEVR2eZMfBenE3YSUpZjx
INFO Registering runner, arch=amd64, os=linux, version=v0.2.13.
INFO Runner name is empty, use hostname 'snp'.
DEBU Successfully pinged the Gitea instance server
INFO Runner registered successfully.

5.运行Runner

5.1 执行 ./act_runner daemon 或后台启动 nohup ./act_runner daemon & 注意文件是否有执行权限 chmod +x ./act_runner

bash 复制代码
root@snp:/home/gitea_runner# ./act_runner daemon
INFO[2026-01-30T09:20:18+08:00] Starting runner daemon
INFO[2026-01-30T09:20:18+08:00] runner: snp, with version: v0.2.13, with labels: [ubuntu-latest ubuntu-24.04 ubuntu-22.04], declare successfully

5.2 启动后控制台离线变为空闲,说明已经启动

6.使用Actions

即使对于启用了Gitea实例的Actions,存储库仍默认禁用Actions。

要启用它,请转到存储库的设置页面,例如your_gitea.com/<owner>/repo/settings,然后启用(启用 Actions)Enable Repository Actions。

7.编写工作流文件

7.1 GO项目的工作流示例

yml 复制代码
# 工作流名称
name: Go YL项目 CI/CD

# 指定当main分支提交时触发
on:
  push:
    branches: [main]

# 指定环境变量(项目名,项目部署位置等,根据自己需要来)
env:
  PROJECT_NAME: "elderly_care_serve"
  DEPLOY_PATH: "/home/ProjectSpace/elderly_care/server"

jobs:
  build-and-deploy:
    # 使用自己的runner的标签:ubuntu-latest
    runs-on: ubuntu-latest

    steps:
      # 1. 拉取代码
      - name: 检出代码
        uses: actions/checkout@v4

      # 2. 设置 Go 环境
      - name: 设置 Go
        uses: actions/setup-go@v4
        with:
          go-version: "1.21"

      # 3. 下载依赖
      - name: 下载依赖
        run: |
          go env -w GOPROXY=https://goproxy.cn,direct
          go mod download
          go mod tidy

      # 4. 编译
      - name: 编译项目
        run: |
          CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
          go build -o ${{ env.PROJECT_NAME }} main.go

      # 5. 部署文件
      - name: 复制到部署目录
        run: |
          # 创建目录(如果不存在)
          sudo mkdir -p ${{ env.DEPLOY_PATH }}
          # 复制文件
          sudo cp ${{ env.PROJECT_NAME }} ${{ env.DEPLOY_PATH }}/

      # 6. 构建 Docker 注意:build_docker.sh 是自己写的部署到docker的脚本,也可以直接写docker命令部署
      - name: 构建 Docker 镜像
        run: |
          cd ${{ env.DEPLOY_PATH }}
          sudo chmod +x build_docker.sh
          sudo ./build_docker.sh 

7.2将以上工作流文件上传为一个以.yaml扩展名的文件,放在存储库的.gitea/workflows/目录中

7.3推送项目到gitea

7.4检查推送激活状态,等待运行结束即自动部署成功

相关推荐
根目录下的猫2 分钟前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端
梦帮科技5 分钟前
【3.0】上线与运维:节点监控、水龙头、区块浏览器与安全清单
运维·安全·web安全·金融·区块链·密码学·安全架构
帷幕落秋33 分钟前
内存、虚拟内存与 OOM
linux·运维
mengge.cloud43 分钟前
Redis
运维·服务器·数据库·redis·缓存·云计算
Smoothcloud润云1 小时前
GPU服务器租用实例DNS与HTTPS下载排障实战
大数据·运维·服务器·人工智能·https·gpu算力
Apipi*1 小时前
30天速通Linux 第五章Linux 进程管理
linux·运维·服务器
杨云龙UP1 小时前
PostgreSQL 四种常见部署模式快速理解:单实例、流复制、repmgr、Patroni
linux·运维·数据库·postgresql·流复制·高可用ha
白帽攻防录1 小时前
SRC 挖洞:TanStack Start 服务器函数 XSS 深度复盘,CVE-2026-102989 怎么窃取用户会话
运维·服务器·网络安全·xss
资深电气设计1 小时前
ABB AFC/AF/AX系列接触器在数据中心液冷机组中的负载适配技术
运维·物联网·创业创新·业界资讯
.冰块.1 小时前
MySQL下篇 运维实战:备份恢复 + 主从复制 + MHA 高可用,含完整拓扑
运维·mysql·读写分离·高可用·主从复制·mha