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>

需要两个必需的参数:instancetoken

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

参数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检查推送激活状态,等待运行结束即自动部署成功

相关推荐
开开心心就好3 分钟前
支持批量添加水印的实用工具推荐
人工智能·游戏·ci/cd·docker·音视频·语音识别·媒体
实心儿儿4 分钟前
Linux —— 文件系统_路径解析_软硬连接
linux·运维·服务器
云达闲人8 分钟前
搭建DevOps企业级仿真实验环境:005Proxmox Web 界面操作入门
运维·devops·proxmox ve·web界面·虚拟机创建
魏波.10 分钟前
Harness工程与传统CI/CD流水线的区别?
ci/cd·harness
运维老郭19 分钟前
Kubernetes Ingress Controller完全指南:7种选型对比+Istio集成+Gateway API迁移
运维·云原生·kubernetes
测试那点事儿23 分钟前
零基础接口自动化到 Jenkins 持续集成(导读)
ci/cd·自动化·jenkins
Elastic 中国社区官方博客24 分钟前
Kibana 中的查询活动:用于长时间运行搜索的实时控制塔
大数据·运维·elasticsearch·搜索引擎·全文检索·kibana
黄同学real33 分钟前
踩坑实录:离线内网服务器 Docker 部署 PaddleOCR-VL 1.5 完全指南
运维·服务器·docker
东北甜妹35 分钟前
K8s -Daemonset,kube-proxy,service,statefulset
linux·运维·服务器
DeepHacking38 分钟前
在电脑 B 上通过局域网 SSH 直接从电脑 A 拉取文件,用 rsync 断点续传
运维·ssh