Solução do erro: fatal: Dirty repository: Having uncommitted changes. Exiting...

Ao criar um pipeline com o arquivo ".gitlab-ci.yml" no GitLab e atualizar o assets, por exemplo com comando "npm run production", o git-ftp apresenta alguns problemas, como “fatal: Dirty repository: Having uncommitted changes. Exiting...”, “nothing to commit, working tree clean” ou “Unknown SHA1 object, could not determine changed files, taking all files”.

Solução do erro: fatal: Dirty repository: Having uncommitted changes. Exiting...
Print de tela do site: gitlab.com

O primeiro problema acontece ao tentar fazer o “git ftp push” depois que houve modificações nos arquivos locais (por exemplo, arquivos de assets, como css e js), sem te efetuado um commit antes, para resolver, basta apenas fazer um commit antes de efetuar o push.

Porém ao efetuar o commit, e realizar o comando “git ftp push” novamente, aparentemente dar certo, mas ao tentar sincronizar novamente, iremos nos deparar com o erro “Unknown SHA1 object, could not determine changed files, taking all files.

Esse outro erro se dar porque o sha1 gravado no arquivo “.git-ftp.log”, é do commit local e não da branch remota, para ajustar isso, podemos reverter o ultimo commit e atualizar o “.git-ftp.log” com o número do commit da brench remota. Segue a instruções completa do que precisamos fazer no arquivo “.gitlab-ci.yml”:

Arquivo: .git-ftp.log

  image: dotsunited/git-ftp
    script:
      - echo "Adicionar os assets mortificados"
      - git config --global user.email you@example.com #não precisa alterar
      - git config --global user.name "Your Name" #não precisa alterar
      - git add *
      - git commit -m "Commit assets"
      - echo "Sincronizar com o ftp"
      - git config git-ftp.url "$FTP_HOST"
      - git config git-ftp.user "$FTP_USERNAME"
      - git config git-ftp.password "$FTP_PASSWORD"
      - git ftp push --auto-init --force
      - echo "Atualizar o .git-ftp.log com o commit remoto"
      - git reset --hard HEAD@{1}
      - git ftp catchup

Tags: gitlab, git-ftp, pipeline, CI/CD e .gitlab-ci.yml.

Postar um comentário

Escreva apenas o que for referente e relevante ao artigo.
Digite seu comentário...

Mais postagens