本項目是基于thinkphp8框架開發(fā),由于眾所周知的原因,代碼托管于Gitee倉庫,生產(chǎn)環(huán)境部署在裝有centos7系統(tǒng)的vps服務(wù)器上,為了實現(xiàn)持續(xù)集成和自動部署,采用了Gitee流水線提供的CICD,具體配置步驟如下:
1、登錄Gitee.com進(jìn)入需要配置的倉庫,點擊“流水線”->“新建流水線”

新建流水線
2、 “基本信息”-> 名稱輸入“pipeline-deploy-main”,
3、 “觸發(fā)事件”,勾選push事件,分支匹配->匹配規(guī)則->精確匹配,目標(biāo)分支-> 輸入“main”

觸發(fā)事件設(shè)置
4、 “變量設(shè)置”->添加變量->自建變量,自建兩個變量:名稱分別GUSER、GTOKEN,值分別填入Gitee用戶名、Gitee生成的私人令牌。

自建變量
或者添加變量->通用變量->引用事先設(shè)置的全局通用變量。

引用全局通用變量
5、 “任務(wù)編排”->點擊加號添加三個任務(wù)階(php構(gòu)建、上傳制品、主機部署)段如下:

php構(gòu)建

上傳制品

主機部署
-
注意:這里主機需要點擊添加主機,按提示成功添加后,會自動出現(xiàn)在可選項中
自主導(dǎo)入
添加linux主機
通過命令添加linux主機
將命令復(fù)制并到vps服務(wù)器運行命令,即可成功添加到Gitee
6、 最后切換到代碼視圖,修改相應(yīng)的配置內(nèi)容如下:
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 構(gòu)建
phpVersion: '8.1'
commands:
- '# 設(shè)置全局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: 版本發(fā)布
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: 服務(wù)器部署
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 # 任何命令失敗則退出
# 臨時憑據(jù)文件
CREDENTIAL_FILE="/tmp/gitee_creds_$(date +%s)"
# 配置 Git 憑據(jù)
echo "配置 Git 憑據(jù)..."
git config --global credential.helper "store --file ${CREDENTIAL_FILE}"
# 寫入安全憑據(jù)(引用Gitee環(huán)境變量)
echo "https://${GUSER}:${GTOKEN}@gitee.com" > ${CREDENTIAL_FILE}
chmod 600 ${CREDENTIAL_FILE}
# 部署參數(shù)配置
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 應(yīng)用 ====="
# 1. 進(jìn)入部署目錄
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
# 設(shè)置初始分支
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優(yōu)化
echo "生成路由和配置緩存..."
php think optimize:route
php think optimize:config
# 6. 設(shè)置權(quán)限
echo "設(shè)置目錄權(quán)限..."
chmod -R 775 public runtime app/base/log
# 設(shè)置目錄所有者(Web服務(wù)器用戶是www)
chown -R www:www . # 根據(jù)實際用戶調(diào)整
# 7. 應(yīng)用生產(chǎn)環(huán)境配置
if [ -f .env.production ]; then
echo "應(yīng)用生產(chǎn)環(huán)境配置..."
cp .env.production .env
fi
# 設(shè)置環(huán)境變量文件權(quán)限
chmod -R 640 .env
# 8. 重啟服務(wù)
echo "重啟PHP-FPM服務(wù)..."
#sudo systemctl restart php8.3-fpm
# 清理憑據(jù)
echo "清理臨時憑據(jù)..."
rm -f "${CREDENTIAL_FILE}"
echo "===== ThinkPHP 8 部署成功! ====="
notify: []
strategy:
retry: '0'
7、 點擊保存,即可在項目根目錄下生成.workflow/pipeline-deploy-main.yml文件,并自動執(zhí)行流水線任務(wù)。此時可以在詳情中查看運行狀態(tài)及日志。

任務(wù)執(zhí)行狀態(tài)

任務(wù)日志
8、 經(jīng)過上述步驟完成流水線配置后,每次push到main分支的時候都會觸發(fā)流水線任務(wù)的自動執(zhí)行。


