我正在尝试从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
我需要自动部署,也需要保留文件权限。
如何在自动部署期间保持文件权限?感谢任何解决方案!
答案 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
。