Mein Unternehmen integriert CI / CD. Bisher haben wir CI nach meinem Verständnis implementiert. Derzeit wird die CI-Pipeline ausgeführt, wenn ein Entwickler Code in unser Git-Repo überträgt.
Derzeit umfasst unsere CI-Pipeline die Erstellung des Projekts und die statische Code-Analyse, um sicherzustellen, dass es unseren Codierungsstandards entspricht. Wir werden als nächstes Tests implementieren. Die Erstellung und statische Code-Analyse dauert derzeit ca. 3 Minuten. Nach dem, was ich gelesen habe, ist die sofortige Behebung von Problemen für CI / CD von entscheidender Bedeutung. Ich gehe davon aus, dass der Betrieb der Pipeline etwa 10 Minuten dauern kann, wenn wir Unit-Tests hinzufügen.
Meine Frage ist also, wann ein Entwickler eine Pull / Merge-Anfrage stellt, sollte er warten, bis die CI-Pipeline abgeschlossen ist, oder einfach mit der nächsten Aufgabe fortfahren und zurückkehren, um Pipeline-Probleme zu beheben, falls vorhanden? Oder sollten sie sitzen und zusehen, wie die Pipeline läuft?
quelle
Ich empfehle, Ihr Bestes zu geben, um sicherzustellen, dass die Pipeline weniger als 10 Minuten dauert. Sie können Ihre Tests parallel ausführen, um dies zu ermöglichen. Wie Jonas antwortete, können sie Zeit damit verbringen, eine Pull-Anfrage zu erstellen (während die Pipeline läuft).
Das Wechseln des Kontexts ist schlecht für die Produktivität. Ich empfehle dem Entwickler, diese Zeit zu nutzen, um an anderen Dingen zu arbeiten, die mit der gerade vorgenommenen Änderung zusammenhängen. Möglicherweise gibt es eine Dokumentation, die diesbezüglich aktualisiert werden könnte. Wenn es eine bemerkenswerte Funktion ist, könnte er ein kurzes GIF erstellen, das zeigt, wie man damit arbeitet. Selbst wenn sie sich ihre Codeänderung noch einmal ansehen, können sie überlegen, wie sie sie beim nächsten Mal verbessern können. Diese Zeit kann auch zur Überprüfung von Pull-Anforderungen und Codeänderungen anderer Entwickler verwendet werden.
Wenn sie in diesen 10 Minuten ein anderes Feature entwickeln, wird es wahrscheinlich länger als 10 Minuten dauern, bis sie darauf zurückkommen, und die Arbeit wird in ihrem Kopf weniger frisch sein. Wenn das CI dann ausfällt, fällt es ihnen schwerer, sich daran zu erinnern, was möglicherweise schief gelaufen ist, und den Code zu reparieren.
quelle
Ok, nehmen wir an, Sie haben ein Versionskontroll-Tool als Git- und CI-Tool Jenkins. Also erstellt Dev einen Feature-Zweig für ein Problem. Sie haben eine Multibranch-Pipeline oder einen Workflow in Ihrem CI-Tool, der diesen Feature-Zweig beim nächsten Scan erkennt und die CI-Schritte ausführt.
Dinge, die sichergestellt werden müssen, sind:
Vor dem Erhöhen von PR / MR ist der CI-Job grün. Wenn es nicht grün ist, sollte PR / MR nicht angehoben werden. Offensichtlich kann der Entwickler andere Aufgaben ausführen und dann zurückkommen und das Problem bei dieser Aufgabe beheben. Dies ist seine Wahl, abhängig von der Aufgabenpriorität. Sie können sogar verhindern, dass PR ausgelöst wird, indem Sie die CI-Parameter überprüfen. (Wenn Sie Ihrem Entwickler nicht so sehr vertrauen und er PRs für fehlerhafte Builds kontinuierlich erhöht.)
Sobald PR ausgelöst wurde, überprüft ein Code-Prüfer und führt ihn zusammen, wenn alles in Ordnung ist. Code Reviewer kann jeder andere Entwickler sein. Es liegt in seiner Verantwortung, den Code zu überprüfen, um festzustellen, ob er den Kriterien von "Definition of Done" entspricht. DoD ist hauptsächlich ein agiler Begriff, aber agil und DevOps gehen Hand in Hand.
Nach dem Zusammenführen des Codes sollte das CI für den Hauptzweig grün sein. Wenn nicht, sollte der Code zurückgesetzt und das Problem behoben werden, da der Hauptzweig im Allgemeinen auch in Umgebungen bereitgestellt wird und ein Nicht-Rollback bedeutet, dass die gesamte Umgebung beschädigt wird.
Offensichtlich werden Post-Build-Aktionen den Committer darüber informieren, dass Hey, Sie haben den Build abgebrochen, damit Entwickler ihre anderen Aufgaben ausführen können. Sie erhalten trotzdem E-Mails.
quelle