本项目是基于thinkphp8框架开发,由于众所周知的原因,代码托管于Gitee仓库,生产环境部署在装有centos7系统的vps服务器上,为了实现持续集成和自动部署,采用了Gitee流水线提供的CICD,具体配置步骤如下:
1、登录Gitee.com进入需要配置的仓库,点击“流水线”->“新建流水线”

新建流水线
2、 “基本信息”-> 名称输入“pipeline-deploy-main”,
3、 “触发事件”,勾选push事件,分支匹配->匹配规则->精确匹配,目标分支-> 输入“main”

触发事件设置
4、 “变量设置”->添加变量->自建变量,自建两个变量:名称分别GUSER、GTOKEN,值分别填入Gitee用户名、Gitee生成的私人令牌。

自建变量
或者添加变量->通用变量->引用事先设置的全局通用变量。

引用全局通用变量
5、 “任务编排”->点击加号添加三个任务阶(php构建、上传制品、主机部署)段如下:

php构建

上传制品

主机部署
-
注意:这里主机需要点击添加主机,按提示成功添加后,会自动出现在可选项中
自主导入
添加linux主机
通过命令添加linux主机
将命令复制并到vps服务器运行命令,即可成功添加到Gitee
6、 最后切换到代码视图,修改相应的配置内容如下:
version: '1.0'
name: pipeline-deploy-main
displayName: pipeline-deploy-main
triggers:
trigger: auto
push:
branches:
precise:
- main
variables:
global:
- GTOKEN
- GUSER
stages:
- name: stage-compile
displayName: 代码编译
strategy: naturally
trigger: auto
executor:
- authors
steps:
- step: build@php
name: build_php
displayName: PHP 构建
phpVersion: '8.1'
commands:
- '# 设置全局composer依赖仓库地址'
- composer config -g secure-http false
- composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- composer install
- php -v
artifacts:
- name: BUILD_ARTIFACT
path:
- ./
caches: []
notify: []
strategy:
retry: '0'
- name: stage-release
displayName: 版本发布
strategy: naturally
trigger: auto
executor:
- authors
steps:
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
dependArtifact: BUILD_ARTIFACT
artifactName: output
notify: []
strategy:
retry: '0'
- name: stage-deploy
displayName: 服务器部署
strategy: naturally
trigger: auto
executor:
- authors
steps:
- step: deploy@agent
name: deploy_agent
displayName: 主机部署
hostGroupID:
ID: testing_server
hostID:
- 90115a02-f8f4-4ce1-bb9c-be21d4e0453f
deployArtifact:
- source: build
name: output
target: ~/gitee_go/deploy
dependArtifact: BUILD_ARTIFACT
script:
- |
#!/bin/bash
set -e # 任何命令失败则退出
# 临时凭据文件
CREDENTIAL_FILE="/tmp/gitee_creds_$(date +%s)"
# 配置 Git 凭据
echo "配置 Git 凭据..."
git config --global credential.helper "store --file ${CREDENTIAL_FILE}"
# 写入安全凭据(引用Gitee环境变量)
echo "https://${GUSER}:${GTOKEN}@gitee.com" > ${CREDENTIAL_FILE}
chmod 600 ${CREDENTIAL_FILE}
# 部署参数配置
DEPLOY_PATH="/www/wwwroot/cicd.testing.net"
REPO_URL="https://gitee.com/yourname/testing_server.git" # 替换为您的仓库地址
COMPOSER_ARGS="--no-dev --optimize-autoloader"
echo "===== 开始部署 ThinkPHP 8 应用 ====="
# 1. 进入部署目录
cd "$DEPLOY_PATH"
# 2. 检查是否是Git仓库
if [ ! -d .git ]; then
echo "首次部署 - 初始化 Git 仓库..."
git init
git remote add origin "$REPO_URL"
# 首次克隆需要完整操作
git fetch --all
git checkout -b main --track origin/main
# 设置初始分支
git branch -u origin/main
fi
# 3. 拉取最新代码
echo "拉取最新代码..."
echo "部署前HEAD: $(git rev-parse HEAD)"
git fetch --all
git reset --hard origin/main
git clean -f -d
echo "部署后HEAD: $(git rev-parse HEAD)"
# 4. 安装PHP依赖
echo "安装Composer依赖..."
composer install $COMPOSER_ARGS
# 5. ThinkPHP优化
echo "生成路由和配置缓存..."
php think optimize:route
php think optimize:config
# 6. 设置权限
echo "设置目录权限..."
chmod -R 775 public runtime app/base/log
# 设置目录所有者(Web服务器用户是www)
chown -R www:www . # 根据实际用户调整
# 7. 应用生产环境配置
if [ -f .env.production ]; then
echo "应用生产环境配置..."
cp .env.production .env
fi
# 设置环境变量文件权限
chmod -R 640 .env
# 8. 重启服务
echo "重启PHP-FPM服务..."
#sudo systemctl restart php8.3-fpm
# 清理凭据
echo "清理临时凭据..."
rm -f "${CREDENTIAL_FILE}"
echo "===== ThinkPHP 8 部署成功! ====="
notify: []
strategy:
retry: '0'
7、 点击保存,即可在项目根目录下生成.workflow/pipeline-deploy-main.yml文件,并自动执行流水线任务。此时可以在详情中查看运行状态及日志。

任务执行状态

任务日志
8、 经过上述步骤完成流水线配置后,每次push到main分支的时候都会触发流水线任务的自动执行。


