你这个场景里,“最好的库”不是一个单独 SDK,而是这套组合: rt1. Hyperf 官方运行时镜像:hyperf/hyperf(构建/运行最稳)2. 质量门禁:phpstan/phpstan + phpunit/phpunit3. 制品与镜像:CODING 制品库(Composer/Docker)+ 腾讯云 TCR(可选) 下面给你一套可直接落地的 Hyperf + CODING DevOps 完整流程。 ---1)项目准备(Hyperf) 先保证项目可在 CI 无交互跑通:composerinstallvendor/bin/phpstan analyse app--level=5vendor/bin/phpunit php bin/hyperf.php di:init-proxy composer.json 建议至少有:{"require-dev":{"phpstan/phpstan":"^1.11","phpunit/phpunit":"^10.0"}}---2)Dockerfile(生产推荐,多阶段) FROM hyperf/hyperf:8.1-alpine-v3.16-swoole AS builder WORKDIR /app COPY composer.json composer.lock ./ RUNcomposerconfig-grepo.packagistcomposerhttps://mirrors.aliyun.com/composer/\&&composerinstall--no-dev --prefer-dist --no-interaction --optimize-autoloader COPY..RUN php bin/hyperf.php di:init-proxy FROM hyperf/hyperf:8.1-alpine-v3.16-swoole WORKDIR /app COPY--from=builder /app /app EXPOSE9501STOPSIGNAL SIGTERM CMD["php","/app/bin/hyperf.php","start"]---3)CODING 项目里创建持续集成(Jenkinsfile 模式) 在 CODING DevOps ->持续集成 ->构建计划,选择 Jenkinsfile from repo。 Jenkinsfile(可直接用) pipeline{agent any environment{APP_NAME="hyperf-app"IMAGE="ccr.ccs.tencentyun.com/your-namespace/hyperf-app:${env.BUILD_NUMBER}"IMAGE_LATEST="ccr.ccs.tencentyun.com/your-namespace/hyperf-app:latest"}options{disableConcurrentBuilds()buildDiscarder(logRotator(numToKeepStr:'20'))timeout(time:30, unit:'MINUTES')}stages{stage('Checkout'){steps{checkout scm}}stage('Composer Install'){steps{sh'''composerconfig-grepo.packagistcomposerhttps://mirrors.aliyun.com/composer/composerinstall--no-interaction --prefer-dist --optimize-autoloader'''}}stage('Static Analysis'){steps{sh'vendor/bin/phpstan analyse app --level=5'}}stage('Unit Test'){steps{sh'vendor/bin/phpunit --colors=never'}}stage('Build Image'){when{anyOf{branch'main';branch'master'}}steps{sh'''dockerbuild-t${IMAGE}-t${IMAGE_LATEST}.'''}}stage('Push Image'){when{anyOf{branch'main';branch'master'}}steps{withCredentials([usernamePassword(credentialsId:'tcr-credential', usernameVariable:'U', passwordVariable:'P')]){sh'''echo"${P}"|dockerlogin ccr.ccs.tencentyun.com-u"${U}"--password-stdindockerpush${IMAGE}dockerpush${IMAGE_LATEST}'''}}}stage('Deploy Staging'){when{branch'main'}steps{sshagent(['deploy-ssh-key']){sh'''ssh-oStrictHostKeyChecking=no deploy@${STAGING_HOST}' cd /data/www/hyperf-app && docker pull '"${IMAGE}"'&&dockerrm-fhyperf-app||true&&dockerrun-d--namehyperf-app--restartunless-stopped-p9501:9501'"${IMAGE}"'' ''' } } } stage('Deploy Prod') { when { branch 'master' } steps { input message: '确认发布到生产环境' sshagent(['deploy-ssh-key']) { sh ''' ssh -o StrictHostKeyChecking=no deploy@${PROD_HOST} 'cd/data/www/hyperf-app&&dockerpull'"${IMAGE}"'&&dockerrm-fhyperf-app||true&&dockerrun-d--namehyperf-app--restartunless-stopped-p9501:9501'"${IMAGE}"'' '''}}}}}---4)CODING 里要配的凭据/变量 - 凭据 - tcr-credential:TCR 用户名密码 - deploy-ssh-key:部署机 SSH 私钥 - 变量 - STAGING_HOST - PROD_HOST ---5)分支策略(国内团队常用) - feature/*:只跑install+ phpstan + phpunit - main:自动构建镜像并部署测试环境 - master:人工确认后部署生产环境 ---6)Hyperf 生产关键点 -scan_cacheable=true(生产开启) - 必须有 /health 健康检查接口 - 使用 SIGTERM + 反向代理健康检查做平滑切换 - 日志落盘(runtime/logs)并接入腾讯云日志体系(可后续加) ---7)可选增强(建议) - 接入 CODING 持续部署(替代手写 SSH) - 镜像安全扫描(TCR) - 发布后自动冒烟测试(curl /health + 核心 API)