Esiste un file di configurazione stabilito per l'esecuzione di SubGit come servizio upstart?


0

Sembra che il upstart sia il modo giusto per chiudere le cose e avviarle durante il processo di riavvio, ma non sono riuscito a trovare i file di configurazione con una ricerca della documentazione di SubGit e una ricerca generale del web.

I comandi start e stop nel mio caso sono semplici come segue, ma sia il nome utente che il percorso repo dipendono dall'installazione dell'utente:

sudo -u subgit subgit install /dev.git    # start
sudo -u subgit subgit uninstall /dev.git  # stop

Sto per implementare una copia funzionante di /etc/init/subgit.conf (da non confondere con SVN_REPOS / conf / subgit.conf in SubGit) e pubblicheremo le risposte migliori in sospeso.

Nota: SubGit è una particolare implementazione di bridging Subversion e Git.

Risposte:


0

Sebbene il comando di avvio sia semplice, chiama un programma java che sembra bifare alcune volte, causando problemi di avvio. Per fortuna, johnjamesmiller postato una soluzione per questo tipo di problema a StackOverflow.

Mentre il seguente sembra fornire un wrapper upstart per i comandi subgit con parametrizzazione dell'istanza (che consente l'esecuzione di più repository sul server), l'utilizzo di un lavoro basato su un'istanza rende poco pratico l'avvio / arresto automatico. Invece, ho aggiunto i comandi di avvio per i miei repository a /etc/rc.local (mostrato in fondo).

# subgit.conf - subgit job file

description "service for running SubGit mirroring"
author "Randy Sage"

# Note: because subgit forks too many times, normal upstart controls do not work
# Instead, use the method at https://stackoverflow.com/a/12217085/527489

# Run with subgit/gitshare ids, since we use shared gitshare access to repos
setuid subgit
setgid gitshare

instance $repo

pre-start exec subgit install $repo  # actually start

script  # dummy process tracking java app
  while ps aux |  grep "java.*$repo" | grep -v grep >/dev/null ; do
    sleep 1
  done
end script

post-stop script
  if ps aux |  grep "java.*$repo" | grep -v grep >/dev/null ; then
    subgit shutdown $repo
  fi
end script

Ecco i comandi /etc/rc.local:

...
start subgit repo=/matlab.git
start subgit repo=/dev.git

exit 0

Si noti che i servizi avviati in questo modo vengono visualizzati sotto initctl list, ma no service --status-all:

rsage@subgit:~$ initctl list | grep subgit
subgit (/dev.git) start/running, process 2974
subgit (/matlab.git) start/running, process 2507
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.