continuous-integration

___ tag123jenkins ___ Jenkins ist ein Open-Source-Tool für die kontinuierliche Integration, das in Java geschrieben wurde und Pakete für Linux, Mac OS X, Windows, FreeBSD und OpenBSD enthält. Das Projekt wurde von Hudson abgezweigt. ___ qstnhdr ___ Wie konfiguriere ich Jenkins, um eine Benachrichtigungs-E-Mail zu senden, wenn ein Slave offline geht? ___ tag123slave ___ hilf uns dieses Wiki zu bearbeiten ___ tag123kontinuierliche Integration ___ Continuous integration (CI) ist das Erstellen und automatisierte Testen des gesamten Softwareprodukts in einem häufigen Zeitplan: mindestens einmal am Tag, oft mehrmals am Tag und manchmal so oft wie nach jedem Einchecken in das Versionskontrollsystem. ___ qstntxt ___

Wie konfiguriert man Jenkins, um eine Benachrichtigungs-E-Mail zu senden, wenn ein Slave offline geht? Ich habe einen Windows Server in der Cloud. Da läuft ein Jenkins-Slave, der einen nächtlichen Build ausführt, aber manchmal geht der Slave offline und ich muss wissen, wann er offline geht. Wie kann ich konfigurieren, Jenkins senden Sie mir eine E-Mail-Benachrichtigung in diesem Fall?

    
___ answer16487689 ___

Die Einstellung, die Lars erwähnt, scheint nicht mit einer Standard-Jenkins-Installation (v1.514) zu kommen. Ich sehe es mit dem Mail-Watcher-Plugin

    
___ tag123nightlybuild ___ Automatisches Erstellen von Software, um sicherzustellen, dass keine Fehler in der Quellcodeverwaltung begangen wurden, die die Erstellung verhindern würden. Besonders nützlich, wenn viele Benutzer die Software selbstständig ändern. In der Regel nachts, weil die Commit-Aktivität reduziert ist oder weil das Bauen sehr lange dauert. Sobald die Software erstellt wurde, wird sie möglicherweise getestet. ___ answer15767201 ___

In der Slave-Konfiguration gibt es die Option "Benachrichtigen, wenn sich der Online-Status des Knotens ändert". Wenn Sie es überprüfen, können Sie E-Mail-Adressen eingeben, um benachrichtigt zu werden, wenn der Slave online / offline geht.

    
___
2
Antworten

Packen Sie die Chrome-Erweiterung auf den Server mit nur der Befehlszeilenschnittstelle

Ist es möglich Chrome-Erweiterung mit Schlüssel (* .pem) auf Server nur mit CLI (Ubuntu-Server) zu packen?     
09.09.2013, 08:08
6
Antworten

HTTP FEHLER: 503 ... Zugriff auf / jenkins. Grund: Service nicht verfügbar

Ich versuche, Jenkins in Jetty / webapps bereitzustellen. Ich habe jenkins.war in dieses Verzeichnis kopiert, Jetty neu gestartet, aber wenn ich auf Ссылка zeige, warnt das System: HTTP-FEHLER: 503 Problem beim Zugriff auf / jenkins. G...
02.02.2012, 11:44
8
Antworten

Nicht funktionierende JUnit-Tests löschen oder auskommentieren?

Ich baue gerade ein CI-Build-Skript für eine Legacy-Anwendung. Es gibt sporadische JUnit-Tests, und ich werde eine JUnit-Ausführung aller Tests in den CI-Build integrieren. Ich frage mich jedoch, was ich mit den 100-fachen Fehlern machen soll, d...
23.03.2010, 16:05
3
Antworten

GitLab CI und MsBuild (mit Tests)

Ich bin dabei, meine SVN-Repositories zu Migrieren mit GitLab zu migrieren. Nun habe ich gesehen, dass es eine kontinuierliche Integrationsimplementierung mit GitLab CI gibt und ich will es einfach ausprobieren. Ich habe bereits einen Runn...
06.10.2015, 08:16
1
Antwort

___ qstntxt ___

Ich bin Teil eines kleinen Teams (4 - 5), die an einem Embedded-Linux-Projekt arbeiten. Wir verwenden Buildroot und die Linaro Toolchain, um für unser Ziel zu bauen. Wir verwenden git für die Versionskontrolle und Jenkins für nächtliche Builds.

Das ist unser erster Versuch bei einem Projekt wie diesem und es ist mir nicht gelungen, Ressourcen zu finden, die Modelle für die Entwicklung mit dieser Art von Umgebung beschreiben.

Im Moment, nach einem nächtlichen Build, erstelle ich einen Tarball des Buildroot 'output' -Verzeichnisses, das die U-Boot-Images und das Root-Dateisystem enthält. Dies kann direkt von der Jenkins 'Archiv' Seite für den letzten erfolgreichen Build heruntergeladen werden.

Einige von uns werden an der Entwicklung auf niedrigerer Ebene arbeiten und einige an der Benutzerraumentwicklung (QT). Unser Problem ist, zu entscheiden, welcher der effizienteste / rationellste Ansatz die Entwicklung in einer solchen Umgebung ist, da die Menschen in verschiedenen Bereichen innerhalb des Projektumfangs arbeiten werden. Die Userland-Leute könnten den Tarball mit allem herunterladen und ihre Anwendungen in die Rfs integrieren, um auf dem Board zu laufen und zu debuggen, aber wie sollen wir mit der Arbeit auf der unteren Ebene der Entwicklung umgehen? Grundsätzlich, wie sollten wir die Artefakte an das Team verteilen? Ich schätze alle Gedanken sehr.

    
___ tag123embedded ___ Embedded bezieht sich auf eingebettete Systeme, die Bereiche wie Mikrocontroller- / DSP-Firmware-Programmierung, Echtzeitsysteme, elektronische Schnittstellen, Hardwaretreiber, serielle Buskommunikation usw. umfassen. ___ tag123kontinuierliche Integration ___ Continuous integration (CI) ist das Erstellen und automatisierte Testen des gesamten Softwareprodukts in einem häufigen Zeitplan: mindestens einmal am Tag, oft mehrmals am Tag und manchmal so oft wie nach jedem Einchecken in das Versionskontrollsystem. ___ tag123build ___ Das Konvertieren von Quellcodedateien in eigenständige Softwareartefakte, die auf einem Computer ausgeführt werden können ___ answer11185484 ___

Ich habe kürzlich einige Zeit damit verbracht, die Build-Umgebung für ein OpenEmbedded-basiertes Linux-Projekt neu zu strukturieren. Ich habe keine direkten Erfahrungen mit Buildroot, aber ich erwarte, dass OpenEmbedded dem, was Sie verwenden, ähnlich ist. Ich werde mein Setup beschreiben und mit etwas Glück finden Sie hier etwas Nützliches ...

Das Problem

Es gibt drei Softwarekomponenten, die separat installiert werden können (d. h. unabhängig voneinander): der Bootloader (u-boot); der Kernel (Linux); und das Dateisystem-Image. Unser Endprodukt wird mit einem verpackten Release dieser drei Komponenten ausgeliefert. Das heißt, eine Version von U-Boot, Linux und Dateisystem-Image, die QA-getestet wurden und von denen bekannt ist, dass sie zusammenarbeiten. Es ist jedoch möglich, eine der Komponenten unabhängig zu aktualisieren (z. B. ein neues Kernel-Image zu installieren), um eine Kombination von Softwarekomponenten zu erstellen, die nicht zusammen getestet wurden.

Dieses Problem besteht auch für Benutzerbereichsanwendungen. Sobald ein Dateisystemimage in das Ziel installiert wurde, ist es möglich, einen oder mehrere Benutzerraum-Binärdateien unabhängig von anderen Dateisystemobjekten zu aktualisieren (vorausgesetzt, Ihr Dateisystem ist nicht schreibgeschützt). Woher wissen Sie, dass die spezifische Kombination von Benutzer-Space-Anwendungen, die jetzt installiert sind, zusammenarbeiten kann? Wie kann ich sicher sein, dass die Kombination von Binärdateien, die in dieser bestimmten Einheit laufen, dieselbe Kombination von Binärdateien ist, die QA-zertifiziert wurden? Woher weiß ich, welche "Version" die Software ist?

Das andere Problem, das ich lösen musste, das gleiche Problem, das Sie in Ihrer Frage beschrieben haben, ist, wie man Entwicklern, die an verschiedenen Teilen des Software-Stacks arbeiten (Kernel, Root-Dateisystem, Qt-Apps usw.), zusammenarbeiten kann.

Eine Lösung

Ich habe dies und das "Version" -Problem folgendermaßen angesprochen:

  1. Speichern der rootfs und sysroot in einem Git-Repository.
  2. Liberale Verwendung von Git-Submodulen.

Das Speichern der root-Dateisystem- und System-Stammdateien des Ziels in einem git-Repository hat mich anfangs in die falsche Richtung gerammt (Speichern von Ausgabedateien in der Versionskontrolle, was!?!), bietet aber folgende Vorteile:

  1. Ein JFFS2-Dateisystem-Image (rootfs + unsere benutzerdefinierten User-Space-Anwendungen) kann so lange eingebaut werden, wie es erforderlich ist, um die User-Space-Anwendungen zu erstellen (d. h. mehrere Sekunden). Ein Entwickler muss nicht mehr zuerst die rootfs von Grund auf neu aufbauen (was bei OpenEmbedded mehrere Stunden dauert).
  2. Alle anderen Vorteile der Versionskontrolle (Änderungen an den rootfs können im Laufe der Zeit leicht verfolgt werden, Tags für die Veröffentlichung, Zweige usw.).
  3. Ich habe anfangs erwogen, die rootfs und sysroot als Tarballs zu speichern, aber ich mag die Idee von git tracking-Änderungen pro Datei.

Die Verzeichnisstruktur sieht ungefähr so ​​aus (einige Namen wurden geändert, um Unschuldige zu schützen):

%Vor%

Jedes markierte Verzeichnis [*] ist ein Git-Repository und jedes Git-Repository ist ein Submodul seines Elternteils.

Die Build-Umgebung wird von einem Makefile der obersten Ebene initialisiert, das im Wesentlichen eine rekursive %code% und %code% verwendet. Alle Entwickler würden tun:

%Vor%

Ein User-Space-Entwickler kann dann sofort erstellen:

%Vor%

Der Maintainer des Dateisystems kann rootfs aktualisieren:

%Vor%

Software Versionierung

Vom Makefile der obersten Ebene ( %code% ) ist es möglich, alle Softwarekomponenten (Kernel, U-Boot, Dateisystem-Image) zu erstellen. Mit den folgenden git-Befehlen exportiert das Makefile an alle Sub-make-Prozesse eine einzige Umgebungsvariable (z. B. %code% ), die die aktuelle Softwareversion beschreibt. Die Version ist entweder ein Tag aus dem Git-Repository oder ein SHA (z. B. %code% , %code% oder %code% ).

%Vor%

Wenn sogar eine einzelne Datei in einem der Unterverzeichnisse des Projekts geändert wurde, dann ist %code% immer %code% . Diese einzelne Variable %code% wird dann als Kompilierzeitkonstante an alle Builds übergeben (U-Boot-, Kernel-, Userspace-Anwendungen usw.).

Zur Laufzeit akkumuliert eine benutzerdefinierte Benutzerbereichsanwendung die %code% -Werte aller Komponenten, und wenn sie alle denselben Wert melden, wird diese Zeichenfolge zur offiziellen Version, die vom Produkt gemeldet wird. Wenn sich auch nur ein %code% -Wert von den anderen unterscheidet, dann wurde der Software-Stack nicht aus dem gleichen SHA der obersten Ebene erstellt und kann nicht in die Wildnis entlassen werden (zu QA zum Testen, zur Produktion für die Herstellung usw.).

Wenn eine Softwarekomponente nicht aus dem Makefile der obersten Ebene (z. B. %code% ) erstellt wird, ist die %code% für diese Komponente undefiniert und der resultierende Softwarestapel für "nur interne Verwendung". Das heißt, eine "Freigabe" aller Softwarekomponenten kann nur durch den Aufbau aus dem Makefile der obersten Ebene erfolgen.

Als Referenz meldet Linux %code% über eine benutzerdefinierte Datei in procfs, u-boot-Berichte über die Linux-Befehlszeile ( %code% ) und jede Benutzerbereichsanwendung über Interprozesskommunikation.

Zusammenfassung

Ein Vorbehalt.Ich habe diese Build-Umgebung erst vor einem Monat entwickelt, kann also keine Behauptungen für ihre Robustheit machen, aber für den Moment scheint es zusammenzuhalten ...

Wenn Sie bestimmte Fragen oder Punkte haben, die Sie klären möchten, werde ich gerne meine Antwort aktualisieren.

    
___ tag123jenkins ___ Jenkins ist ein Open-Source-Tool für die kontinuierliche Integration, das in Java geschrieben wurde und Pakete für Linux, Mac OS X, Windows, FreeBSD und OpenBSD enthält. Das Projekt wurde von Hudson abgezweigt. ___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___

Ich bin Teil eines kleinen Teams (4 - 5), die an einem Embedded-Linux-Projekt arbeiten. Wir verwenden Buildroot und die Linaro Toolchain, um für unser Ziel zu bauen. Wir verwenden git für die Versionskontrolle und Jenkins für nächtliche Builds....
22.06.2012, 12:34
2
Antworten

Fehler bei der Integration von HTML mit testacularjs

Wie integriere ich (html) Fixtures mit testacular? Gibt es eine Empfehlung für DOM-basierte Tests oder ist es ein Anti-Pattern? Ziel: Ich versuche, ein benutzerdefiniertes Modul zu testen, das den DOM-Baum analysiert und eine neue Datenstrukt...
22.10.2012, 20:21
2
Antworten

Wie definiere ich Unterdrückungs-Definitionen für checkstyle, die sowohl mit ant als auch mit eclipse arbeiten

Ich verwende in einem Projekt Checkstyle und ich habe einen SuppressionFilter in meiner Checkstyle-Konfiguration definiert. Ich verwende Apache ant, um automatische Builds über Continuous Integration zu erstellen. Meine Probleme ergeben sic...
31.03.2009, 13:41
2
Antworten

"Datei oder Assembly konnte nicht geladen werden" beim Erstellen mit Teamstadt

Ich stoße auf ein Problem mit Komponententests auf unserem Build-Server Team City (8.0.4) - der Code builds & amp; führt alle Tests lokal über Resharper und nCrunch aus. Aber wenn ich auf dem Server laufe, erhalte ich den folgenden Fehler, ob...
16.01.2014, 14:33
1
Antwort

Unterschied zwischen Team Foundation Server und Team Services

Was ist der Unterschied zwischen Microsoft Team Foundation Server und Microsoft Team Services? Sind die Team Services auch für die fortlaufende Integration geeignet und können sie zusammen mit einem selbst gehosteten Git Service verwendet wer...
04.01.2016, 15:29
8
Antworten

Irgendeine Erfahrung mit einer Continuous Integration Appliance?

Wir haben einen Continuous Integration Server, auf dem Hudson CI läuft. Ich denke darüber nach, im Büro eine LCD-Anzeige mit verschiedenen Build-Statistiken anzubringen und bin gespannt, was andere zusammen haben. Ich denke gerade darüber n...
12.09.2009, 02:50