Seit 4 Jahren programmiere ich mit Eclipse (für Java) und Visual Studio Express (für C #). Die genannten IDEs schienen immer jede Möglichkeit zu bieten, die ein Programmierer sich wünschen könnte (natürlich im Zusammenhang mit der Programmierung).
In letzter Zeit habe ich von etwas gehört, das "Build Tools" genannt wird. Ich habe gehört, dass sie fast in jeder Art von realer Entwicklung eingesetzt werden. Was sind sie genau? Welche Probleme sollen sie lösen? Wieso habe ich sie in den letzten vier Jahren nie gebraucht? Sind sie eine Art Befehlszeilen-IDEs?
Build-Tools dienen im Allgemeinen dazu, Quellcode in Binärdateien umzuwandeln - sie organisieren Quellcode, setzen Kompilierungsflags, verwalten Abhängigkeiten ... einige von ihnen lassen sich auch in den laufenden Komponententest integrieren, statische Analysen durchführen und eine Dokumentation erstellen.
Eclipse oder Visual Studio sind ebenfalls Build-Systeme (aber eher eine IDE), und für Visual Studio ist es das zugrunde liegende msbuild, Visual Studio-Projektdateien unter der Haube zu analysieren.
Der Ursprung aller Build-Systeme scheint das berühmte "make" zu sein.
Es gibt Build-Systeme für verschiedene Sprachen:
Normalerweise erstellen Sie Systeme entweder mit einer domänenspezifischen Sprache (make, cmake) oder mit xml (ant, maven, msbuild), um einen Build anzugeben. Der aktuelle Trend besteht darin, eine echte Skriptsprache zum Schreiben von Build-Skripten zu verwenden, z. B. lua for premake und groovy for gradle. Der Vorteil der Verwendung von Skripten besteht darin, dass sie viel flexibler sind und es Ihnen auch ermöglichen, eine Reihe von Standards zu erstellen APIs (als Build-DSL).
quelle
Der Erstellungsprozess ist ein Prozess zum Kompilieren Ihres Quellcodes für Fehler mithilfe einiger Erstellungswerkzeuge und zum Erstellen von Erstellungen (die ausführbare Versionen des Projekts sind). Wir (hauptsächlich Entwickler) nehmen einige Änderungen am Quellcode vor und checken diesen Code ein, damit der Erstellungsprozess stattfinden kann. Nach dem Erstellungsprozess werden zwei Ergebnisse angezeigt: 1. Erstellen Sie entweder PASSES und Sie erhalten eine ausführbare Version Ihres Projekts (Build ist bereit). 2. Es schlägt fehl und Sie erhalten bestimmte Fehler und Build wird nicht erstellt.
Es gibt verschiedene Arten von Erstellungsprozessen wie: 1. Nächtlicher Build 2. Gated Build 3. Kontinuierlicher Integrations-Build usw.
Build-Tools helfen und automatisieren den Prozess der Erstellung von Builds.
* Kurz gesagt, es handelt sich um eine Softwareversion im Pre-Release-Format, die vom Entwickler oder Entwicklungsteam verwendet wird, um Vertrauen in das Endergebnis des Produkts zu gewinnen, indem das Produkt kontinuierlich überwacht und Probleme frühzeitig während des Entwicklungsprozesses gelöst werden. * *
quelle
Dies sind verschiedene Arten von Prozessen, mit denen Sie Ihre Builds fertigstellen können.
1. Continuous Integration Build:In diesem Fall checken hauptsächlich Entwickler ihren Code ein und direkt nach dem Einchecken wird ein Build zum Erstellen der letzten Änderungen initiiert, sodass wir wissen sollten, ob die vom Entwickler vorgenommenen Änderungen direkt nach dem Einchecken funktioniert haben oder nicht. Dies wird für kleinere Projekte oder Komponenten der Projekte bevorzugt. Für den Fall, dass mehrere Teams mit dem Projekt verbunden sind oder eine große Anzahl vorhanden ist. Von Entwicklern, die an demselben Projekt arbeiten, wird dieses Szenario schwierig zu handhaben, als gäbe es 'n' nein. Wenn Check-ins und Builds an bestimmten Punkten fehlschlagen, ist es sehr schwierig zu verfolgen, ob der gesamte Bruch aufgrund eines Problems oder mehrerer Probleme aufgetreten ist. Wenn also die älteren Probleme nicht richtig behoben werden, ist es sehr schwierig, die späteren zu ermitteln Mängel, die nach dieser Änderung aufgetreten sind.
2. Gated Check-In-Builds: Bei dieser Art des Eincheckens wird ein Build direkt nach dem Einchecken initiiert, wobei die Änderungen in einem Regalsatz beibehalten werden. Wenn der Build erfolgreich ist, wird das Einchecken in das Regalset festgeschrieben, andernfalls wird es nicht an den Team Foundation Server festgeschrieben. Dies ergibt ein etwas besseres Bild des kontinuierlichen Integrationsaufbaus, da nur die erfolgreichen Check-ins festgeschrieben werden dürfen.
3. Nächtliche Builds: Dies wird auch als geplante Builds bezeichnet. In diesem Fall planen wir die Ausführung der Builds für eine bestimmte Zeit, um die Änderungen zu erstellen. Alle vorherigen nicht festgeschriebenen Änderungen gegenüber dem letzten Build werden während dieses Buildprozesses erstellt. Dies wird praktiziert, wenn wir mehrmals einchecken möchten, aber nicht jedes Mal einen Build wünschen, wenn wir unseren Code einchecken, damit wir eine feste Zeit oder einen festen Zeitraum haben können, in dem wir den Build für die Erstellung des eingecheckten Codes initiieren können.
Weitere Details zu diesen Builds finden Sie unten.
Gated-Check in Builds
Kontinuierliche Integration wird erstellt
Nächtliche Builds
quelle
Sie haben sie verwendet - IDE ist ein Build-Tool. Für die Kommandozeile können Sie Dinge wie verwenden
make
.Die Leute benutzen Kommandozeilen-Tools für Dinge wie einen nächtlichen Build - also hat der Programmierer am Morgen mit einem Kater festgestellt, dass der Code, mit dem er an den neuesten Builds der Bibliotheken herumgespielt hat, nicht funktioniert!
quelle
"... es ist sehr schwer zu verfolgen, was gebaut werden muss" - Build-Tools helfen dabei nicht. Sie müssen wissen, was Sie bauen möchten. (Zitiert aus der Antwort von Ritesh Gun)
"Ich habe gehört, dass sie fast in jeder Art von realer Entwicklung eingesetzt werden" - Aus irgendeinem Grund arbeiten Softwareentwickler gerne in großen Unternehmen. Sie scheinen unklarere Arbeitsrichtlinien für jeden Einzelnen zu haben, der dort arbeitet.
"Wieso habe ich sie in den letzten vier Jahren nie gebraucht". Wahrscheinlich, weil Sie ein erfahrener Programmierer sind.
Pseudo, Meta. Ich denke, Build-Tools bieten überhaupt keinen wirklichen Nutzen. Es ist nur dazu da, ein Gefühl der Sicherheit zu schaffen, das sich aus schlechten Unternehmenspraktiken, mangelnder Ausrichtung und einer schlechten Führung der Softwarearchitektur ergibt, die zu schlechten tatsächlichen Kenntnissen des Projekts führt. Sie sollten in Ihrem Projekt niemals Build-Tools (zum Testen) verwenden müssen. Zufällige Tests mit mangelnden Kenntnissen des Softwareprojekts durchzuführen, hilft überhaupt nicht.
Sie sollten einem Projekt niemals etwas hinzufügen, ohne zu wissen, wozu es dient und wie es mit den anderen Komponenten funktioniert. Komponenten können separat funktionieren, aber nicht zusammenarbeiten. (Dies liegt in der Verantwortung des Software-Architekten, den ich übernehme).
Was ist, wenn dem Projekt 4-5 Komponenten hinzugefügt werden? Sie fügen eine 6. Komponente hinzu. Zusammen mit der ersten hinzugefügten Komponente könnte es alles vermasseln. Keine Automatik würde helfen, das zu erkennen.
Es gibt keine andere Abkürzung als zu denken, zu denken, zu denken.
Dann gibt es den automatischen Download aus Repositories. Warum sollten Sie das jemals tun wollen? Sie müssen wissen, was Sie herunterladen und was Sie dem Projekt hinzufügen. Wie erkennen Sie Änderungen in Versionen der Repositorys? Du musst wissen. Sie können nichts "automatisch".
Was wäre, wenn wir Fahrräder und Babytransporter mit verbundenen Augen und einem Stock testen und zufällig damit herumschlagen würden? Das scheint die Idee zu sein, Tools zu testen.
Es tut mir leid, dass es keine Verknüpfung https://en.wikipedia.org/wiki/Scientific_method und https://en.wikipedia.org/wiki/Analysis gibt
quelle