Gitee仓库流水线配置实现CICD自动部署

本项目是基于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分支的时候都会触发流水线任务的自动执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容