7.1 自动化构建(代码仓库Gitea)

系列 - 自动化构建与持续集成

Gitea 是一个轻量级的开源 Git 服务平台,用于托管代码和进行版本控制。它与 Github、Gitlab、Gitee 等商业化平台功能类似,但更加轻量和易于部署。

为什么选择 Gitea
Gitea 相比其他 Git 服务平台的优势在于它非常轻量,启动速度快,占用资源少。对于小型团队或个人开发者来说,Gitea 是一个理想的选择,特别是在资源有限的环境中。

在开始实验前,我们需要清理环境,确保没有旧的容器和镜像影响我们的实验结果。请执行以下步骤:

  1. 删除所有运行中的容器
  2. 删除所有已下载的镜像
  3. 清理未使用的数据卷和网络

bash

# 删除所有容器
docker rm -f $(docker ps -aq)

# 删除所有镜像
docker rmi -f $(docker images -q)

# 清理系统
docker system prune --volumes -f
注意
执行上述命令将删除所有的 Docker 容器、镜像和卷。如果你有重要的数据,请确保已经做好备份。

首先,我们需要创建一个专门的用户来运行 Gitea 服务,并设置相应的目录权限。这是出于安全考虑,避免使用 root 用户运行服务。

bash

# 创建git用户
useradd git

# 创建Gitea所需的目录结构
mkdir -p /var/lib/gitea/{custom,data,log}  

# 设置目录所有权为git用户
chown -R git:git /var/lib/gitea/  

# 设置适当的目录权限
chmod -R 750 /var/lib/gitea/  

# 创建配置目录
mkdir /etc/gitea  
chown git:git /etc/gitea  
chmod 770 /etc/gitea
目录说明
  • /var/lib/gitea/custom:用于存放自定义文件
  • /var/lib/gitea/data:用于存放仓库数据
  • /var/lib/gitea/log:用于存放日志文件
  • /etc/gitea:用于存放配置文件

bash

wget https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-linux-amd64 -O /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea

为了让 Gitea 作为系统服务运行,我们需要创建一个 systemd 服务文件:

bash

# 创建服务文件
vim /etc/systemd/system/gitea.service

文件内容如下(这个配置可以在 Gitea 官网找到):

ini

[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/

ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target
配置说明
  • User=gitGroup=git:指定运行服务的用户和组
  • WorkingDirectory=/var/lib/gitea/:指定工作目录
  • ExecStart:指定启动命令
  • Restart=always:服务崩溃时自动重启
  • Environment:设置环境变量

bash

# 重新加载配置文件
systemctl daemon-reload
# 设置开机启动
systemctl enable gitea
# 启动
systemctl start gitea

服务启动后,我们需要通过 Web 界面完成 Gitea 的初始化配置:

  1. 在浏览器中打开 http://服务器IP:3000,进入 Gitea 的初始化页面

  2. 在【数据库设置】部分,选择 SQLite 作为数据库(简单易用,适合测试环境)

生产环境提示
在生产环境中,建议使用 MySQL 或 PostgreSQL 等更强大的数据库,以获得更好的性能和可靠性。

数据库设置

  1. 在【可选设置】部分,填写管理员账号信息,包括用户名、密码和邮箱

可选设置

  1. 完成所有设置后,点击页面底部的【立即安装】按钮
初始化提示
初始化过程可能需要几分钟时间,请耐心等待。初始化完成后,你将被自动重定向到 Gitea 的登录页面。

在完成 Gitea 的部署后,我们来创建一个简单的 Flask 应用并将其推送到 Gitea 仓库中,体验 Git 版本控制的基本流程。

首先,我们需要安装必要的依赖并创建项目目录:

bash

# 安装 Python 和 pip
yum install -y python3 python3-pip

# 安装 Flask 框架
pip3 install flask

# 创建项目目录
mkdir /root/myproject
cd /root/myproject
Flask 简介
Flask 是一个轻量级的 Python Web 框架,非常适合创建简单的 Web 应用。它提供了基本的路由功能和模板渲染,而且易于学习和使用。

bash

vim app.py

文件内容:

python

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return '<p>我是一个网页!</p><img src="http://helloflask.com/totoro.gif">'

在将代码推送到 Gitea 之前,我们先本地运行应用,确保它能正常工作:

bash

# 启动 Flask 应用,允许外部访问
flask run --host=0.0.0.0

你应该能看到类似下面的输出,表示 Flask 服务器已经启动:

Flask运行输出

操作提示
按 Ctrl + C 可以中止 Flask 进程。Flask 默认在 5000 端口运行。

现在,打开浏览器,访问 http://服务器IP:5000,你应该能看到我们的网页:

网页效果

点击最下方的【创建仓库】

创建仓库后,Gitea 会显示如何将代码推送到仓库的指令。我们回到命令行,按照这些指令操作:

Git指令

bash

# 创建一个简单的 README 文件
touch README.md
echo "# My Flask Project" > README.md

# 初始化 Git 仓库
git init

# 创建并切换到 main 分支
git checkout -b main

# 添加文件到暂存区
git add README.md
git add app.py

# 提交更改
git commit -m "first commit"

# 添加远程仓库地址(替换为你的实际地址)
git remote add origin http://服务器IP:3000/用户名/myproject

# 推送代码到远程仓库
git push -u origin main
Git 操作说明
  • git init:在当前目录初始化一个 Git 仓库
  • git checkout -b main:创建并切换到 main 分支
  • git add:将文件添加到暂存区
  • git commit:将暂存区的文件提交到本地仓库
  • git remote add:添加远程仓库地址
  • git push:将本地仓库的代码推送到远程仓库

执行上述命令时,系统会要求你输入 Gitea 的用户名和密码。认证成功后,代码会被推送到 Gitea 仓库。

推送完成后,刷新 Gitea 网页,你应该能看到你的代码已经成功上传:

仓库内容

恭喜
恭喜你!你已经成功部署了 Gitea 代码仓库,并完成了一个简单项目的创建和推送。这是自动化构建和持续集成的第一步。在后续实验中,我们将学习如何将 Gitea 与 CI/CD 工具集成,实现代码的自动构建和部署。

在本实验中,我们学习了:

  1. Gitea 的基本概念和特点
  2. 如何在服务器上部署 Gitea
  3. 如何创建一个简单的 Flask 应用
  4. 如何使用 Git 命令将代码推送到 Gitea 仓库

这些知识和技能为后续学习自动化构建和持续集成打下了基础。

相关内容