1. 首页 > IT综合教程 > 正文

430. Gitea轻量级代码仓库培训

一、Gitea概述

Gitea是一个轻量级的Git服务,使用Go语言编写,易于安装和运行,适合个人和小型团队使用。

1.1 Gitea核心特性

  • 轻量级:资源占用少,部署简单
  • 跨平台:支持Linux、Windows、macOS
  • 功能完整:Issue、Wiki、PR、Webhooks
  • 开源免费:MIT许可证

1.2 Gitea与GitLab对比

特性 Gitea GitLab
内存占用 约100MB 约4GB+
安装复杂度 简单 复杂
CI/CD 需集成 内置
适用场景 小团队/个人 企业级

二、Gitea安装部署

2.1 二进制安装

# 下载Gitea
wget https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-linux-amd64

# 重命名并设置权限
mv gitea-1.21.4-linux-amd64 /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea

# 创建用户
useradd -r -s /bin/false git

# 创建目录
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea
chmod -R 750 /var/lib/gitea

mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

# 创建systemd服务
cat > /etc/systemd/system/gitea.service << 'EOF'
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target

[Service]
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target
EOF

# 启动服务
systemctl daemon-reload
systemctl start gitea
systemctl enable gitea

# 查看状态
systemctl status gitea
# 输出示例
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled)
Active: active (running) since Mon 2024-01-15 10:00:00 CST
Main PID: 12345 (gitea)

2.2 Docker安装

# 创建目录
mkdir -p /var/lib/gitea/data /var/lib/gitea/config

# 启动Gitea容器
docker run -d \
  --name gitea \
  -p 10022:22 \
  -p 3000:3000 \
  -v /var/lib/gitea/data:/data \
  -v /var/lib/gitea/config:/etc/gitea \
  -e GITEA__server__ROOT_URL=http://gitea.fgedu.net.cn \
  -e GITEA__server__HTTP_PORT=3000 \
  --restart always \
  gitea/gitea:latest

# 查看日志
docker logs -f gitea

# 访问Web界面
# http://fgedudb:3000

2.3 Docker Compose安装

# docker-compose.yml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql
      - GITEA__database__HOST=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: mysql:8.0
    container_name: gitea-mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql

# 启动
docker-compose up -d

三、配置文件

3.1 主配置文件

# /etc/gitea/app.ini

[server]
APP_DATA_PATH = /var/lib/gitea/data
DOMAIN = gitea.fgedu.net.cn
HTTP_PORT = 3000
ROOT_URL = http://gitea.fgedu.net.cn
DISABLE_SSH = false
SSH_PORT = 22
START_SSH_SERVER = false
LFS_START_SERVER = true

[database]
DB_TYPE = sqlite3
PATH = /var/lib/gitea/data/gitea.db

# MySQL配置
# DB_TYPE = mysql
# HOST = 127.0.0.1:3306
# NAME = gitea
# USER = gitea
# PASSWD = password

[repository]
ROOT = /var/lib/gitea/data/gitea-repositories

[security]
INSTALL_LOCK = true
SECRET_KEY = your-secret-key
INTERNAL_TOKEN = your-internal-token

[service]
DISABLE_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = false
ENABLE_NOTIFY_MAIL = true

[mailer]
ENABLED = true
HOST = smtp.fgedu.net.cn:587
FROM = gitea@fgedu.net.cn
USER = gitea@fgedu.net.cn
PASSWD = password

[session]
PROVIDER = file
PROVIDER_CONFIG = data/sessions

[log]
MODE = file
LEVEL = Info
ROOT_PATH = /var/lib/gitea/log

3.2 LDAP配置

# Web UI配置LDAP
# 1. 登录管理员账户
# 2. 进入"站点管理" -> "认证源"
# 3. 添加"LDAP"

# LDAP配置示例
认证类型: LDAP (via BindDN)
认证名称: Company LDAP
主机: ldap.fgedu.net.cn
端口: 389
安全协议: StartTLS
绑定DN: CN=gitea,OU=Service,DC=example,DC=com
绑定密码: password
用户搜索基准: DC=example,DC=com
用户过滤规则: (sAMAccountName=%s)
属性fgedu: sAMAccountName
属性姓名: displayName
属性邮箱: mail

四、用户与组织管理

4.1 用户管理

# Web UI创建用户
# 1. 登录管理员账户
# 2. 进入"站点管理" -> "用户账户"
# 3. 点击"创建新账户"

# 使用命令行创建用户
gitea admin user create \
  --username zhangsan \
  --email zhangsan@fgedu.net.cn \
  --password password123 \
  --must-change-password=false

# 创建管理员
gitea admin user create \
  --username admin \
  --email admin@fgedu.net.cn \
  --password admin123 \
  --admin \
  --must-change-password=false

# 修改密码
gitea admin user change-password zhangsan newpassword

# 删除用户
gitea admin user delete zhangsan

# 列出用户
gitea admin user list

4.2 组织管理

# 创建组织
# Web UI: 点击"+" -> "新建组织"

# 组织团队权限
- 所有者: 完全控制
- 管理员: 管理仓库和成员
- 成员: 访问仓库

# 添加成员到组织
# 1. 进入组织设置
# 2. 点击"团队"
# 3. 选择团队添加成员

# 组织仓库
# 组织下的仓库可以被团队成员访问

五、仓库管理

5.1 创建仓库

# Web UI创建仓库
# 1. 点击"+" -> "新建迁移仓库"或"新建仓库"
# 2. 填写仓库名称和描述
# 3. 选择可见性(公开/私有)

# 使用API创建仓库
curl -X POST \
  -H "Authorization: token your_token" \
  -H "Content-Type: application/json" \
  -d '{"name":"my-repo","private":true}' \
  http://gitea.fgedu.net.cn/api/v1/user/repos

# 克隆仓库
git clone http://gitea.fgedu.net.cn/username/repo.git
git clone git@gitea.fgedu.net.cn:username/repo.git

# 推送代码
git remote add origin http://gitea.fgedu.net.cn/username/repo.git
git push -u origin main

5.2 仓库设置

# 仓库设置选项
- 基本信息: 名称、描述、网站
- 协作者: 添加协作者和权限
- 分支保护: 设置保护分支
- Webhooks: 配置Webhook通知
- Git钩子: 配置服务端钩子
- 部署密钥: 添加只读访问密钥

# 分支保护设置
# 1. 进入仓库设置
# 2. 点击"分支"
# 3. 添加保护规则
# - 启用推送限制
# - 启用合并限制
# - 启用状态检查

# Webhook配置
# 1. 进入仓库设置
# 2. 点击"Webhooks"
# 3. 添加Webhook
# - 目标URL
# - 触发事件
# - 密钥

六、CI/CD集成

6.1 Gitea Actions

# 启用Gitea Actions
# app.ini
[actions]
ENABLED = true
DEFAULT_ACTIONS_URL = https://github.com

# 创建Runner
# 下载act_runner
wget https://dl.gitea.com/act_runner/0.2.6/act_runner-0.2.6-linux-amd64
chmod +x act_runner-0.2.6-linux-amd64
mv act_runner-0.2.6-linux-amd64 /usr/local/bin/act_runner

# 注册Runner
act_runner register --instance http://gitea.fgedu.net.cn --token your_token

# 启动Runner
act_runner daemon

# 创建Workflow
# .gitea/workflows/build.yml
name: Build and Test

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    
    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: '1.21'
    
    - name: Build
      run: go build -v ./...
    
    - name: Test
      run: go test -v ./...

6.2 外部CI集成

# Jenkins集成
# 1. 安装Gitea插件
# 2. 配置Gitea服务器
# 3. 创建Webhook触发构建

# Webhook URL
# http://jenkins.fgedu.net.cn/gitea-webhook/

# Drone CI集成
# docker-compose.yml
version: "3"
services:
  drone:
    image: drone/drone:2
    environment:
      - DRONE_GITEA_SERVER=http://gitea.fgedu.net.cn
      - DRONE_GITEA_CLIENT_ID=your_client_id
      - DRONE_GITEA_CLIENT_SECRET=your_client_secret
      - DRONE_SERVER_HOST=drone.fgedu.net.cn
      - DRONE_SERVER_PROTO=http
    ports:
      - "80:80"

# Woodpecker CI集成
# 类似Drone配置

七、运维命令

7.1 常用管理命令

# 启动服务
systemctl start gitea

# 停止服务
systemctl stop gitea

# 重启服务
systemctl restart gitea

# 查看状态
systemctl status gitea

# 查看日志
journalctl -u gitea -f

# 备份数据
gitea dump -c /etc/gitea/app.ini

# 恢复数据
# 解压备份文件到相应目录

# 重新生成密钥
gitea generate secret INTERNAL_TOKEN
gitea generate secret SECRET_KEY
gitea generate secret LFS_JWT_SECRET

# 管理用户
gitea admin user list
gitea admin user create --username user --email user@fgedu.net.cn --password pass
gitea admin user delete user

# 管理仓库
gitea admin repo list
gitea admin repo delete user repo

八、最佳实践

配置项 建议值 说明
数据库 MySQL/PostgreSQL 生产环境推荐
备份 定期备份 数据安全
HTTPS 启用 安全传输
注册限制 禁用或审核 安全控制
注意事项:

  • 定期备份仓库和数据库
  • 配置HTTPS加密传输
  • 限制用户注册或启用审核
  • 监控服务器资源使用

九、总结

Gitea是轻量级的Git服务解决方案。通过本培训文档,您应该掌握了:

更多视频教程www.fgedu.net.cn

  • Gitea安装部署方法
  • 配置文件详解
  • 用户和组织管理
  • 仓库管理和设置
  • CI/CD集成配置
  • 运维管理和最佳实践
IT运维培训文档系列 | 第430篇 | Gitea轻量级代码仓库培训

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息