Skip to content

Gitea

一款轻量的git仓库管理工具, 有它我就不会使用gitlab了,gitlab 太重了.

官方文档docs.gitea.com/zh-cn/

安装

下载镜像 docker pull gitea/gitea:latest

基本配置如下

yaml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: docker.io/gitea/gitea:1.23.1
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "8080:3000"
      - "222:22"

关闭gitea的注册功能

为了防止不是本公司的人注册自己搭建的gitea私服,我们可以关闭gitea注册功能,改为使用管理员账号分配账号的形式。

gitea似乎并没有gitlab那样的开启注册完毕 需要审核的功能

yaml
[service]
DISABLE_REGISTRATION = true
ENABLE_CAPTCHA = true

配置文件中DISABLE_REGISTRATION 字段就是禁用注册的功能,改为true 即可。 另外一个ENABLE_CAPTCHA 其实是开启注册的时候展示验证码的功能,打开后,注册的时候就需要输入一个验证码。

扩展:安装Gitea Actions工作流(CI)

  • 文档地址

  • 配置文件中添加以下内容来启用(gitea/conf/app.ini)

yaml
[actions]
ENABLED=true

配置 Runner

下载地址:https://dl.gitea.com/act_runner/

我这里下载的 act_runner-0.2.11-linux-amd64

创建配置文件 config.yaml

yaml
# Example configuration file, it's safe to copy this as the default config file without any modification.

# You don't have to copy this file to your instance,
# just run `./act_runner generate-config > config.yaml` to generate a config file.

log:
  # The level of logging, can be trace, debug, info, warn, error, fatal
  level: info

runner:
  # Where to store the registration result.
  file: .runner
  # Execute how many tasks concurrently at the same time.
  capacity: 1
  # Extra environment variables to run jobs.
  envs:
    A_TEST_ENV_NAME_1: a_test_env_value_1
    A_TEST_ENV_NAME_2: a_test_env_value_2
  # Extra environment variables to run jobs from a file.
  # It will be ignored if it's empty or the file doesn't exist.
  env_file: .env
  # The timeout for a job to be finished.
  # Please note that the Gitea instance also has a timeout (3h by default) for the job.
  # So the job could be stopped by the Gitea instance if it's timeout is shorter than this.
  timeout: 3h
  # Whether skip verifying the TLS certificate of the Gitea instance.
  insecure: false
  # The timeout for fetching the job from the Gitea instance.
  fetch_timeout: 5s
  # The interval for fetching the job from the Gitea instance.
  fetch_interval: 2s
  # The labels of a runner are used to determine which jobs the runner can run, and how to run them.
  # Like: ["macos-arm64:host", "ubuntu-latest:docker://node:16-bullseye", "ubuntu-22.04:docker://node:16-bullseye"]
  # If it's empty when registering, it will ask for inputting labels.
  # If it's empty when execute `deamon`, will use labels in `.runner` file.
  labels: []

cache:
  # Enable cache server to use actions/cache.
  enabled: true
  # The directory to store the cache data.
  # If it's empty, the cache data will be stored in $HOME/.cache/actcache.
  dir: ""
  # The host of the cache server.
  # It's not for the address to listen, but the address to connect from job containers.
  # So 0.0.0.0 is a bad choice, leave it empty to detect automatically.
  host: ""
  # The port of the cache server.
  # 0 means to use a random available port.
  port: 0
  # The external cache server URL. Valid only when enable is true.
  # If it's specified, act_runner will use this URL as the ACTIONS_CACHE_URL rather than start a server by itself.
  # The URL should generally end with "/".
  external_server: ""

container:
  # Specifies the network to which the container will connect.
  # Could be host, bridge or the name of a custom network.
  # If it's empty, act_runner will create a network automatically.
  network: ""
  # Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker).
  privileged: false
  # And other options to be used when the container is started (eg, --add-host=my.gitea.url:host-gateway).
  options:
  # The parent directory of a job's working directory.
  # If it's empty, /workspace will be used.
  workdir_parent:
  # Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob
  # You can specify multiple volumes. If the sequence is empty, no volumes can be mounted.
  # For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to:
  # valid_volumes:
  #   - data
  #   - /src/*.json
  # If you want to allow any volume, please use the following configuration:
  # valid_volumes:
  #   - '**'
  valid_volumes: []
  # overrides the docker client host with the specified one.
  # If it's empty, act_runner will find an available docker host automatically.
  # If it's "-", act_runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers.
  # If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work.
  docker_host: ""
  # Pull docker image(s) even if already present
  force_pull: false

host:
  # The parent directory of a job's working directory.
  # If it's empty, $HOME/.cache/act/ will be used.
  workdir_parent:

注册到 Gitea 实例上

  • instance 是你的 Gitea 实例的地址,比如 http://192.168.8.8:3000https://gitea.com(注意这里有个坑,地址最好和配置文件里的ROOT_URL 值的一致)

  • token 是用于识别和认证的,形如 Q72DusRlgHm47lX5nh789PCMrS069jphpbomnsJi. 它是一次性的,不能用于注册多个 runner。 你可以在 your_gitea.com/admin/runners 页面获取 token。

shell
docker run \
    -v /gitea/config.yaml:/config.yaml \
    -v /gitea/data:/data \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /root/.cache:/root/.cache \
    -e CONFIG_FILE=/config.yaml \
    -e GITEA_INSTANCE_URL=http://192.168.8.8:3000/ \
    -e GITEA_RUNNER_REGISTRATION_TOKEN=Q72DusRlgHm47lX5nh789PCMrS069jphpbomnsJi \
    -e GITEA_RUNNER_NAME=gitea_runner \
    --name gitea-runner \
    -p 8088:8088\
    -d gitea/act_runner:latest

使用 Actions 执行任务

即使 Actions 功能在实例上已经启用,代码仓库仍然是默认禁用 Actions 的。 你可以在仓库的设置页面启用它:仓库》设置 > Actions

开启Actions

个人收集整理, MIT License