Gitee倉庫流水線配置實現(xiàn)CICD自動部署

本項目是基于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í)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容