6

Ich habe ein Gradle Projekt, das von einem Hauptprojekt und 2 anderen besteht die includeFlat Richtlinie aufgenommen werden. Jedes dieser 3 Projekte hat sein eigenes Repo auf GitHub. Um es zu erstellen, checke ich alle 3 Projekte in einen gemeinsamen Top-Ordner und dann cd in das Master-Projekt und führe gradle build aus. Und es funktioniert super!Gebäude mehr Gradle Projekte in Jenkins mit AWS CodePipeline

Jetzt muss ich die resultierende App AWS EB (Elastic Beanstalk), die sich zudem hervorragend implementieren ist, wenn ich das Artefakt lokal produzieren und sie dann manuell bereitstellen. Ich möchte den Prozess automatisieren, also versuche ich es mit CodePipelines + Jenkins einzurichten, wie in this document beschrieben, das für Gradle angepasst wurde.

Das Problem ist, dass, wenn I angeben 3 Sources im Rohr ich mit meinen Projekten auf extrahierten Ende voneinander ein Durcheinander in Jenkins Arbeitsbereich zu schaffen. Ich muss irgendwie jedes Projekt so konfigurieren, dass es in seinem eigenen Verzeichnis innerhalb Jenkins Arbeitsbereich ausgegeben wird und ich sehe einfach keinen Weg (zumindest in UI)

Dann natürlich, auch wenn ich erreiche was ich will Ich brauche irgendwie zu cd in das Hauptverzeichnis zu laufen gradle build und wieder bin ich mir nicht sicher, wie man das macht

PS Große Vorschläge von @Phil aber leider scheint, dass CodePipeline does not currently support Git Submodule oder Unterbäume

+0

Könnten Sie nicht so etwas wie git Submodule verwenden? https://git-scm.com/docs/gitsubmodules – Phil

+0

Interessante Idee, obwohl ich viel eine flache Projektstruktur – Bostone

+0

es vorziehen, aber noch nicht haben Sie für jedes Projekt getrennt repos? Sie könnten eine andere übergeordnete Projekt erstellen, die sie alle in ihren eigenen Verzeichnissen als Submodule und verwenden Sie diese für Ihre Build – Phil

Antwort

0

Ich würde gemeinsame Build starten, wenn Änderungen auf einem der 3 Repos passiert. Mit 5 Minuten Verzögerung, um einen einzelnen Build zu haben, auch wenn Änderungen an mehr als einem Repo vorgenommen werden.

Ich kann keinen guten Weg sehen, um mit der Bereitstellung auf andere Weise als mit eb deploy umzugehen ... alte Weise ... Bitte installieren Sie aws Werkzeuge auf Ihrem jenkins Maschine. Erstellen Sie den Deployment-Job, der beim erfolgreichen Build ausgelöst wurde. Und setzen Sie ein Bash-Skript, das die Implementierung durchführt. Bitte geben Sie weitere Details zu Ihrer Bereitstellung an. Auf diese Weise kann ich mit dem Bereitstellungsskript helfen.

+0

Jenkins läuft bereits auf EC2. Ich bin nicht klar, wohin du damit gehst? Ich denke, ich habe mein Problem klar genug dargestellt: 3 GitHub-Projekte, 1 Master, 2 Teilprojekte (includeFlat). Ich denke, was Sie vorschlagen, ist ziemlich genau das, was ich in meinem Kommentar zum Hauptbeitrag beschreibe: Haben Sie einen Auslöser für die beteiligten Projekte, ignorieren Sie den ursprünglichen Code und tun Sie scm vom Gradle-Skript (Bash in Ihrem Fall). An dieser Stelle ist es nicht die Mühe wert für mich, leider – Bostone

+0

Auf Ihrem jenkins installieren aws Tools, mit 'eb' Dienstprogramm.Erstellen Sie einen Job, der Ihr Artefakt bereitstellt. Oder auf andere Weise - tun Sie auf jenkis, was Sie manuell tun. Vielleicht mit Skripten, nicht in aws Konsole, aber das ist nur anderes Werkzeug. –

Verwandte Themen