如何在gitlab自动部署期间保留文件权限?

时间:2018-11-19 17:01:50

标签: git gitlab gitlab-ci gitlab-ci-runner

我正在尝试从gitlab 11.06到暂存服务器的自动部署分支。gitlab服务器和暂存服务器都是centos 7.4

下面是.gitlab-ci.yml

stages:
  - deploy
deploy_staging:
  stage: deploy
  tags:
    - php
  script:
    /home/gitlab-runner/.local/bin/deploy.sh

deploy.sh如下:

#!/bin/bash
deploy_path="/var/www/html"
 cd $deploy_path
 git pull origin master

自动部署工作正常,但是文件的所有者和权限已更改。例如:

自动部署之前:
 drwxr-xr-x 2 apache webadmin 77 Nov 19 8:41 phpmailer

自动部署后:
drwxrwxr-x 2 gitlab-runner gitlab-runner 77 Nov 19 10:11 phpmailer

我需要自动部署,也需要保留文件权限。
如何在自动部署期间保持文件权限?感谢任何解决方案!

1 个答案:

答案 0 :(得分:0)

git pull似乎是替换文件(它将创建一个新文件并将其移动),而不是写入现有文件。因此,它无法保留所有权-使用进程所有权gitlab-runner/gitlab-runner用户/组创建新创建的文件。要使用git pull在其他用户下修复运行sudo的问题。要么

sudo -u apache /home/gitlab-runner/.local/bin/deploy.sh

gitlab-ci.yml

sudo -u apache git pull origin master
deploy.sh中的

。请不要忘记sudo要求输入密码,因此您必须configure it来运行不带密码的命令。

要保留权限,请尝试在运行umask 055之前在deploy.sh中设置git pull