GitLab CI/CD 更改文件夹和文件夹权限

GitLab CI/CD change Folder & Folder rights

我目前正在构建一个 GitLab CI/CD 脚本,用于在我的服务器上自动部署我的 Web 应用程序。将文件复制到服务器的最后一个任务失败。 问题是所有复制的文件都创建为 gitlab-runner:gitlab-runner 权限(GitLab-runner 安装为 shell 跑步者),这是显而易见的。但是,我希望为 www-data 用户更改这些权限。

因此我在gitlab中添加了以下脚本-ci.yml

- /bin/chown www-data:www-data /var/www/[NAME]/*
- /usr/bin/find /var/www/[NAME] -type d -exec /bin/chmod 755 {} \;
- /usr/bin/find /var/www/[NAME] -type f -exec /bin/chmod 644 {} \;
- /bin/chmod 660 /var/www/[NAME]/.env

并且,由于我不想在不输入密码的情况下授予 gitlab-runner 用户 root 权限,因此我在 sudoers 文件中创建了以下条目

gitlab-runner ALL=(ALL:ALL) NOPASSWD: /usr/bin/find /bin/chmod /bin/chown

但是,所有操作都会失败并显示错误消息,例如

/bin/chown: changing ownership of '/var/www/[NAME]/app': Operation not permitted

[NAME] 文件夹的权限是

drwxrwxr-x www-data www-data

我做错了什么?也许我在 CI/CD 脚本中更改权限的方法是错误的?但是,如果没有 www-data 用户下的 运行 gitlab-runner,如何防止复制的文件属于 gitlab-runner 用户?

我解决了。根据这个 我能够以 www-data 用户的身份部署我的应用程序。