Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix for windows: cygwin rsync breaks project directory on a remote machine #129

Open
wants to merge 1 commit into
base: development
Choose a base branch
from

Conversation

LuigiVampa92
Copy link

What problem does it solve?

I tested Mirakle plugin on a Windows 10 laptop and discovered a weird thing. Rsync implementation from Cygwin works fine, however for some reason in some cases (not 100% sure, but it started from certain gradle update, some old project can be build fine, others, newer - can't) after all files from the directory with project source code was successfully transferred to the similar directory on the server, that directory receives certain ACL rules that applied to the directory. Those ACL rules limit the file permission mask for any newly created files in that directory to the value of 070, which make those files effectively inaccessible the user that owns them and gradle process cannot access them, the build is crushed with an error "cannot open file".

Solution:

I have added another command to executeOnRemote gradle task. It just deletes any previously set ACL rules from the project directory. If there are none of them in case of older gradle versions or you use Mirakle on Linux or MacOS - then nothing will happen.

The command is:

setfacl -b -R $remoteFolder

NOTE! The setfacl binary is not present in all Linux distros by default. So you will have to make sure it exists on the remote system before running Mirakle builds from a Windows machine. The binary can be easily installed with this command (this have to be done just once):

sudo apt install acl -y

…perties on project directory that do not allow the system user read his own newly created files that created during build process: .gradle and build directories (wtf???). It makes the command impossible to execute. Added the complete recursive removal of any non-standard acl for uploaded directory and files in it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant