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

Gitea 是一个轻量级的开源 Git 服务平台,用于托管代码和进行版本控制。它与 Github、Gitlab、Gitee 等商业化平台功能类似,但更加轻量和易于部署。
实验准备
在开始实验前,我们需要清理环境,确保没有旧的容器和镜像影响我们的实验结果。请执行以下步骤:
- 删除所有运行中的容器
- 删除所有已下载的镜像
- 清理未使用的数据卷和网络
# 删除所有容器
docker rm -f $(docker ps -aq)
# 删除所有镜像
docker rmi -f $(docker images -q)
# 清理系统
docker system prune --volumes -f
实验过程
任务一:部署 Gitea
1. 准备相关目录和用户
首先,我们需要创建一个专门的用户来运行 Gitea 服务,并设置相应的目录权限。这是出于安全考虑,避免使用 root 用户运行服务。
# 创建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
:用于存放配置文件
2. 下载 Gitea 程序
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
3. 配置 Gitea
为了让 Gitea 作为系统服务运行,我们需要创建一个 systemd 服务文件:
# 创建服务文件
vim /etc/systemd/system/gitea.service
文件内容如下(这个配置可以在 Gitea 官网找到):
[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=git
和Group=git
:指定运行服务的用户和组WorkingDirectory=/var/lib/gitea/
:指定工作目录ExecStart
:指定启动命令Restart=always
:服务崩溃时自动重启Environment
:设置环境变量
4. 启动 Gitea 服务
# 重新加载配置文件
systemctl daemon-reload
# 设置开机启动
systemctl enable gitea
# 启动
systemctl start gitea
5. 初始化 Gitea
服务启动后,我们需要通过 Web 界面完成 Gitea 的初始化配置:
-
在浏览器中打开
http://服务器IP:3000
,进入 Gitea 的初始化页面 -
在【数据库设置】部分,选择 SQLite 作为数据库(简单易用,适合测试环境)
- 在【可选设置】部分,填写管理员账号信息,包括用户名、密码和邮箱
- 完成所有设置后,点击页面底部的【立即安装】按钮
任务二:试用 Gitea
在完成 Gitea 的部署后,我们来创建一个简单的 Flask 应用并将其推送到 Gitea 仓库中,体验 Git 版本控制的基本流程。
1. 准备项目环境
首先,我们需要安装必要的依赖并创建项目目录:
# 安装 Python 和 pip
yum install -y python3 python3-pip
# 安装 Flask 框架
pip3 install flask
# 创建项目目录
mkdir /root/myproject
cd /root/myproject
2. 创建项目代码
vim app.py
文件内容:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return '<p>我是一个网页!</p><img src="http://helloflask.com/totoro.gif">'
3. 验证项目
在将代码推送到 Gitea 之前,我们先本地运行应用,确保它能正常工作:
# 启动 Flask 应用,允许外部访问
flask run --host=0.0.0.0
你应该能看到类似下面的输出,表示 Flask 服务器已经启动:
现在,打开浏览器,访问 http://服务器IP:5000
,你应该能看到我们的网页:
4. 在 Gitea 中创建仓库
点击最下方的【创建仓库】
5. 上传项目代码
创建仓库后,Gitea 会显示如何将代码推送到仓库的指令。我们回到命令行,按照这些指令操作:
# 创建一个简单的 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 init
:在当前目录初始化一个 Git 仓库git checkout -b main
:创建并切换到 main 分支git add
:将文件添加到暂存区git commit
:将暂存区的文件提交到本地仓库git remote add
:添加远程仓库地址git push
:将本地仓库的代码推送到远程仓库
执行上述命令时,系统会要求你输入 Gitea 的用户名和密码。认证成功后,代码会被推送到 Gitea 仓库。
6. 查看仓库内容
推送完成后,刷新 Gitea 网页,你应该能看到你的代码已经成功上传:
小结
在本实验中,我们学习了:
- Gitea 的基本概念和特点
- 如何在服务器上部署 Gitea
- 如何创建一个简单的 Flask 应用
- 如何使用 Git 命令将代码推送到 Gitea 仓库
这些知识和技能为后续学习自动化构建和持续集成打下了基础。