Как сохранить права доступа к файлам во время автоматического развертывания gitlab? - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь автоматически развернуть ветку с 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 голосов
/ 20 ноября 2018

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 запрашивает пароль, поэтому вам нужно настроить его , чтобы выполнить команды без пароля.

Чтобы сохранить разрешения, попробуйте установить umask 055 вdeploy.sh перед запуском git pull.

...