golang轻量级自托管Git服务插件Gitea的使用

Golang轻量级自托管Git服务插件Gitea的使用

Gitea是一个用Golang编写的轻量级自托管Git服务,旨在提供最简单、快速且无痛的方式来设置自托管Git服务。

项目目标

该项目的目标是打造最简单、快速且无痛的自托管Git服务解决方案。由于Gitea是用Go编写的,它支持所有Go支持的平台和架构,包括Linux、macOS和Windows,以及x86、amd64、ARM和PowerPC架构。

安装与构建

从源代码构建

从源代码树的根目录运行以下命令:

# 基础构建命令
TAGS="bindata" make build

# 如果需要SQLite支持
TAGS="bindata sqlite sqlite_unlock_notify" make build

build目标分为两个子目标:

  • make backend - 需要Go Stable,所需版本在go.mod中定义
  • make frontend - 需要Node.js LTS或更高版本

使用Gitea

构建完成后,会在源代码树的根目录生成名为gitea的二进制文件。要运行它,请使用:

./gitea web

示例代码

以下是一个简单的Gitea API使用示例:

package main

import (
	"fmt"
	"log"
	"gitea.com/go-sdk/gitea"
)

func main() {
	// 创建Gitea客户端
	client := gitea.NewClient("http://localhost:3000", "")
	
	// 获取Gitea版本
	version, err := client.GetVersion()
	if err != nil {
		log.Fatal(err)
	}
	
	fmt.Printf("Gitea版本: %s\n", version)
	
	// 创建新仓库
	repo, err := client.CreateRepo(gitea.CreateRepoOption{
		Name:    "my-new-repo",
		Private: false,
	})
	if err != nil {
		log.Fatal(err)
	}
	
	fmt.Printf("创建仓库成功: %s\n", repo.FullName)
}

主要功能界面

以下是Gitea的主要界面截图:

登录/注册页面

Login Register

用户仪表盘

Home Issues Pull Requests

仓库管理

Repo Home Repo Commits Repo Branches

贡献与支持

如果您有任何问题或需要帮助,可以:

  1. 查阅官方文档
  2. 加入我们的Discord服务器
  3. 论坛发帖

许可证

该项目采用MIT许可证。完整许可证文本请参见LICENSE文件。


更多关于golang轻量级自托管Git服务插件Gitea的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang轻量级自托管Git服务插件Gitea的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Gitea:轻量级自托管Git服务的使用指南

Gitea是一个用Go编写的轻量级自托管Git服务,类似于GitHub或GitLab,但更加轻量且易于部署。以下是Gitea的详细介绍和使用方法。

Gitea特点

  • 开源免费(MIT许可证)
  • 跨平台支持(Windows、Linux、macOS)
  • 资源占用低
  • 安装简单
  • 支持多数据库(SQLite、MySQL、PostgreSQL等)
  • 提供Web界面和API

安装Gitea

1. 二进制安装(推荐)

# 下载最新版
wget -O gitea https://dl.gitea.io/gitea/1.21.0/gitea-1.21.0-linux-amd64
chmod +x gitea

# 运行
./gitea web

2. Docker安装

docker run -d --name=gitea -p 3000:3000 -p 22:22 -v /var/lib/gitea:/data gitea/gitea:latest

配置Gitea

首次运行后,访问 http://localhost:3000 进行初始配置:

  1. 选择数据库(SQLite最简单)
  2. 设置管理员账户
  3. 配置服务器和SSH设置
  4. 完成安装

使用Gitea API的Go示例

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

const (
	giteaURL   = "http://localhost:3000"
	apiToken   = "your_api_token_here"
	username   = "your_username"
	repoName   = "test-repo"
)

// 创建仓库
func createRepo() error {
	repoData := map[string]interface{}{
		"name":    repoName,
		"private": false,
		"auto_init": true,
	}

	jsonData, err := json.Marshal(repoData)
	if err != nil {
		return err
	}

	req, err := http.NewRequest(
		"POST", 
		fmt.Sprintf("%s/api/v1/user/repos", giteaURL),
		bytes.NewBuffer(jsonData),
	)
	if err != nil {
		return err
	}

	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Authorization", fmt.Sprintf("token %s", apiToken))

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return err
	}
	defer resp.Body.Close()

	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Printf("Response: %s\n", string(body))
	return nil
}

// 获取用户信息
func getUserInfo() error {
	req, err := http.NewRequest(
		"GET", 
		fmt.Sprintf("%s/api/v1/users/%s", giteaURL, username),
		nil,
	)
	if err != nil {
		return err
	}

	req.Header.Set("Authorization", fmt.Sprintf("token %s", apiToken))

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return err
	}
	defer resp.Body.Close()

	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Printf("User Info: %s\n", string(body))
	return nil
}

func main() {
	err := getUserInfo()
	if err != nil {
		fmt.Printf("Error getting user info: %v\n", err)
	}

	err = createRepo()
	if err != nil {
		fmt.Printf("Error creating repo: %v\n", err)
	}
}

Gitea常用操作

1. 通过Git客户端使用

# 克隆仓库
git clone http://localhost:3000/username/repo.git

# 或者使用SSH
git clone ssh://git@localhost:username/repo.git

2. 备份Gitea

# 使用Gitea内置备份功能
gitea dump -c /etc/gitea/app.ini

3. 升级Gitea

# 下载新版二进制文件替换旧版
# 然后重启服务

Gitea配置文件

Gitea的主要配置文件通常位于 /etc/gitea/app.inicustom/conf/app.ini。重要配置项包括:

[server]
APP_NAME = Gitea
DOMAIN = localhost
HTTP_PORT = 3000
ROOT_URL = http://localhost:3000/

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

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

总结

Gitea是一个非常适合个人或小团队使用的Git服务,它轻量、快速且功能齐全。通过Go语言编写,它在性能上有很好的表现,同时资源占用低。无论是通过Web界面、Git客户端还是API,Gitea都能提供良好的用户体验。

对于需要自托管Git服务但又不想维护复杂系统的用户,Gitea是一个非常理想的选择。

回到顶部