2

Ich habe einen NSIS-Installer, den wir vorher nAnt Skripte gebaut verwenden, die einige Dateien um und laufen makensis.exe über eine exec Aufgabe kopieren Sie den Installer exe zu bauen. Nachdem das Nant-Skript abgeschlossen ist, habe ich die komplete Struktur für unsere CD und auch unseren Download.kontrollierte Integration von Änderungen mit Continuous Integration

tat ich nur eine get von Sourcesafe auf einem nicht verwendeten Desktop und als Build-Box verwenden, gibt kompilieren. Manchmal haben wir ein paar Dateien überprüft, die etwas Kritisches beheben. In diesen Fällen würde ich in die Build-Box gehen und sehr selektiv nur diese Dateien holen, um zu vermeiden, dass andere Dateien verändert werden, die wir noch nicht veröffentlichen können. Grundsätzlich bin ich in der Lage, der Entwicklung zu erlauben fortzufahren und selektiv bestimmte geänderte Dateien in das Installationsprogramm für die Veröffentlichung aufzunehmen.

Jetzt haben wir nicht mehr ein freies Feld und müssen von unserem Server aufzubauen. Also richte ich CI Factory ein, damit der Entwickler den Build ohne Remote-Zugriff auf den Server kicken kann. Das einzige Problem, mit dem ich mich abmühen muss, ist der beste Weg, weiterhin diese selektive Änderung zuzulassen. Das Standardkonzept von CI, das CI Factory implementiert, ist für interne Entwicklung "Kopf" in Ordnung. Ich möchte jedoch auch ein CCNet-Projekt einrichten, das nur bei Bedarf über einen Force-Build für diesen "öffentlichen Release" -Buildtyp ausgeführt wird.

Dies ist, was ich Gehirn bisher gestürmt habe, ohne sicher zu sein, wie gut das funktioniert, wenn überhaupt (immer noch herauszufinden, was CCNet und CI Factory sind). Das "öffentliche Release" CCNet Projekt config/build wäre so eingerichtet, dass es nicht bekommen würde. Änderungen würden nicht einen Build auslösen. Da das andere CCNet-Projekt, das die Standard-CI-Methode verwendet (wir nennen es das "CI-Projekt"), die neuesten Ergebnisse erhält, wenn Änderungen erkannt werden, können diese beiden Projekte nicht dasselbe Arbeitsverzeichnis verwenden. Die "public release" benötigt also eine andere Arbeitskopie, so dass ihre Dateien nicht aktualisiert werden, wenn der Build des CI-Projekts ausgelöst wird. Der Entwickler müsste in den Server, ein VSS, einsteigen, selektiv in die Arbeitskopie "public release" gelangen und dann einen Build durch CI Factory erzwingen.

Der Nachteil ist, ich sehe mit diesem ist
1) zu Remote in selektiv zu tun bekommt.
2) Ich habe keine Ahnung, wie ein einzelnes CI-Factory-Projekt zwei verschiedene Arbeitskopien des Produktordners haben kann, so dass jeder Projektkonfigurationsblock seinen eigenen hat.
3) Ich habe Angst vor dieser Art von Fremdheit, die dies verursachen könnte. Ich bin mir noch nicht ganz sicher, wie man einen Source-Control-Block im CCNet-Projekt-Config-Block spezifiziert, aber es verhindert, dass es beim Build-Vorgang ein spätestes bekommt. Ich bin immer noch dabei, herauszufinden, welche Dinge in Skripten sind, und kann leicht herausgenommen werden, ohne andere Dinge zu brechen, im Gegensatz zu dem, was nicht dazu gedacht ist, herumzuspielen und/oder nicht konfigurierbar ist.

Ich würde gerne hören, wie andere mit dieser Frage der selektiven Freigabe von Änderungen umgehen, wenn Sie eine ähnliche Situation haben. Ich bin auf VSS beschränkt, daher ist es meine unmittelbare Aufgabe, dies zu lösen, aber gleichzeitig interessiert mich, wie Sie das mit anderen Quellcodeverwaltungssystemen handhaben. Ich nehme an, Sie würden wahrscheinlich einen Zweig haben, der Ihr Zweig der neuesten Entwicklungen ist, und dann Änderungen in den Stamm zusammenführen, wann immer Sie sie veröffentlichen wollen? Ich traue VSS nicht wirklich zu, dass es verzweigt/zusammengeführt wird, und ich denke, die verzweigenden Konzepte könnten ein wenig zu viel Aufwand und Lernkurve für diesen Shop sein. Wie ich schon sagte, Geschichten mit anderen Quellcodeverwaltungssystemen wären für mich nützliches Wissen für die Zukunft.

Vielen Dank im Voraus.

Antwort

1

Sie benötigen eine verzweigende Struktur in Ihrem Repository, um dies zu erleichtern. So etwas wie die Release-Branch-Methode. Nur ausgewählte Personen können sich zu dieser Branche verpflichten (oder eine Freigabe/Stable dafür haben).Richten Sie Ihre manuellen CI-Starts ein, um vom Release Branch als Release Nightly Promotion zum Meilenstein oder Finale von dort zu gelangen. Ich mag die Idee nicht, Dinge manuell auf Ihrem Build-Rechner zu ändern. Richten Sie die Änderungen in der Versionskontrolle an einem sicheren Ort ein, um Ihre Version vorzubereiten und CI von dort erstellen zu lassen, aber manuell ausgelöst.

Überprüfen Sie diese branching patterns. Ich schlug vor, C3, Codeline-pro-Release, oft als Release Branching.

Heres ein article auf VSS-Verzweigung, die eine Verknüpfung zum Zusammenführen enthält.

Diese question sieht ähnlich aus.

Vielleicht könnten Sie zu einer anderen Quellcodeverwaltungssystem mit besserer Unterstützung für diese Art von Sache verschieben. Irgendwelche Vorschläge von MS Leuten da draußen?

+0

Danke. Also, mit VSS wäre Ihre Technik eine Arbeitskopie sowohl der "Kopf" und der "öffentlichen Veröffentlichung" zu haben, und selektiv Dateien von meinem Kopf Arbeitskopie in die öffentliche Freigabe Arbeitskopie kopieren und einchecken? Ich habe Merge in VSS nie verwendet, nicht sicher, ob es gut ist. – AaronLS

+0

Ich habe vss schon lange nicht mehr verwendet, aber mein Vorschlag würde wahrscheinlich die Möglichkeit erfordern, Änderungen vom Stamm an die Version zu verschmelzen, sobald sie verfügbar sind, und Änderungen von der Freigabe in den Stamm zu portieren, falls nötig. –

Verwandte Themen