WN

WN (https://www.wn.se/forum/index.php)
-   Allmänt (https://www.wn.se/forum/forumdisplay.php?f=2)
-   -   Utveckla i dev -> flytta till production (https://www.wn.se/forum/showthread.php?t=1057326)

secag 2013-03-24 14:40

Utveckla i dev -> flytta till production
 
Jag ser att många utvecklar i DEV och sen förflyttar över detta till PRODUCTION. Jag undrar över hur dom gör det, antar att dom har 2 kopior av sidan men hur dom ligger vet jag inte. Finns det dom har kör www.minsida.se/dev där bara developers har åtkomst?

Hur gör man se om man vill släppa en ny update av sidan? Måste finnas ett enkelt sätt att förflytta alla uppdaterade och nya filer till production? Även filer man tagit bort i dev borde också tas bort i production? Flyttar dom bara över allting som ligger i devmappen till den andra?

Dimme 2013-03-24 14:44

Använd en git repo för versionshantering och sedan använd git hooks för att automatiskt flytta till production.

http://net.tutsplus.com/tutorials/to...ith-git-hooks/

EDIT: Om du inte orkar se hela klippet: http://stackoverflow.com/questions/2...using-git-push

Conny Westh 2013-03-25 01:12

Man kan ha hur många "nivåer" man tycker passar. Jag har jobbat med flera olika varianter, exempelvis:

1 - Lokalt på utvecklarens egen PC (primär utvecklingsmiljö)
2 - dev.[domän].[tld] (utvecklarensegen systemtest)
3 - test.[domän].[tld] (acceptanstest)
4 - prodtest.[domän].[tld] (mer eller mindre identisk testmiljö med produktion)
5 - www.[domän].[tld] (Produktionsnivå)

Man anpassar detta efter vad man behöver.

Som kuriosa kan nämnas att Siemens har (i alla fall haft) 17 olika nivåer på vissa kritiska projekt (typ pacemaker).

BarateaU 2013-03-25 07:51

Proof of concept "poc", och acceptanstest då.

linusoleander 2013-03-25 11:56

Git med Github som kodhost och capistrano for att deploya till servern. Git hooks kanns aningen for primitivt.

Alex 2013-03-25 13:08

Om man inte vill blanda in ruby-gems så duger Git hooks väldigt väl. Annars är det som linus ovan mig säger capistrano som gäller.

"cap deploy" så deployar du senaste som ligger pushat i master-repot. Dessutom sköter den rollbacks och sånt rätt bra också, så skulle du få ut en kodbas i produktion som inte riktigt klarar alla tester så är det bara att köra "cap deploy:rollback" så får du versionen tidigare.

Kör du dessutom tags på dina deploys blir det ännu mer överskådligt.

pelmered 2013-03-25 17:17

Att synkronisera filerna mellan utvecklingsmiljön och produktion är oftast ganska okomplicerat. Det finns ju massvis med script som löser detta förhållandevis smärtfritt och det är heller inte speciellt komplicerat att sätta upp t.ex. Git hooks som nämnts ovan.

Det som däremot brukar bli mer komplicerat är när man måste synkronisera databasförändringar mellan utvecklingsmiljön och och produktion. Om du gör ändringar i databasschemat eller, ännu värre, ändringar i själva datan blir det mer komplicerat eftersom det inte går att bara skriva över allt. Jag mottar gärna tips på hur man ska diffa och merga databaser från utvecklingsmiljö till produktion.

CotopaXi 2013-03-25 17:30

Kör Chef[1] och Fabric[2] men finns också som några nämt Capistrano, Puppet[3] och nykomplingen Salt[4] för att automatisera deployments.

En spännande startup som vill göra deployment lika enkelt som dropbox gör det att dela filer är Omnicloud[5] tyvärr endast stöd för PHP i nuläget.

[1] http://wiki.opscode.com/display/chef/Home
[2] http://docs.fabfile.org/en/1.6/
[3] https://puppetlabs.com
[4] http://saltstack.com/
[5] http://omnicloud.com/

linusoleander 2013-03-25 18:31

Citat:

Ursprungligen postat av Alex (Inlägg 20465747)
Om man inte vill blanda in ruby-gems så duger Git hooks väldigt väl. Annars är det som linus ovan mig säger capistrano som gäller.

"cap deploy" så deployar du senaste som ligger pushat i master-repot. Dessutom sköter den rollbacks och sånt rätt bra också, så skulle du få ut en kodbas i produktion som inte riktigt klarar alla tester så är det bara att köra "cap deploy:rollback" så får du versionen tidigare.

Kör du dessutom tags på dina deploys blir det ännu mer överskådligt.

Av egen erfarenhet så är det inte bara den nya kodbasen som ska upp i produktion utan följande saker ska också göras.
  • Installation av alla paketberoenden
  • Migrering av databasen
  • Ompekning av applikation efter ny kod är på plats
  • Omstart av bakgrundsjobb
  • Uppdatera cronjobs
  • Säga till felhanteringsapplikationen att en deploy är gjort
  • Komprimera assets på klientsidan för att sedan flyttas över till production (js- och css-filer)
  • Os.v

dAEk 2013-03-25 18:56

Citat:

Ursprungligen postat av secag (Inlägg 20465664)
Jag ser att många utvecklar i DEV och sen förflyttar över detta till PRODUCTION. Jag undrar över hur dom gör det, antar att dom har 2 kopior av sidan men hur dom ligger vet jag inte. Finns det dom har kör www.minsida.se/dev där bara developers har åtkomst?

Hur gör man se om man vill släppa en ny update av sidan? Måste finnas ett enkelt sätt att förflytta alla uppdaterade och nya filer till production? Även filer man tagit bort i dev borde också tas bort i production? Flyttar dom bara över allting som ligger i devmappen till den andra?

En byggserver skulle kunna fixa detta. Det är himla smidigt när man har olika miljöer (utv, test, acceptanstest, prodtest, prod etc) där sökvägar, databaser etc skiljer sig åt. Ett klick o sen sköter byggservern resten! Antar att det är liknande tänk i Git som nämnts ovan.


Alla tider är GMT +2. Klockan är nu 14:51.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson