Vra

Ons is tans met behulp van'n ietwat ingewikkeld ontplooiing opstel wat behels'n afgeleë SVN bediener, 3 SVN takke vir DEV, STADIUM, en PROD, die bevordering kode tussen hulle deur middel van kolle, ens.Ek wonder wat doen jy vir ontplooiing in'n klein dev span situasie?

Was dit nuttig?

Oplossing

stam vir ontwikkeling, en 'n tak (produksie) vir die produksie dinge.

Op my plaaslike masjien, ek het 'n Virtual wat verwys na die stam tak, om my veranderinge te toets.

Enige verbind tot stam snellers 'n pleeg haak dat 'n svn uitvoer en sync na dev URL die aanlyn-bediener se doen - so as die site is stackoverflow.com dan updates hierdie haak outomaties dev.stackoverflow.com

Toe ek gebruik svnmerge om gekies kolle smelt van stam tot produksie in my plaaslike kassa. Ek het 'n Virtual weer op my plaaslike masjien wat verwys na die produksie-tak.

Wanneer ek die saamgesmelte veranderinge aan die produksie-tak te pleeg, weer 'n SVN uitvoer haak updates die produksie (live) uitvoer en die webwerf is live!

Ander wenke

As ek gewerk het in 'n klein dev span (klein beteken my, nog 'n programmeerder en die baas), dit was nogal die chaotiese gemors. Maar ons het gevind dat die toeken van 'n "hekwagter" tipe proses vir ons gewerk.

Die hekwagter was die persoon wat die meeste werk op die jeug gedoen het (in hierdie geval, ek het 2 projekte i ontwikkel van die grond af, hy het soos 4).

In beginsel, wanneer hy moes werk op my projekte, hy wil my vertel dat hy werk doen in kennis te stel, sou ek seker maak die bewaarplek is up-to-date en beboude, dan sou hy af te trek, maak sy veranderinge , dan pleeg. Hy sou my laat weet dat dit gedoen is, sou ek af te trek, te bou en te ontplooi. As daar DB veranderinge was ons het 'n gids DB Change met al die skrifte dat die DB sou reg te stel.

Dit is natuurlik het 'n baie gate in dit, maar die proses vir ons gewerk, en het ons uit die bou van oor mekaar.

Ek het nie enige probleme met die gemeenskaplike tags / takke / stam organisasie.

Algemene voortdurende ontwikkeling gebeur in kattebak.

Onderhoud van 'n vrystelling in produksie gebeur in die toepaslike tak release.

Wysigings aan tak wat nog stam relevant is saamgevoeg is vry te stel.

Wanneer 'n nuwe weergawe is gereed vir ontplooiing dit is gemerk van stam, dan 'n tak is gemaak op grond van wat tag. Die vrystelling tak nuwe nagegaan uit na die bediener, parallel met die huidige weergawe. Wanneer dit tyd is om oor te skakel, is die paaie jongleren ( "mv appdir appdir.old && mv appdir.new appdir").

Ontwikkelaars ondersteun die produksie release dan svn hul werk kopie oorskakel na die nuwe tak, of doen 'n vars afhandeling van dit.

Drie takke net klink soos ekstra werk.

Environmental verskille hanteer kan word deur met verskillende weergawes van die betrokke lêers in die kattebak. maw database.yml & database.yml.prod. Die ontplooiing proses moet omgewingsvriendelik bewus wees en net die per-omgewing lêers oor die standaard kinders kopieer.

'n eenvoudige stam tak bevat die mees onlangse kode, dan sny 'n tak wanneer ons gaan woon. Dit lyk mooi doeltreffend te werk. Jy kan maklik gaan na die vorige tak wanneer die huidige tak wat jy sny vir die live stelsel misluk. Ook, is dit maklik om foute reg te stel op die tak wat tans leef, en sedert die tak doeltreffend sterf wanneer jy 'n nuwe een te sny, daar is net ooit 1 real-tak wat jy nodig het om te werk aan (en dan saam te smelt fixes vandaar na die live tak).

Ons moenie takke vir stellasies web-verwante dinge gebruik; net vir die toets van eksperimentele dinge wat 'n lang tyd sal neem (lees: meer as 'n dag) om terug te saam te smelt in kattebak. Die stam, in 'n deurlopende integrasie 'styl, verteenwoordig 'n (hopelik) werk, huidige stand.

Dus, die meeste veranderinge te kry verbind reguit na stam. A CruiseControl.NET bediener sal outomaties by te werk op 'n masjien wat ook loop IIS en het up-to-date afskrifte van alle hulpbronne om die ekstra webwerf se beskikbare, so die webwerf ten volle kan wees, skoon getoets in-huis. Na die toets, is die lêers opgelaai na die openbare bediener.

Ek sou nie sê dit is die ideale benadering, maar dit is eenvoudig (en dus geskik is vir ons relatief klein personeel) en relatief veilig is, en werk net mooi.

Stam bevat die huidige "primêre" ontwikkeling kodebasis.

'n ontwikkelaar sal dikwels die skep van'n individu tak vir enige medium tot lang-termyn projek wat kon slang die stam kodebasis en kry in die weg van die ander devs.Wanneer hy voltooi hy sal saamsmelt terug in die stam.

Ons skep'n tagged-release elke keer as ons die druk van die kode van die produksie.Die gids in /tags is net die weergawe nommer.

Om te sit aan die produksie-ons doen'n SVN Uitvoer te Stellasies.Wanneer dit is bevredigend ons gebruik'n eenvoudige rsync om uit te rol om die produksie trosse.

Ek raai die boek (tans in rowwe sny) Deurlopende Delivery , wat 'n hele proses beskryf vir die bestuur van sagteware aflewering, gebaseer op deurlopende beginsels integrasie (onder andere).

Ek laaik sterk die tak en voeg benadering, soos dit baie morsig kan kry, en is redelik verkwistende sedert beland jy spandeer tyd op aktiwiteite wat nie eintlik enige nuwe waarde hoef te lewer. Jy het alreeds ontwikkel, getoets, en sodra vaste jou kode, hoekom skep 'n situasie (die kopiëring van die kode na 'n ander tak) wat jy nodig het om hierdie werk te herhaal?

In elk geval, die manier om te verhoed dat vertakking en samesmelting is om jou verbintenis artefakte bou van stam, en die gebou artefakte te bevorder (eerder as bron) as dit verby toets, stellasies, ens Op hierdie manier is jy 100% seker dat die ding jy sit in produksie is dieselfde ding wat jy het getoets.

As jy het verskillende funksies wat nodig mag vrygelaat te word op verskillende skedules, die verandering van jou benadering tot hoe jy te implementeer (maak funksies instel, of beter nog modulêre) kan jou help om 'n enkele stam ontwikkeling te hou.

Ons gebruik release vertakking - dit lyk meer doeltreffende vir ons as die funksie vertakking ons besig was om te wees.

Moenie verskillende takke vir die verskillende omgewings.

Ek persoonlik werk plaaslik (ontwikkeling), en voeg by / vasstelling funksies en wanneer ek dink dit is gereed vertrou ek aan stam (produksie). Op produksie bediener Ek doen net 'n svn update.

Ek werk met 'n soortgelyke situasie te doen wat jy tans het. Ek is getaak met die vind van 'n "beter" oplossing en dit het iets in die trant van die volgende.

Die lewe tak verteenwoordig die bedieners in hul huidige toestand.

Enige ontwikkelingswerk gedoen moet word in 'n tak wat uit live. Dit kan 'n een persoon halfuur job of 'n jaar lank 'n multi-span projek wees. So dikwels as wat graag veranderinge te leef kan saamgevoeg word in hierdie ontwikkeling takke.

Voordat 'n stuk werk gaan woon, sal wysigings live weer saamgesmelt en dit is gemerk as 'n potensiële release. Hierdie weergawe is getoets op die stellasies omgewing en as dit verby die toets van die nuwe lewe is geneem uit die tag.

Dit is moontlik om 'n paar stukkies van die werk saam te smelt in een release as wat werk beter.

Dit beteken dat dit is redelik maklik om te ontwikkeling takke op hoogte te bly met live en as 'n stuk werk in ontwikkeling laat val daar 'n minimale opruim te doen.

Om te verander van werk op 'n projek om 'n ander 'n ontwikkelaar kan eenvoudig svn skakel hul plaaslike werksomgewing na 'n ander tak.

Een van die probleme wat ons met die stelsel gehad het as wat jy beskryf is dat DEV redelik vinnig verouderd met PROD kan kry, sodat jy nie die ontwikkeling teen die lewe en dit is nie maklik om te kruis afhanklikhede sien totdat stadium. Bogenoemde oplossing los hierdie kwessies terwyl hy nog redelik liggewig oorblywende.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top