Docker安装Gitea Act Runner
开启Actions
从1.21.0开始,默认情况下,Actions是启用的。如果您正在使用1.21.0之前的版本,您需要将以下内容添加到配置文件中以启用它:
[actions]
ENABLED=true
Act Runner安装
1.首先创建 config.yaml
配置文件
docker run --entrypoint="" --rm -it gitea/act_runner:latest act_runner generate-config > config.yaml
以下是翻译后的
# 示例配置文件,可以将其安全地复制为默认配置文件,无需进行任何修改。
# 您无需将此文件复制到您的实例中,
# 只需运行 `./act_runner generate-config > config.yaml` 来生成配置文件。
log:
# 日志级别,可以是 trace, debug, info, warn, error, fatal
level: info
runner:
# 存储注册结果的位置。
file: .runner
# 同时并发执行多少任务。
capacity: 1
# 执行作业时的额外环境变量。
envs:
A_TEST_ENV_NAME_1: a_test_env_value_1
A_TEST_ENV_NAME_2: a_test_env_value_2
# 从文件中执行作业时的额外环境变量。
# 如果为空或文件不存在则会被忽略。
env_file: .env
# 完成作业的超时时间。
# 请注意 Gitea 实例也有作业的超时设置(默认为3小时)。
# 因此如果 Gitea 实例的超时时间比这个设置短,作业可能会被 Gitea 实例停止。
timeout: 3h
# 是否跳过验证 Gitea 实例的 TLS 证书。
insecure: false
# 从 Gitea 实例获取作业的超时时间。
fetch_timeout: 5s
# 从 Gitea 实例获取作业的间隔时间。
fetch_interval: 2s
# 运行器的标签用于确定运行器可以运行哪些作业,以及如何运行它们。
# 例如:["macos-arm64:host", "ubuntu-latest:docker://node:16-bullseye", "ubuntu-22.04:docker://node:16-bullseye"]
# 如果在注册时为空,它将要求输入标签。
# 如果在执行 `daemon` 时为空,将使用 `.runner` 文件中的标签。
#labels: []
labels: ["ubuntu-latest:docker://node:16-bullseye", "ubuntu-22.04:docker://node:16-bullseye", "ubuntu-20.04:docker://node:16-bullseye", "ubuntu-18.04:docker://node:16-buster"]
cache:
# 启用缓存服务器以使用 actions/cache。
enabled: true
# 存储缓存数据的目录。
# 如果为空,缓存数据将存储在 $HOME/.cache/actcache 中。
dir: ""
# 缓存服务器的主机。
# 这不是监听的地址,而是作业容器从中连接的地址。
# 因此 0.0.0.0 是一个不好的选择,请留空以自动检测。
host: ""
# 缓存服务器的端口。
# 0 表示使用一个随机可用端口。
port: 0
# 外部缓存服务器的 URL。仅在启用时有效。
# 如果指定,act_runner 将使用此 URL 作为 ACTIONS_CACHE_URL,而不是自己启动服务器。
# URL 通常应以 "/" 结尾。
external_server: ""
container:
# 指定容器将连接到的网络。
# 可以是 host、bridge 或自定义网络的名称。
# 如果为空,act_runner 将自动创建一个网络。
network: ""
# 启动任务容器时是否使用特权模式(Docker in Docker 需要特权模式)。
privileged: false
# 容器启动时使用的其他选项(例如,--add-host=my.gitea.url:host-gateway)。
options:
# 作业工作目录的父目录。
# 如果为空,将使用 /workspace。
workdir_parent:
# 可以挂载到容器的卷(包括绑定挂载)。支持 Glob 语法,见 https://github.com/gobwas/glob
# 您可以指定多个卷。如果序列为空,则不会挂载任何卷。
# 例如,如果您只允许容器挂载 `data` 卷和 `/src` 中的所有 json 文件,您应该将配置更改为:
# valid_volumes:
# - data
# - /src/*.json
# 如果您想允许任何卷挂载,您可以使用以下配置:
# valid_volumes:
# - '**'
valid_volumes: []
# 使用指定的 docker 客户端主机进行覆盖。
# 如果为空,act_runner 将自动找到一个可用的 docker 主机。
# 如果为 "-",act_runner 将自动找到一个可用的 docker 主机,但不会将 docker 主机挂载到作业容器和服务容器中。
# 如果不为空或 "-",将使用指定的 docker 主机。如果无法使用,将返回错误。
docker_host: ""
# 即使镜像已经存在,也要强制拉取 docker 镜像。
force_pull: false
host:
# 作业工作目录的父目录。
# 如果为空,将使用 $HOME/.cache/act/。
workdir_parent:
2.创建一个docker-compose.yml
version: "3.8"
services:
runner:
image: gitea/act_runner:latest
container_name: act_runner
environment:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL: "你的 Gitea 地址"
GITEA_RUNNER_REGISTRATION_TOKEN: "Gitea Actions 密钥"
GITEA_RUNNER_NAME: "docker_runner"
volumes:
- ./config.yaml:/config.yaml
- ./dаta:/data
- ./act_cache:/root/.cache
- /var/run/docker.sock:/var/run/docker.sock
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
在官方基础上新增了缓存和时间
3.启动
docker-compose up -d
快速开始示例
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions ?
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "? The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "? This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "? The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "? The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "?️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "? This job's status is ${{ job.status }}."
注意事项
由于我是用的Arm64,但是不能下载python环境,如果需要python环境请选择x64系统