如何配置.gitlab-ci.yml实现master提交时自动拉取Laravel代码到服务器
问题原因说明
你现有配置中的所有job都是用echo命令模拟执行流程,没有实际调用拉取代码的操作,所以CI任务显示执行成功但服务器代码不会更新。
前置检查项
在使用新配置前请先确认以下条件:
- 你的GitLab Runner使用
shell类型执行器 - 运行Runner服务的
gitlab-runner系统用户,对服务器上Laravel项目目录有读写权限、可执行git命令的权限 - 已为
gitlab-runner用户配置好Git仓库拉取权限(比如SSH密钥已添加到GitLab部署密钥,拉取代码无需手动输入密码)
最终.gitlab-ci.yml配置
# 仅保留需要的部署阶段,删除不需要的构建、测试阶段 stages: - deploy # 自动拉取代码的部署任务 pull_latest_code: stage: deploy # 仅当向master分支推送代码时触发 only: - master script: # 切换到你的Laravel项目实际存放路径,替换为你自己的路径 - cd /www/wwwroot/your-laravel-project-path # 拉取master分支最新代码 - git pull origin master # 可选:如果需要更新目录权限可以加这行,按需修改用户和组 # - chown -R www:www .
常见问题排查
- 如果任务执行提示权限不足:给gitlab-runner用户开放项目目录权限,执行命令
chown -R gitlab-runner:gitlab-runner /你的项目路径,或者将gitlab-runner加入项目所属用户组 - 如果提示拉取代码失败:切换到gitlab-runner用户(
su gitlab-runner),手动执行一次git拉取命令,排查密钥配置问题
内容的提问来源于stack exchange,提问作者Farshad
相关产品推荐
相关产品推荐

