Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
20.06.2006, 11:27
K-Putt



Momentan arbeite ich an einer Software, die folgendes ermöglichen soll:
* Anzeige des Inhaltes eines SVN-Repositories
* Auswahl von bestimmten files
* Senden (deployen) der Files an einen Master-Server, der die Files dann ins richtige Verzeichnis am Webserver schiebt

Warum das ganze: Die Kreditkartenrichtlinien von z.b. VISA sind extrem streng, und untersagen unter anderem dem Entwickler den Zugriff auf einen Produktiv-Server.

Nun muss also ein System her, mit dem man dennoch die Files aus dem SVN auf den gewünschten Webserver bringen kann.

Der Master-Server, der die Files am Webserver empfängt, wurde bereits durch einen Kollegen verwirklicht und funktioniert.

Ich muss im Prinzip nur noch eine Web-GUI schreiben, die mir den Inhalt eines SVN-Repositories auflistet, wo man dann die gewünschten Dateien auswählen && deployen kann.

Lange Rede kurzer Sinn: Wie gehe ich das auslesen des SVN-Servers am besten an?
Per HTTP zugreifen, und einfach nur die zurückgegebenen Informationen auswerten (regex)?
Wäre möglich, erscheint mir allerdings etwas unsauber...evtl. gibts da ne andere Möglichkeit, direkt via TCP/IP zuzugreifen, und ein bestimmtes File anzufordern?

Oder kennt jemand gar ein Projekt, welches meine Anforderungen ungefähr implementiert?

Google spuckt zu dem Thema meist nur Infos über SVN selbst aus, aber die helfen mir nicht wirklich weiter.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
001
20.06.2006, 18:20
dp
Administrator


ich weiss nicht, ob ich das problem richtig verstanden hab, aber...

warum nicht einfach ein webinterface mit einem button "update", was dann svn update in der produktivumgebung faehrt? oder von einem branch fuer die produktivumgebung, wenn man das selektiv machen will.

--


Dieser Beitrag wurde am 20.06.2006 um 19:03 von dp bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
20.06.2006, 23:30
K-Putt



In der Produktivumgebung selbst läuft ja kein SVN...es sollen nur die Files aus einem SVN-Repo in die Produktiv-Umgebung gespielt werden.

Momentan löse ich das jetzt mit einer Pear Extension, also einem Wrapper für den SVN Client.
Der Wrapper ruft je nach OS die /usr/bin/svn oder \svn.exe auf, übergibt die notwendigen Argumente um die Files von der SVN-Binary geliefert zu bekommen, und gibt mir die Ergebnisse als Array zurück, mit welchem ich dann arbeite.

Läuft im Endeffekt halt alles über system/exec/popen calls, also auch nicht die feine englische art...

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
003
21.06.2006, 01:35
theDon



Subversion hat Bindings fuer Perl, Python, Ruby und Java. Da sollte doch etwas fuer dich dabei sein...

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
004
21.06.2006, 17:41
K-Putt



Leider nein...

Mittlerweile klappt das mit dem Binary-Wrapper recht gut, dabei wirds erst mal bleiben.
Sollte sich mal ne bessere Möglichkeit finden, auch kein Problem, das ist doch das schöne an OO / modularer Programmierung...

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
005
22.06.2006, 13:09
oxff



- Du machst einen Branch /myproj/branches/productive-1.2/
- Die Entwickler Mergen Changes entsprechend in den Branch, um sie zu deployen
- Auf dem Productive Server laeuft in einem Cronjob oder Manuell einfach ein `svn up`, dass dir das Productive auf den letzten Branch-Status updated.

mhm, wie dp eigentlich schon sagte..

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
006
22.06.2006, 19:56
K-Putt



Hrm, also das muss ich jetzt genauer wissen.

Bin nicht so der SVN Checker, was es mit dem Branch auf sich hat - keine Ahnung.

So wie ich das eben verstanden habe: Die Entwickler spielen den Inhalt ihres /myproj/trunk/ Ordners in einem /myproj/branches/branchname/ Ordner, und genau dessen Inhalt ziehe ich dann mit dem entsprechenden Kommando am Produktiv-Server herunter.

Nur: Wie sieht das am Server dann aus?
* Werden dort Files, die im Branch Ordner nicht vorhanden sind, gelöscht?
* Werden dort die .SVN Ordner etc. ebenfalls angelegt?
* Wird bei jeder Ausführung alles am Produktiv-Server überschrieben, gehen die Verzeichnisrechte verloren?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 22.06.2006 um 19:56 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
23.06.2006, 08:22
theDon



Zitat:
Werden dort die .SVN Ordner etc. ebenfalls angelegt?
Kommt drauf an. Wenn du `svn up' benutzt, ja. Wenn du `svn export' nutzt, nein.

Zitat:
Werden dort Files, die im Branch Ordner nicht vorhanden sind, gelöscht?
`svn up' loescht alles, was auch im Repository geloescht wurde. `svn export' loescht gar nichts.

Zitat:
Wird bei jeder Ausführung alles am Produktiv-Server überschrieben, gehen die Verzeichnisrechte verloren?
`svn up' ueberschreibt nur die geaenderten Dateien, `svn export' ueberschreibt alles, was im Repository ist.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
008
23.06.2006, 08:54
K-Putt



Das ist natürlich alles nicht das wahre...

Ich will einerseits, dass Files, die im SVN gelöscht wurden, auch im Filesystem gelöscht werden.
Andererseits will ich keine SVN Ordner etc.

Weiters soll nicht alles aus dem SVN-Ordner ins Produktivsystem...z.b. eine config-Datei sollte nicht überschrieben werden.

Somit wirds wohl erst mal so implementiert wie geplant...eine GUI für die SVN Files, wo selbige ausgewählt werden können.
Nach der Auswahl werden diese gepackt, an den Produktivserver übertragen, dort entpackt, und die alten Versionen der files in ein Archiv geschoben, inkl. Logging wer wann was gemacht hat.

Wie ich diese Kreditkarten-Richtlinien doch hasse...die Entwickler vom Produktivsystem auszusperren...

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
009
23.06.2006, 09:59
TheTinySteini



Mach nen frischen svn export in ein Verzeichnis auf'm Produktivsystem. Und dann ein kleines Script drumrum was ueber eine Dateiliste sicherstellt, dass Rechte richtig gesetzt sind (ich meine zum Teil geht das aber auch mit SVN). Dann tauscht du die Verzeichnisse auf'm Produktivsystem und rennst vortan mit der neuen Version. Config-Dateien falls vorhanden vorher rueberkopieren.
Nebenbei bemerkt sollten SVN-Repositories nie so angelegt werden dass bei nem update/checkout die lokalen Config-Dateien ueberschrieben werden. Daher immer nur sowas wie main.conf.dist ins SVN legen, und dann lokal nach main.conf kopieren und anpassen.

[edit]
Apropos Kreditkartenrichtlinie: Effektiv haben mit deinem System die Entwickler doch auch Zugriff auf den Server? Sie koennen beliebigen Kram hochladen, insbesondere auch ne Datei die ihnen die Kundendaten auf den heimischen Rechner schickt *shrugs*.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy


Dieser Beitrag wurde am 23.06.2006 um 10:01 von TheTinySteini bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
23.06.2006, 14:31
K-Putt



TTT:
Deine Methode klingt gut, aber was, wenn das Skript z.b. Log-Dateien erstellt?
Davon weiß mein Deployment-Skript nix, folglich wird das alte Verzeichnis am Produktivserver ausgetauscht, und die Log-Files gehen alle verloren bzw. befinden sich an einem Ort, wo sie nicht sein sollen.

Wegen den Kreditkartenrichtlinien: Genau aus dem Grund muss am Produktiv-Server, zu dem Zeitpunkt wo die Files aktualisiert werden, für jedes File mitgespeichert werden, wann es durch wen ersetzt wurde, bzw. muss die alte Version gebackupt werden.

Die Entwickler haben zwar indirekt zugriff auf den Server, aber es ist nachvollziehbar, wenn jemand Scheiße gebaut hat.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
011
23.06.2006, 14:40
theDon



Zitat:
K-Putt postete
Genau aus dem Grund muss am Produktiv-Server, zu dem Zeitpunkt wo die Files aktualisiert werden, für jedes File mitgespeichert werden, wann es durch wen ersetzt wurde, bzw. muss die alte Version gebackupt werden.
Das ist circa ganz genau das, was SVN macht.

Zitat:
[...] aber was, wenn das Skript z.b. Log-Dateien erstellt?
Davon weiß mein Deployment-Skript nix, folglich wird das alte Verzeichnis am Produktivserver ausgetauscht, und die Log-Files gehen alle verloren bzw. befinden sich an einem Ort, wo sie nicht sein sollen.
Man kann das durchaus in dem Skript behandeln, so dass die erhalten bleiben.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
012
23.06.2006, 19:38
K-Putt



SVN ist mir letzendlich aber zu wenig Transparent - ich will und muss auf die Aktionen Einfluss haben, und das geht nur, wenn ich das Skript durch und durch kenne.

Zitat:
Man kann das durchaus in dem Skript behandeln, so dass die erhalten bleiben.
Aber nicht individuell genug, so dass es bei beliebig vielen Projekten funktioniert, egal wie die Ordnerstruktur auch immer aussehen mag.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
013
24.06.2006, 10:03
oxff



Alter bist du K-Putt... SVN ist ja quasi fast in die Richtung designed, du brauchst nur ein Cleanup-Skript und in bestimmten Intervallen Exporte. Aber bau du mal deine ranzige Software mit N SQL Injection Vulns, weil du da irgendein sickes User Management reinbaust (Web 2.0)...

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
014
24.06.2006, 14:22
default



mounte das verzeichnis fuer die svn db! von dem dev server mit sshfs, und fahr dann auf dem webserver trac oder sowas

checkouts synchen bringt nix, weil man nur nen checkout hat, und keine db die man in viewsvn viewcvs oder trac schmeissen koennte damit das auch brauchbar ist

--

Du musst Deine Bandbreite verbreitern, damit du breiter wirst von der Bandbreite her und ein breiteres Publikum ansprechen kannst.

zum Seitenanfang zum Seitenende Profil || Suche
015
24.06.2006, 18:29
K-Putt



Zitat:
0xFF postete
Alter bist du K-Putt... SVN ist ja quasi fast in die Richtung designed, du brauchst nur ein Cleanup-Skript und in bestimmten Intervallen Exporte. Aber bau du mal deine ranzige Software mit N SQL Injection Vulns, weil du da irgendein sickes User Management reinbaust (Web 2.0)...
Was soll denn der Scheiß Kommentar?
Hältst du mich für nen Anfänger oder was?

Ich habs echt nicht nötig, mich vor dir bezüglich meiner Qualifikationen bzw. meiner Anstellung zu rechtfertigen, also geh davon aus, dass ich mein Handwerk beherrsche.

default:
Danke für den Tipp, die ganzen SVN Begriffe sagen mir aber mehr oder weniger nix.
Dafür kannst du natürlich auch nix, werd nun erst mal meine SVN Kenntnisse vertiefen.

[edit]
Eure Methoden sind btw. nicht möglich, weil man auf einen von SVN Exportierten Ordner keine Cleanup-Funktionen anwenden kann.
Wie denn auch - das SVN hat in dem Ordner keine Informationen hinterlegt, folglich weiß es nicht, welche Files gelöscht werden dürfen, und welche nicht.

Wär zwar toll, wenn man das mit SVN-only Funktionen lösen könnte, ich glaub es jedoch nicht.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 24.06.2006 um 19:42 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
016
25.06.2006, 12:15
default



kannst du evtl mal konkret erklaeren was auftrag von dem teil is?
willst du code/scripte aus dem svn server auf dem visa server laufen lassen, oder willst du da nen svnviewer haben?

--

Du musst Deine Bandbreite verbreitern, damit du breiter wirst von der Bandbreite her und ein breiteres Publikum ansprechen kannst.

zum Seitenanfang zum Seitenende Profil || Suche
017
25.06.2006, 14:01
K-Putt



Nun gut, dann nochmals von vorne.

[Entwickler-PC]
Der Entwickler arbeitet lokal an seinen Projekten, und überträgt den aktuellen Stand in bestimmten Intervallen ins SVN.
Jedes Projekt ist eine Web-Anwendung.

[Server A: SVN-Repository]
Beinhaltet sämtliche Projekte, an denen verschiedenste Personen arbeiten

[Server B: Produktiv-Server für ein Projekt]
Auf dem Server läuft nur ein bestimmtes Projekt, Beispiel: Eine Kunden-Verwaltung.

Die PCI-Richtlinien, die unter anderem VISA vorschreibt, sagen auf ihren ~ 20 Seiten nun unter anderem folgendes aus:
Kein Entwickler darf Zugriff auf Server B haben, weder auf die Datenbank noch auf das Lokale Filesystem. Ansonsten könnte er dort Kundendaten auslesen, die geschützt sein müssen.

Nun kommt Server C ins Spiel
[Server C: Deployment-Skript]
Die Web-Anwendung auf diesem Server listet nun den Inhalt des SVN-Repositories (von Server A) auf.
Nun soll der Entwickler eine beliebige Anzahl an Dateien auswählen können, die anschließend auf Server C übertragen werden.

Während dieses Vorgangs müssen die Files auf Server C, bevor sie überschrieben werden, in ein Archiv gesichert werden, inkl. der Infos welche Datei wann von welchem Entwickler überschrieben wurde.
Überträgt nun ein böser Entwickler ein Skript auf Server C, welches Kundendaten auflistet, ist sofort nachvollziehbar, welcher Entwickler das war, und der bekommt die Konsequenzen zu tragen.

Sämtliche Entwickler haben also indirekt Zugriff auf die Produktiv-Server, nur wird eben jede Aktion geloggt, und das außerhalb vom SVN, damit auch wirklich niemand diese Logfiles verwerfen kann.

Natürlich gibt es letztendlich wieder einen Admin, der Zugriff auf Server C hat, und Schaden anrichten könnte - man kann sich schließlich nicht komplett von den eigenen Servern aussperren.

Aber die Richtlinien der Kreditkarten-Institute sind nun mal so, und werden von deren Kontrolleuren von Zeit zu Zeit vor Ort abgenommen, und bei nicht-einhalten dieser Richtlinien hagelt es Strafen in 5-stelliger Höhe, bzw. im schlimmsten Fall wird einem die Lizenz entzogen, was natürlich fatal wäre.

Darum muss dieses (in meinen Augen absolut unnötige und schwachsinnige) System durchgezogen werden.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 25.06.2006 um 14:01 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
018
25.06.2006, 15:23
default



und was schliesst das aus, dass man nen scipt auf den webserver schiebt, dass einem zugriff erlaubt, um die logfiles zu loeschen?

--

Du musst Deine Bandbreite verbreitern, damit du breiter wirst von der Bandbreite her und ein breiteres Publikum ansprechen kannst.

zum Seitenanfang zum Seitenende Profil || Suche
019
25.06.2006, 17:51
K-Putt



Zitat:
default postete
und was schliesst das aus, dass man nen scipt auf den webserver schiebt, dass einem zugriff erlaubt, um die logfiles zu loeschen?
Zugriffsberechtigungen?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 25.06.2006 um 17:52 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche