使用rsync与gitlab-ci如何部署相同?



当我在我的服务器上,我没有我的项目,一切都很好(显然):

rsync --exclude=".git" -e ssh -avz --delete-after . $SSH_USER@$SSH_HOST:blog_symfony/
building file list ... done
created directory blog_symfony
[...]
sent 44,533,927 bytes  received 5,523 bytes  5,239,935.29 bytes/sec
total size is 238,959,003  speedup is 5.37

问题当我第二次推,它对我做任何事情:

rsync: [generator] delete_file: rmdir(project/blog_symfony/project/blog_symfony) failed: Permission denied (13)
rsync: [generator] delete_file: rmdir(project/blog_symfony) failed: Permission denied (13)
deleting project/blog_symfony/translations/.gitignore
deleting project/blog_symfony/translations/
[...]

在我的服务器端,在blog_symfony文件夹中为我创建了一个project文件夹

annot delete non-empty directory: project/blog_symfony
cannot delete non-empty directory: project
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]
sent 13,924 bytes  received 175 bytes  28,198.00 bytes/sec
total size is 238,959,004  speedup is 16,948.65
Cleaning up project directory and file based variables 00:01
ERROR: Job failed: exit code 1

我gitlab-ci:

before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking nonn" >> ~/.ssh/config'
script:
- ls
- apt-get update && apt-get install rsync -y
- ssh $SSH_USER@$SSH_HOST "ls"
- rsync --exclude=".git" -e ssh -avz --delete-after . $SSH_USER@$SSH_HOST:blog_symfony/
- ssh $SSH_USER@$SSH_HOST "cd blog_symfony && docker-compose build && docker-compose up"
我有一个由rsync编写的文件夹,无法从gitlab-ci中删除:
drwxrwxr-x 3 root                     root                        4096 Dec 14 23:26  project

我不认为这是正常的。这是我第一次在symfony项目中使用gitlab-ci。

谢谢你的帮助

ls -l:我有一个由rsync编写的文件夹,这是不可能从GitLab CI中删除的。

检查该文件夹是否在第一次执行docker-compose up后创建:如果您的Docker映像在内部作为USER root执行,使用绑定挂载,它会将文件/文件夹写入root.
这将阻碍正常操作(在服务器上,在容器之外),就像您的rsync一样,因为根文件将是这样的。

最新更新