When a file changes from being a symlink to a text file (using the same name) P4jenkins wont detect it properly because 'p4 reconcile' is not using the '-t' flag. This causes problems later in the job:
P4 Task: reconcile files to changelist. ... p4 revert -k //jenkins-Windows10-SymlinkEdgeCases_WindowsOnly-9/... +... p4 sync -k //jenkins-Windows10-SymlinkEdgeCases_WindowsOnly-9/... +... p4 reconcile -e -a -f //jenkins-Windows10-SymlinkEdgeCases_WindowsOnly-9/.___ +... p4 opened -Cjenkins-Windows10-SymlinkEdgeCases_WindowsOnly-9 //jenkins-Win___ +duration: (24ms) P4 Task: publish files to Perforce. ... p4 change -i +... p4 change -o 2047 +... pending change: 2047 ... p4 reopen -c2047 //jenkins-Windows10-SymlinkEdgeCases_WindowsOnly-9/... +... p4 change -o 2047 +... p4 opened -Cjenkins-Windows10-SymlinkEdgeCases_WindowsOnly-9 //jenkins-Win___ +... ... edit //depot/SymlinkEdgeCases/Windows/SymLinks/windows_file_symlink ... submitting files ... p4 describe -s 2047 +... p4 fixes -c2047 +... p4 submit -i + Unable to publish workspace: com.perforce.p4java.exception.P4JavaException: com.perforce.p4java.exception.P4JavaException: hudson.AbortException: P4JAVA: Error(s): Client side operation(s) failed. Command aborted. Build step 'Perforce: Publish assets' marked build as failure Finished: FAILURE
When you check the workspace 'windows_file_symlink' is opened for edit as type 'symlink'.
Reproduction Steps:
(1) Using a windows client create a target file ('a_target').
(2) Create a symlink ('windows_file_symlink') to the target using 'mklink'.
(3) Submit both files to the depot.
(4) Create a Jenkins job that syncs both files and then publishes changes from that workspace. Include a build step that is a batch file that replaces the symlink with the file contents. For example:
dir /s attrib -r windows_file_symlink del windows_file_symlink copy a_target windows_file_symlink
(7) Execute the Jenkins job.
Updating to highlight this. Please discuss at next sprint planning meeting.