在git push上自动部署

时间:2016-11-20 22:12:50

标签: deployment yii2 continuous-integration composer-php gitlab

如何在gitlab push上配置yii2项目到生产服务器的自动部署?

我找到了2个相关的东西:webhooks和gitlab-ci。如果我理解正确,当使用webhooks时,webserver必须具有对项目文件夹的写入权限,这很糟糕。尝试在服务器上配置私有跑步者gitlab-ci,但失败了。

repo根文件夹中有3个项目:.gitlab-ci.yml文件和src文件夹以及.git文件夹。

#.gitlab-ci.yml
stages:
  - deploy

deploy:
  stage: deploy
  script:
    - cd ./src && composer install
  only:
    - prod

src文件夹中有一个yii2 basic项目。

在推进prod分支后3分钟左右我收到邮件“管道已成功”的消息。但是服务器文件夹中的文件没有更新。我发现在/ home / gitlab-runner / ..文件夹树的某个地方有一个项目的副本。但我需要更新特定文件夹中的文件。那么,在哪里以及如何配置该文件夹?

1 个答案:

答案 0 :(得分:0)

我通过试验找到了解决方案:

#.gitlab-ci.yml
stages:
  - deploy

deploy:
  stage: deploy
  script:
    - composer --no-interaction --no-progress --prefer-dist --working-dir=src install
    - cp -Rf ${CI_PROJECT_DIR} /path/on/server/
  only:
    - prod

除此之外,我还将gitlab-runner用户添加到了Web服务器用户组。在使用此命令的ubuntu服务器上:

sudo chmod g+w -R /path/on/server
sudo usermod -a -G www-data gitlab-runner

我愿意接受任何建议。