2014-06-11 22 views
7

Ho configurato un nuovo Gitlab su CentOs su /opt/gitlab-6.9.2-0/apps/gitlab/ e creato un nuovo repository in un gruppo di consegna continua. Il percorso completo è /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-satellites/continuous-delivery/cd-test . C'è solo un file sotto questo percorso che è README.txt.Come posso aggiungere ganci a gitlab?

Quello che cerco di ottenere è creare un nuovo file quando qualcuno invia modifiche al server. Qui di seguito sono quello che ho fatto sul server:

  1. Creare post-update e update file sotto .git/hooks/' each file creates a new file using echo "testo" >> file_name`
  2. loro chmod per 775.

Quando spingo cambia da il mio locale al server, non è stato creato alcun file. Quindi, vorrei sapere cosa devo fare per risolvere questo problema.

Update 1

ho aggiunto post-receive e post-update-repositories percorso come VonC suggested

[[email protected] hooks]# pwd 
/opt/gitlab-6.9.2-0/apps/gitlab/repositories/continuous-delivery/cd-test.git/hooks 
[[email protected] hooks]# ll 
total 48 
-rwxrwxr-x. 1 git git 452 Jun 10 06:01 applypatch-msg.sample 
-rwxrwxr-x. 1 git git 896 Jun 10 06:01 commit-msg.sample 
-rwxrwxr-x. 1 git git 44 Jun 11 00:37 post-receive 
-rwxrwxr-x. 1 git git 41 Jun 11 00:38 post-update 
-rwxrwxr-x. 1 git git 189 Jun 10 06:01 post-update.sample 
-rwxrwxr-x. 1 git git 398 Jun 10 06:01 pre-applypatch.sample 
-rwxrwxr-x. 1 git git 1642 Jun 10 06:01 pre-commit.sample 
-rwxrwxr-x. 1 git git 1281 Jun 10 06:01 prepare-commit-msg.sample 
-rwxrwxr-x. 1 git git 1352 Jun 10 06:01 pre-push.sample 
-rwxrwxr-x. 1 git git 4972 Jun 10 06:01 pre-rebase.sample 
lrwxrwxrwx. 1 git git 57 Jun 10 06:01 update -> /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-shell/hooks/update 
-rwxrwxr-x. 1 git git 3611 Jun 10 06:01 update.sample 

Entrambi file contiene uno script che aggiunge una nuova riga a un file esistente, "post-receive-2" >> /var/log/hooks_test.log. quindi ho trasferito le modifiche dalla mia macchina locale al server. Ma ancora non aggiunge il testo.

Update 2

Script in post-ricezione è sbagliato, non ha avuto eco. Dopo aver aggiunto echo (echo "post-receive-2" >> /var/log/hooks_test.log allora funziona come previsto!

+0

possibile duplicato di [File post-ricezione personalizzato utilizzando GitLab] (http://stackoverflow.com/questions/14317452/custom-post-receive-file-using- gitlab) –

risposta

7

Ciò sarebbe dovuto al fatto che quei repository satellitari non sono quelli che dovresti premere, quindi il loro hook non viene attivato quando pensi (cioè, non quando qualcuno sta spingendo al server GitLab)

PR 6185 introdotto la documentazione panoramica archicture

/home/git/gitlab-satellites -... ne siamo andati repository per le richieste di unione e file di modifica dal web UI Questo può essere trattata come una directory dei file temporanei

Il repository satellitare è utilizzato dall'interfaccia web per la modifica dei repository e il wiki che è anche un repository git.

È necessario aggiungere il gancio nei repository nudi ~git/repositories.

Or (aggiornamento Q4 2014, da GitLab 7.5+ Nov 2014), è possibile utilizzare custom hooks (invece di webhooks), come mentioned below da Doka.

I git git personalizzati devono essere configurati sul file system del server GitLab.
Solo gli amministratori del server GitLab saranno in grado di completare queste attività. Si prega di esplorare i webhook come opzione se non si ha accesso al filesystem.

  • Sul server GitLab, accedere alla directory del repository del progetto.
    Per l'installazione manuale, il percorso è in genere /home/git/repositories/<group>/<project>.git.
    Per Omnibus, il percorso è in genere /var/opt/gitlab/git-data/repositories/<group>/<project>.git.
  • Creare una nuova directory in questa posizione denominata custom_hooks.
  • All'interno della nuova directory custom_hooks, creare un file con un nome corrispondente al tipo di gancio.
    Per un hook pre-receive il nome del file deve essere pre-receive senza estensione.
  • Rendi eseguibile il file hook e assicurati che sia di proprietà di git.
+0

Ho appena provato ad aggiungere file al repository nudo ma ancora non funziona. Ho aggiunto più informazioni sulla domanda. – Anonymous

+0

@Anonimo non si aggiungono file a un repository nudo: si tratta di un repository * bare * (solo .git, nessun file). vedi http://stackoverflow.com/a/24115534/6309. Il tuo hook dovrebbe creare file in un percorso separato. Ma quel gancio deve essere dichiarato nel repository nudo per essere attivato da una spinta. – VonC

+0

Oops, ho trovato il problema. Il comando che ho scritto sul post-ricevimento era sbagliato. – Anonymous

2

Al gitlab-shell versione 2.2.0 (che richiede GitLab 7.5+), amministratori GitLab possibile aggiungere ganci git personalizzato a qualsiasi progetto GitLab. Quindi è necessario aggiornare e seguire le istruzioni da qui: http://doc.gitlab.com/ce/hooks/custom_hooks.html

+0

Interessante. Mi ero dimenticato di quella risposta precedente che poteva beneficiare di quella nuova funzionalità.L'ho modificato di conseguenza per maggiore visibilità. +1 – VonC

1

Vedere Custom Git Hooks - GitLab Documentation per il modo ufficiale di farlo.

Riepilogo: A partire da gitlab-shell versione 2.2.0 (che richiede GitLab 7.5+), gli amministratori di GitLab possono aggiungere git personalizzati a qualsiasi progetto GitLab.

  1. Scegliere un progetto che richiede un hook git personalizzato.
  2. Sul server GitLab, accedere alla directory del repository del progetto. Per un'installazione dal sorgente il percorso è in genere/home/git/repository/<gruppo>/<progetto> .git. Per Omnibus installa il percorso è in genere/var/opt/gitlab/git-data/repository/<gruppo>/<progetto> .git.
  3. Creare una nuova directory in questa posizione denominata custom_hooks.
  4. All'interno della nuova directory custom_hooks, creare un file con un nome corrispondente al tipo di hook. Per un hook di pre-ricezione, il nome del file deve essere pre-ricevuto senza estensione.
  5. Rendi eseguibile il file hook e assicurati che sia di proprietà di git.
  6. Scrivere il codice per rendere la funzione hook git come previsto. I ganci possono essere in qualsiasi lingua. Assicurati che lo "shebang" in alto rifletta correttamente il tipo di lingua. Ad esempio, se lo script è in Ruby, lo shebang sarà probabilmente #!/usr/bin/env ruby.

Ma vedere il link sopra per i documenti ufficiali. Quanto sopra è un'istantanea come era oggi ...

+0

Mi dispiace @Doka, non ho visto la tua risposta. Abbiamo trovato le stesse informazioni. Lascerò la mia risposta duplicata poiché ha più informazioni ... –

Problemi correlati