skip to Main Content

We’re running an older gen project and we need to deploy pushes to our main branch using LFTP from Gitlab.
The problem we’re having is that each push uploads all of the files instead of only changes. Currently our pipeline looks like this:

image: ubuntu:18.04

before_script:
  - apt-get update -qy
  - apt-get install -y lftp

build:
  script:
    # Sync to FTP
    - lftp -e "set ftp:ssl-allow no;open $FTP_IP; user $FTP_USERNAME $FTP_PASSWORD; mirror -X .* -X .*/ --reverse --verbose -n localDir/ remoteDir/; bye"

I’ve googled what to do, but didn’t find a clear answer. Can anyone help me with this situation?

Thanks

2

Answers


  1. Chosen as BEST ANSWER

    So the only-newer option didn't work due to the timestamps not being correct. There's a tool in GIT that restore timestamps so I just chucked that in and it now works as it should...

    Looks like this now:

    build:
      image: ubuntu:latest
      stage: build
      script:
        - apt update
        - apt install git-restore-mtime -y
        # - ls -la
        # This command restores the modified timestamps from commits
        - /usr/lib/git-core/git-restore-mtime
        # - ls -la
        - apt-get update -qy
        - apt-get install -y lftp
        # Sync to FTP
        - lftp -e "set ftp:ssl-allow no;open $FTP_IP; user $FTP_USERNAME $FTP_PASSWORD; mirror -X .* -X .*/ --reverse --verbose --only-newer -n localDir/ remoteDir/; bye"
    

  2. The problem is that the mirror command is doing a full sync instead of just changes. To solve this, you can use the –only-newer option with the mirror command.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search