如何在 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
我正在尝试将分支从 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