Então seria bom vc colar aqui o ci.yml para termos uma ideia do que pode ser, dependendo do comando que vc está utilizando pode estar removendo os arquivos no destino
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout do Repositorio
uses: actions/checkout@v1
- name: Deploy para o host
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
ARGS: "-rltgoDzvO --delete"
SOURCE: ""
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
REMOTE_PORT: ${{ secrets.REMOTE_PORT }}
TARGET: ${{ secrets.REMOTE_TARGET }}
Apaguei somente o name para não vazar os dados do cliente
Ok, na verdade o seu CI tá usando o rsync (de acordo com a action do easingthemes/ssh-deploy), com os argumentos: -rltgoDzvO --delete
O argumento --delete apaga todos os arquivos no destino que não estão na origem, para mais detalhes em cada argumento desse pode olhar direto na doc do rsync: https://linux.die.net/man/1/rsync
Para contornar isso creio (não testei para confirmar) ser possível usar a opção --exclude=ARQUIVO
, onde ARQUIVO é um arquivo com a lista de diretórios/arquivos que não deve ser considerado pelo rsync (não vai enviar e nem apagar caso exista no destino)
Consegui meu amigo, a opção exclude funcionou. Muito obrigado
Agora como recomendação usar uma política de backup para esses arquivos, o ideal também é o usuário com qual é realizado o deploy nem ter permissão para mexer nesses arquivos que não deveriam ter sido apagados