Sign inSign up

kelseysantos/salvosmain

By kelseysantos

Updated 7 months ago

Sync automático de repositório Git com execução programada de script Python.

Image
Integration & delivery
Developer tools
0

405

kelseysantos/salvosmain repository overview

🚀 Git Auto-Sync Runner – Universal Automation Container

Container universal, automático e configurável para sincronização contínua de repositórios Git (GitHub, GitLab, Bitbucket) e execução de scripts Python. Ideal para automações, bots, pipelines, "green wall" (histórico de commits) e tarefas recorrentes.

Docker Pulls Docker Image Size Python Version Git Status License


📌 Descrição Geral

Este container Docker foi projetado para ser universal e automatizar fluxos de trabalho baseados em:

  • 🔄 Sincronização contínua de QUALQUER repositório Git (GitHub, GitLab, etc.)
  • 🧠 **Execução periódica do script Python main.py** (gera reflexões e commits automáticos)
  • 🔐 Autenticação Flexível: Suporta tanto tokens simples (GitHub) quanto Usuário+Token (GitLab/Bitbucket)
  • 👤 Identidade Personalizável: Você define qual nome e e-mail aparecem nos commits
  • Agendamento simples via variável de ambiente

O sistema garante que seu script rode sempre sincronizado e faça commits com a sua identidade, independente de onde o container esteja rodando.


🛠 Funcionalidades Principais

✔️ Universal e Multi-Plataforma

Funciona com GitHub, GitLab, Bitbucket e outros provedores Git que aceitam HTTPS.

✔️ Autenticação Inteligente

Detecta automaticamente se deve usar apenas Token ou Usuário:Token baseada nas variáveis fornecidas.

✔️ Identidade Customizável

Os commits são feitos com o Nome e Email que você configurar nas variáveis, não ficando preso ao usuário do container.

✔️ Execução Automática e Loop
  1. Clona/Atualiza o repo.
  2. Roda o script main.py.
  3. Faz o commit e push das alterações.
  4. Aguarda INTERVALO_HORAS e repete.
✔️ Base moderna e leve

Imagem baseada em Python 3.14-slim + Git.


⚙️ Variáveis de Ambiente

VariávelObrigatóriaDescrição
GIT_TOKEN✅ SimPersonal Access Token (PAT). Não use senha de login!
GIT_AUTH_USER⚠️ DependeUsuário de login. Obrigatório para GitLab/Bitbucket. Opcional para GitHub.
REPO_URL✅ SimURL HTTPS completa do repositório (sem senhas).
REPO_PATH✅ SimCaminho interno onde o repo será clonado (Ex: /app/repo).
BRANCH❌ OpcionalBranch alvo (default: main).
GIT_USER_NAME❌ OpcionalNome que aparecerá no commit (default: Bot Git).
GIT_USER_EMAIL❌ OpcionalEmail que aparecerá no commit (default: [email protected]).
INTERVALO_HORAS✅ SimIntervalo em horas entre execuções.

📦 Exemplo usando Docker Compose

services:
  git-auto-runner:
    image: kelseysantos/salvosmain:latest
    container_name: git-auto-runner
    environment:
      # === AUTENTICAÇÃO ===
      - GIT_AUTH_USER=seu_usuario_git  # Obrigatório p/ GitLab. Opcional p/ GitHub.
      - GIT_TOKEN=ghp_seu_token_aqui   # Use Token (PAT), nunca a senha!

      # === IDENTIDADE ===
      - GIT_USER_NAME=Seu Nome Real
      - [email protected]

      # === REPOSITÓRIO ===
      - REPO_URL=https://github.com/usuario/seu-repositorio.git
      - REPO_PATH=/app/repo
      - BRANCH=main
      - INTERVALO_HORAS=2
      
    volumes:
      - dados_repo:/app/repo
    restart: unless-stopped

volumes:
  dados_repo:
    driver: local


▶️ Exemplo usando Docker Run

docker run -d \
  --name git-auto-runner \
  -e GIT_AUTH_USER="seu_usuario" \
  -e GIT_TOKEN="ghp_seu_token_aqui" \
  -e GIT_USER_NAME="Seu Nome" \
  -e GIT_USER_EMAIL="[email protected]" \
  -e REPO_URL="https://github.com/usuario/seu-repositorio.git" \
  -e REPO_PATH="/app/repo" \
  -e BRANCH="main" \
  -e INTERVALO_HORAS=2 \
  -v $(pwd)/dados_repo:/app/repo \
  kelseysantos/salvosmain:latest


🧬 Fluxo Interno da Aplicação

  1. Configura as credenciais de Git (user.name e user.email) no ambiente.
  2. Verifica se o diretório REPO_PATH existe.
  3. Não existe? → Clona o repositório injetando o Token na URL de forma segura.
  4. Existe? → Executa git pull para atualizar.
  5. Executa o script main.py (gera conteúdo e commita).
  6. Faz o Push para a branch configurada.
  7. Aguarda INTERVALO_HORAS e repete o ciclo.

🔒 Autenticação Segura

A autenticação ocorre via HTTPS injetando as credenciais apenas na memória durante a execução:

  • GitHub: https://<TOKEN>@github.com/...
  • GitLab/Outros: https://<USER>:<TOKEN>@gitlab.com/...

Importante: Desde 2021, o GitHub exige o uso de Tokens (PAT) em vez de senhas de conta. Certifique-se de gerar um token com permissão repo.


🚨 Troubleshooting

✔️ “Authentication failed” ou “Password authentication is not supported”

Você provavelmente colocou a senha da sua conta no campo GIT_TOKEN. Solução: Gere um Personal Access Token nas configurações do seu provedor Git (GitHub/GitLab) e use esse token no lugar da senha.


✔️ “Permission denied” ao clonar

Verifique se o seu Token tem permissão de:

  • repo (Full control of private repositories)
  • write_repository (no GitLab)

✔️ “Repository not found”

Confira se a URL em REPO_URL está correta e se o Token tem acesso a esse repositório específico (caso seja privado).


🧾 Licença

Distribuído sob licença MIT. Você pode modificar, usar e distribuir livremente.


Gostou?

Deixe um ⭐ no Docker Hub e no GitHub! Compartilhe essa imagem se ela te ajudou 🙏

Tag summary

Content type

Image

Digest

sha256:c9fadcf0d

Size

74.7 MB

Last updated

7 months ago

docker pull kelseysantos/salvosmain