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

相关推荐
YMWM_3 小时前
不同局域网下登录ubuntu主机
linux·运维·ubuntu
zmjjdank1ng3 小时前
restart与reload的区别
linux·运维
Suchadar3 小时前
Docker常用命令
运维·docker·容器
你才是臭弟弟3 小时前
MinIo开发环境配置方案(Docker版本)
运维·docker·容器
yanlou2333 小时前
[C++/Linux HTTP项目] HTTP服务器基于muduo高性能服务器搭载【深入详解】
运维·服务器·http·muduo库·http高性能服务器
杨江3 小时前
frp macbook 的18789到 公网服务器上,访问报错:disconnected (1008): unauthorized:
运维
天空属于哈夫克34 小时前
企微第三方 RPA API:非官方接口与官方接口的差异解析及选型建议
运维·服务器
niceffking4 小时前
linux 信号内核模型
linux·运维·服务器
残梦53144 小时前
Qt6.9.1起一个图片服务器(支持前端跨域请求,不支持上传,可扩展)
运维·服务器·开发语言·c++·qt