fix for windows: cygwin rsync breaks project directory on a remote machine #129
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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:
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):