2017-07-25 2 views
0

Im OpenShift docs for Git Source input, sagt er folgendes:Wie kann ich eine BuildConfig Git-Quellenreferenz als eine GitHub-Pull-Anforderung festlegen?

If the ref field denotes a pull request, the system will use a git fetch operation and then checkout FETCH_HEAD.

Allerdings gibt es kein Beispiel, das ich von finden können, was als ref setzen muss für eine Pull-Anforderung zu entsprechen. Ich kann nicht herausfinden, was es sein sollte, und jede Veränderung, die ich versucht habe, ich einen Fehler wie diese:

error: build error: error: pathspec 'pull/128/head' did not match any file(s) known to git.

Variationen, die ich versucht habe:

  • refs/ziehen/128/Kopf
  • Zug-/128/Kopf
  • Zug-/128
  • PR-128
  • Herkunft/pr/128/Kopf
  • Herkunft/pr/128/fusionieren

Jede Hilfe dankbar, danke!


Edit: Aktualisierung mit neuen Informationen basierend auf Grahams Vorschlag in der comment:

I am not sure if it shows anything extra or not for that part, but set BUILD_LOGLEVEL=9 as environment variable for the build configuration.

BUILD_LOGLEVEL=9 Einstellung zeigt:

Cloning "https://github.com/<org>/<repo>" ... 
I0725 13:43:32.297019 1 source.go:134] git ls-remote --heads https://github.com/<org>/<repo> 
... 
git ls-remote --heads https://github.com/<org>/<repo> 
... 
git checkout <branch> 

Dazu alle regulären Zweige werden angezeigt, aber nicht die PR-Köpfe (dies ist mit jedem Repo reproduzierbar ... entfernen Sie die --heads Option und Sie werden alle Tags und PR-Köpfe auch sehen).

source.go:236] Cloning source from https://github.com/<org>/<repo> 
... 
git clone https://github.com/<org>/<repo> /tmp/docker-build989528171 
... 
git checkout origin/pr/128/merge 
... 
repository.go:427] Error executing command: exit status 1 
... 
helpers.go:116] error: build error: error: pathspec 'origin/pr/128/head' did not match any file(s) known to git. 

Ich bin mir nicht sicher, wie es etwas zu geben, dass es für die checkout akzeptieren würde. Ich sehe keinen Weg, um es jene Köpfe zu einem gewissen Refspec lokal zu holen (wie, wie Jenkins git fetch --tags --progress https://github.com/<org>/<repo>.git +refs/pull/*/head:refs/remotes/origin/pr/*


bearbeiten zB nicht 2: weitere Informationen über Dinge hinzugefügt, die ich versucht habe

Ich habe jetzt auch versucht, eine .gitconfig Datei zu dem Geheimnis hinzuzufügen, das ich in der BuildConfig gesetzt habe (dieses Geheimnis hat auch die grundlegenden Auth-Credentials, um von GitHub über https klonen zu können.) Das Einzige in der .gitconfig ist ein refspec, um zu versuchen, die PR-Kopfreferenzen zu holen:

[remote "origin"] 
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/* 

Dies schien auch nicht zu helfen, auch wenn ich mit ref Wert von origin/pr/128/head versuchen, so scheint es, dass Refspec nicht abgerufen wird.

Wie mhutter in den Kommentaren suggeriert, scheint die Weitergabe des sha1 des eigentlichen Commit mit --commit zu bekommen, was ich will, aber in dem was ich verstehe als "ignoriere den Wert des ref, und verwende stattdessen" Workaround Weg .

+1

Ich bin mir nicht sicher, ob es für diesen Teil etwas extra oder nicht zeigt, aber setze '' BUILD_LOGLEVEL = 9'' als Umgebungsvariable für die Build-Konfiguration. –

+1

Haben Sie 'Herkunft/pr/1674/merge' probiert? Ich implementierte meinen PR-Builder in OpenShift in ähnlicher Weise, ich verwende den Zielzweig in der BuildConfig und verwende dann 'oc start-build -commit – mhutter

+0

@GrahamDumpleton danke für den Vorschlag! Ich habe basierend darauf mehr Informationen zum Beitrag hinzugefügt. –

Antwort

1

Es gab einen Fehler um Zug Refs mit bis vor kurzem: https://bugzilla.redhat.com/show_bug.cgi?id=1447495

Sofern Sie Ursprung 3.6.0-rc.0 verwenden, dass das ist wahrscheinlich, was Sie zu treffen.

Die Dokumente spiegeln den Herkunftszustands-Master wider.

"refs/pull/58/head" sollte das richtige Format sein (sobald Sie eine Version von OpenShift mit dem Update haben).

+0

Vielen Dank Ben, das scheint genau das Verhalten zu sein, das ich sehe. Für jeden, der dies liest, scheint das Übergeben des Commits mit "--commit" oder ähnlichem eine angemessene Lösung zu sein, bis Sie mit dem Update zu der neuen Version wechseln. –

Verwandte Themen