title: Gitlab runner CI/CD do not checkout and pull last commit
body: <p>I want to have a CI/CD with gitlab-runner and docker swarm. I have problem when i deploy the commit will not checkout or checkout without changes, I wonder to know if problem is gitlab or docker or docker build. my .gitlab-ci.yml, look like:</p>
  
  <pre class="lang-yaml prettyprint-override"><code>stages:
    - build
    - deploy
  build_image:
    stage: build
    image: docker:git
    services:
      - docker:dind
    variables:
      DOCKER_DRIVER: overlay
    script:
      - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
      - docker build -t registry.gitlab.com/insuretech1/backend:${CI_COMMIT_REF_SLUG} ./DockerFiles/Worker
      - docker push registry.gitlab.com/insuretech1/backend:${CI_COMMIT_REF_SLUG}
    only:
      - branches
  deploy_staging:
    stage: deploy
    image: rastasheep/ubuntu-sshd:latest
    script:
      # add the server as a known host
      - ssh-keyscan 46.4.151.121 &gt;&gt; ~/.ssh/known_hosts
      - chmod 600 ~/.ssh/known_hosts
      # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store
      - eval $(ssh-agent -s)
      - touch key.txt
      - echo "$SSH_PRIVATE_KEY" &gt;&gt; key.txt
      - chmod 600 key.txt
      - ssh-add key.txt
      # log into Docker registry
      - ssh alireza@46.4.151.121 "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com"
      # stop container, remove image.
      - ssh alireza@46.4.151.121 "docker stop dockergitlab_${CI_COMMIT_REF_SLUG}" || true
      - ssh alireza@46.4.151.121 "docker rm dockergitlab_${CI_COMMIT_REF_SLUG}" || true
      - ssh alireza@46.4.151.121 "docker rmi registry.gitlab.com/insuretech1/backend:${CI_COMMIT_REF_SLUG}" || true
      # start new container
      - ssh alireza@46.4.151.121 "docker run --name dockergitlab_${CI_COMMIT_REF_SLUG} -d registry.gitlab.com/insuretech1/backend:${CI_COMMIT_REF_SLUG}"
    only:
      - branches
    except:
      - master
  </code></pre>
  
  <p>and I also I put my pipeline log below, that might help to describe more:</p>
  
  <pre><code>$ eval "$CI_PRE_CLONE_SCRIPT"
  00:02
   Fetching changes with git depth set to 50...
   Initialized empty Git repository in /builds/insuretech1/backend/.git/
   Created fresh repository.
   From https://gitlab.com/insuretech1/backend
    * [new ref]         refs/pipelines/124187268 -&gt; refs/pipelines/124187268
    * [new branch]      develop                  -&gt; origin/develop
   Checking out 735209a2 as develop...
   Skipping Git submodules setup
  $ docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
  03:43
   WARNING! Using --password via the CLI is insecure. Use --password-stdin.
   WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
   Configure a credential helper to remove this warning. See
   https://docs.docker.com/engine/reference/commandline/login/#credentials-store
   Login Succeeded
  </code></pre>
  
  <p>the content of dockerfile which I use for my build</p>
  
  <pre><code>FROM debian:buster
  
  MAINTAINER Alireza Rahmani Khalili "alirezarahmani@live.com"
  
  ENV TERM xterm
  
  RUN apt-get update --fix-missing &amp;&amp; apt-get install -y --force-yes curl sudo vim
  RUN apt-get install -y --force-yes wget apt-transport-https lsb-release ca-certificates
  RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
  
  RUN echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" &gt; /etc/apt/sources.list.d/php.list
  RUN echo "deb http://ftp.uk.debian.org/debian buster-backports main" &gt;&gt; /etc/apt/sources.list
  
  RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
  RUN echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" &gt; /etc/apt/sources.list.d/php.list
  
  RUN DEBIAN_FRONTEND="noninteractive" apt-get update &amp;&amp; apt-get install -y --force-yes \
      nginx \
      php7.3 \
      php7.3-cli \
      php7.3-fpm \
      php7.3-curl \
      php7.3-json \
      php7.3-mysql \
      php7.3-sqlite \
      php7.3-xml \
      php7.3-intl \
      php7.3-mbstring \
      php7.3-xdebug \
      php-memcached \
      git \
      openssh-server \
      php7.3-gd \
      zip \
      php7.3-zip
  
  # configure php-fpm
  RUN sed -i 's/^;*clear_env = .*/clear_env = no/' /etc/php/7.3/fpm/pool.d/www.conf
  RUN curl -sS https://getcomposer.org/installer | php &amp;&amp; \
      mv composer.phar /usr/local/bin/composer &amp;&amp; chmod +x /usr/local/bin/composer
  
  RUN mkdir /var/run/sshd
  RUN echo 'root:root' | chpasswd
  RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
  RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
  RUN echo "UseDNS no" &gt;&gt; /etc/ssh/sshd_config
  
  RUN echo "KexAlgorithms diffie-hellman-group1-sha1" &gt;&gt; /etc/ssh/sshd_config
  
  RUN echo "fastcgi_param PATH_TRANSLATED \$document_root\$fastcgi_script_name;" &gt;&gt; /etc/nginx/fastcgi_params
  
  RUN mkdir /etc/nginx/ssl
  RUN openssl ecparam -out /etc/nginx/ssl/nginx.key -name prime256v1 -genkey
  RUN openssl req -new -batch -key /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/csr.pem
  RUN openssl req -x509 -nodes -days 365 -key /etc/nginx/ssl/nginx.key -in /etc/nginx/ssl/csr.pem -out /etc/nginx/ssl/nginx.pem
  RUN chmod 600 /etc/nginx/ssl/*
  
  RUN ln -sf /dev/stdout /var/log/nginx/access.log
  RUN ln -sf /dev/stderr /var/log/nginx/error.log
  
  ADD docker-entrypoint.sh /usr/bin/docker-entrypoint
  RUN chmod +x /usr/bin/docker-entrypoint
  RUN sed -i 's/^user  nginx;/user  www-data;/' /etc/nginx/nginx.conf
  
  RUN echo "apc.enable_cli=1" &gt;&gt; /etc/php/7.3/cli/php.ini
  RUN echo "apc.shm_size=128M" &gt;&gt; /etc/php/7.3/fpm/conf.d/20-apcu.ini
  RUN sed -i "s/\(max_execution_time *= *\).*/\1180/" /etc/php/7.3/fpm/php.ini
  RUN sed -i "s/\(upload_max_filesize *= *\).*/\1100M/" /etc/php/7.3/fpm/php.ini
  RUN sed -i "s/\(post_max_size *= *\).*/\1100M/" /etc/php/7.3/fpm/php.ini
  RUN sed -i "s/\(^.*max_input_vars *= *\).*/max_input_vars = 10000/" /etc/php/7.3/fpm/php.ini
  RUN sed -i "s/\(pm.max_children = 5\).*/\pm.max_children = 50/" /etc/php/7.3/fpm/pool.d/www.conf
  RUN sed -i "s/\(pm.max_spare_servers = 3\).*/\pm.max_spare_servers = 10/" /etc/php/7.3/fpm/pool.d/www.conf
  RUN echo "xdebug.default_enable=1" &gt;&gt; /etc/php/7.3/fpm/conf.d/20-xdebug.ini
  RUN echo "xdebug.profiler_output_dir=/var/www/cachegrind/" &gt;&gt; /etc/php/7.3/fpm/conf.d/20-xdebug.ini
  RUN echo "xdebug.profiler_enable_trigger=1" &gt;&gt; /etc/php/7.3/fpm/conf.d/20-xdebug.ini
  RUN echo "xdebug.profiler_output_name= cachegrind.out" &gt;&gt; /etc/php/7.3/fpm/conf.d/20-xdebug.ini
  RUN mkdir /root/.ssh/
  
  ADD default.conf /etc/nginx/conf.d/default.conf
  ADD default.conf /etc/nginx/sites-enabled/default
  ADD default.conf /etc/nginx/sites-available/default
  
  EXPOSE 22 443 80
  WORKDIR /var/www/
  
  ENTRYPOINT ["docker-entrypoint"]
  CMD ["nginx", "-g", "daemon off;"]
  
  </code></pre>
  
  <p>and also content of my docker compose file which i use when I build in my ci/cd:</p>
  
  <pre class="lang-yaml prettyprint-override"><code>version: '3'
  services:
    worker:
      image: registry.gitlab.com/insuretech1/backend:develop
      ports:
      - 0.0.0.0:80:80
      depends_on:
      - mysql
      deploy:
        mode: replicated
        replicas: 3
        # service resource management
        resources:
          # Hard limit - Docker does not allow to allocate more
          limits:
            cpus: '0.25'
            memory: 512M
          # Soft limit - Docker makes best effort to return to it
          reservations:
            cpus: '0.25'
            memory: 256M
        # service restart policy
        restart_policy:
          condition: on-failure
          delay: 5s
          max_attempts: 3
          window: 120s
        # service update configuration
        update_config:
          parallelism: 1
          delay: 10s
          failure_action: continue
          monitor: 60s
          max_failure_ratio: 0.3
      volumes:
      - /var/www/backend:/var/www
    mysql:
      image: mariadb:10.4
      ports:
      - 0.0.0.0:3306:3306
      environment:
        MYSQL_ROOT_PASSWORD: root
      volumes:
        - /opt/mysql_data:/var/lib/mysql
      deploy:
        placement:
          constraints: [node.role == manager]
    redis:
      image: redis
      deploy:
        placement:
          constraints: [node.role == manager]
  </code></pre>
  
  <p>the issue is I can not see my last changes of my commit in my server (I mean i should manually git pull to fetch last changes), is there anything wrong?</p>