When using GitLab-CI, it is needed that finding changed or new files, and then copy & paste the files to server sometimes. The job is pretty simple.
Fisrt, listing all changed, new files using git. And write a text file.
git diff --name-only --diff-filter=d HEAD~1 > copy-target.txt # exclude delete
Second, Copying a list of files. In ‘copy-target.txt’, there are lines of full path & name. Using xcopy, write a file named
@echo off set src_folder=.\ set dst_folder=o:\target for /f "tokens=*" %%i in (copy-target.txt) DO ( xcopy /S/E "%src_folder%\%%i" "%dst_folder%" )
Using bat files written above, set GitLab-CI script.
stages: - deploy after_script: - 'net use /delete o:' deploy-to-prod: stage: deploy environment: name: production server only: - master script: - echo 'deploy to production server' - 'net use o: \\server_ip\folder password /user:id' - 'git diff --name-only --diff-filter=d HEAD~1 > copy-target.txt' - 'auto-copy.bat'
Copy a list (txt) of files: https://stackoverflow.com/questions/6257948/copy-a-list-txt-of-files