我正在尝试自动将分支从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.shdeploy.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
我需要自动部署,我也需要保持文件允许。
如何在自动部署期间保留文件权限?谢谢您的任何解决方案!
发布于 2018-11-20 15:26:37
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要求输入密码,所以您必须使用配置它来运行没有密码的命令。
若要保留权限,请在运行umask 055之前在deploy.sh中设置git pull。
https://stackoverflow.com/questions/53379446
复制相似问题