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

How to keep files permission during gitlab auto deployment?

我正在尝试将分支从 gitlab 11.06 自动部署到暂存 server.Both 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

自动部署工作正常,但文件的所有者和权限 changed.For 示例:

自动部署前:
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

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

git pull 似乎替换文件(它创建一个新文件并移动它)而不是写入现有文件。因此它无法保留所有权——新创建的文件是使用进程所有权创建的,gitlab-runner/gitlab-runner user/group。要在不同用户下使用 运行 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 到 运行 没有密码的命令。

要保留权限,请尝试在 运行 宁 git pull.

之前在 deploy.sh 中设置 umask 055