Bugs- en projectenbeheer in webdevelopment

Gestart doorAarclay17 reacties300 weergaven

18 berichten · pagina 1 van 2

Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Misschien een handig topic voor de liefhebbers om zich hier uit te wijden over hun manier van webdvelopment. Hoe ontwikkel je jouw site, en hoe ziet de flow eruit van ontwikkeling tot livegang? En hoe beheer jij de lijst met bugs en suggesties?

Ikzelf programmeer mijn eigen CMS en devsels in Netbeans IDE, en doe dit gezellig op localhost. De bugs beheer in in Mantis BT die ik online draai, en daarin houd ik ook de versienummering bij. Gezien ik in mijn uppie aan de source werk vind ik een versioning-system zoals Git niet echt nodig (nog). Wel bouw ik vaak wat convertertjes en shell-scriptjes voor import-werkjes.

Hoe ontwikkelen en deployen jullie de websites?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Ik draai een kopie lokaal (one2xs.dev), daar dev ik van alles en nogwat in phpstorm, dat push ik naar Github voor versiebeheer en upload ik naar de server als er wat klaar is. Todo: automatische deploy van updates en beter met tranches enzo werken.

Bugs en suggesties houd ik bij in Mantis, daar kun je releases aanmaken en aangeven wat je allemaal nog voor die tijd gedaan moet hebben. Dat werkt voor mij een stuk meer motiverend dan pff er moet nog zoveel sadley zonder een idee te hebben wat je nog precies moet doen.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Lennard schreef:
Ik draai een kopie lokaal (one2xs.dev), daar dev ik van alles en nogwat in phpstorm, dat push ik naar Github voor versiebeheer en upload ik naar de server als er wat klaar is. Todo: automatische deploy van updates en beter met tranches enzo werken.

Bugs en suggesties houd ik bij in Mantis, daar kun je releases aanmaken en aangeven wat je allemaal nog voor die tijd gedaan moet hebben. Dat werkt voor mij een stuk meer motiverend dan pff er moet nog zoveel sadley zonder een idee te hebben wat je nog precies moet doen.
ik heb een soortgelijke setup. Ik push lokaal naar een developmentserver,zodra ik push naar de dev (unstable) branche worden de unit tests gedraaid. Dan dan krijg je vanzelf te horen of je het goed gedaan hebt of niet.

Note: ik rol bewust niet overal automatisch updates uit, ik wil niet dat alles direct geüpdatet wordt als er een nieuwe versie beschikbaar is.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Ik draai nog lekker kinderachtig xampp op mijn laptopje bloosMijn huidige project draait op twee servers: dev en main. De main is al via internet beschikbaar (de dev ook, maar dat weet niemand swhip).
Ik gebruik PHPStorm met de FTP van dev (ik moet dus iedere keer dat ik een bestand aanpas op ctrl + alt + shift + x drukken in plaats van ctrl + s als ik het wil opslaan emocry).
Ik maak iedere dag een backup (zipbestandje) van de voortgang en zet het op een NAS die op zijn beurt weer op drie andere plaatsen wordt gebackupt (emo)
Ik moet eigenlijk eens met Git leren omgaan, vind het allemaal ingewikkeld in elkaar met commandline enzo.
0
Berichten
5.274
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien

Eindhoven, Nederland

Stef schreef:
Ik draai nog lekker kinderachtig xampp op mijn laptopje bloosMijn huidige project draait op twee servers: dev en main. De main is al via internet beschikbaar (de dev ook, maar dat weet niemand swhip).
Ik gebruik PHPStorm met de FTP van dev (ik moet dus iedere keer dat ik een bestand aanpas op ctrl + alt + shift + x drukken in plaats van ctrl + s als ik het wil opslaan emocry).
Ik maak iedere dag een backup (zipbestandje) van de voortgang en zet het op een NAS die op zijn beurt weer op drie andere plaatsen wordt gebackupt (emo)
Ik moet eigenlijk eens met Git leren omgaan, vind het allemaal ingewikkeld in elkaar met commandline enzo.
Git zou inderdaad een verbetering zijn. Daarnaast, hoezo gebruik je niet de "Deployment" mogelijkheden in PHPstorm? Hiermee kan je automatisch als je een bestand saved (Ctrl + S) het laten uploaden naar FTP.
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Wouterr schreef:
Eerdere citaten tonen
Stef schreef:
Ik draai nog lekker kinderachtig xampp op mijn laptopje bloos
Mijn huidige project draait op twee servers: dev en main. De main is al via internet beschikbaar (de dev ook, maar dat weet niemand swhip).
Ik gebruik PHPStorm met de FTP van dev (ik moet dus iedere keer dat ik een bestand aanpas op ctrl + alt + shift + x drukken in plaats van ctrl + s als ik het wil opslaan emocry).
Ik maak iedere dag een backup (zipbestandje) van de voortgang en zet het op een NAS die op zijn beurt weer op drie andere plaatsen wordt gebackupt (emo)
Ik moet eigenlijk eens met Git leren omgaan, vind het allemaal ingewikkeld in elkaar met commandline enzo.

Git zou inderdaad een verbetering zijn. Daarnaast, hoezo gebruik je niet de "Deployment" mogelijkheden in PHPstorm? Hiermee kan je automatisch als je een bestand saved (Ctrl + S) het laten uploaden naar FTP.
Ik zal er binnenkort eens naar kijken! Bedankt smile
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Zelfs NetBeans kan ermee omgaan zie ik, met Git-repos. Binnenkort maar eens een testproject maken en ermee spelen met een BitBucket accountje. Die is tenminste private.

Enne, verder heb ik ook een .dev domeintje voor mijn projecten. wink
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Dit is hoe we het op werk doen, maar in eigen projecten begin ik dit ook een beetje over te nemen:

Wanneer een iemand een klacht heeft vanuit de business wordt er in onze lokale gitlab een Issue aangemaakt. Wanneer dit een kleine issue is wordt er hiervoor een branch aangemaakt ([nummer-van-issue]-[slug-van-titel]). Vervolgens lokaal de branch binnenhalen en er in werken. Als de issue opgelost is dan pushen we het weer naar de remote branch met dezelfde naam en gaat er een automatische phpunit test overheen in een docker-omgeving. Deze dockeromgeving haalt alle packages die benodigd zijn op via composer en runned vervolgens alle test en geeft een coverage-percentage terug. Zodra de tests passed zijn kan er gemerged worden naar de master branch. Hiervoor maken we een merge request aan welke de hoofd van onze afdeling reviewed en doorvoert naar master. Vervolgens wordt er eens in de zoveel tijd alles uit master binnen gehaald op de productieserver.

We zijn momenteel nog aan het kijken om een developmentserver te draaien die in sync is met de productieomgeving (en productiedatabases) zodat we niet meer in de productieomgeving hoeven te testen of de programmatuur ook daadwerkelijk doet wat het moet doen. Dat vangen de tests immers niet altijd af.
0
Berichten
5.274
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien

Eindhoven, Nederland

Rik schreef:
Dit is hoe we het op werk doen, maar in eigen projecten begin ik dit ook een beetje over te nemen:

Wanneer een iemand een klacht heeft vanuit de business wordt er in onze lokale gitlab een Issue aangemaakt. Wanneer dit een kleine issue is wordt er hiervoor een branch aangemaakt ([nummer-van-issue]-[slug-van-titel]). Vervolgens lokaal de branch binnenhalen en er in werken. Als de issue opgelost is dan pushen we het weer naar de remote branch met dezelfde naam en gaat er een automatische phpunit test overheen in een docker-omgeving. Deze dockeromgeving haalt alle packages die benodigd zijn op via composer en runned vervolgens alle test en geeft een coverage-percentage terug. Zodra de tests passed zijn kan er gemerged worden naar de master branch. Hiervoor maken we een merge request aan welke de hoofd van onze afdeling reviewed en doorvoert naar master. Vervolgens wordt er eens in de zoveel tijd alles uit master binnen gehaald op de productieserver.

We zijn momenteel nog aan het kijken om een developmentserver te draaien die in sync is met de productieomgeving (en productiedatabases) zodat we niet meer in de productieomgeving hoeven te testen of de programmatuur ook daadwerkelijk doet wat het moet doen. Dat vangen de tests immers niet altijd af.
Netjes! Een soortgelijke procedure hanteren we hier inderdaad ook, maar dan niet met de exacte branch-voorschriften. Zelf gebruiken we GitLab.com, inclusief de gratis shared Docker runners. Voor ioncube (sommige projecten worden geencrypt met Ioncube) gebruiken we de shell runner op een server met ioncube (i.v.m. de ioncube licentie kan dit niet dynamisch opgezet worden in een Docker instance).

Zit zelf nog te kijken naar het automatisch releasen van de software (althans, automatisch na het drukken van 1 knop), als er een nieuwe release uitgegeven word (inclusief automatische versioning). Dit zijn dan voornamelijk naar klanten doe. Releases van software die we intern draaien gebeurd voor nu nog grotendeels handmatig (git pull, composer install e.d.).
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Hebben jullie ook een centraal paneel waar je álle server versies (php etc maar óók je "eigen" software) kan zien en plannen wanneer de server zelf gaat updaten?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Sevvlor schreef:
Hebben jullie ook een centraal paneel waar je álle server versies (php etc maar óók je "eigen" software) kan zien en plannen wanneer de server zelf gaat updaten?
Nee, maar elke merge naar master krijgt een eigen tag (semver versie als tag), en daarin is dus te zien wat de versie van eigen software is. Bij een composer update op de productieserver wordt de laatste tag opgehaald.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
@rick dat snap ik, ik bedoelde eerder wat er nú op draait. Dat ik bijvoorbeeld naar versions.sevvlor.com ga en dat ik van álle aangemelde servers álle versies zie.

Bijvoorbeeld:

s1.sevvlor.com
PHP 3.3
Mysql 1.2.4
SevvorCMS 3.6
Nfinx 6.9
etc

toevoeging op ma 17 oktober 2016, 23:20:19:

Vergelijkbaar met https://data.sevvlor.com/uploads/2016/10/17/img-6147.jpg (kan niet editen want mobiel sorry)
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bij mij op het werk hebben we 2 manieren van werken:
  • SVN
  • Git
SVN
Per product hebben we de volgende mappen structuur in Subversion:
  • Branches
  • Tags
  • Trunk
In Branches ontwikkelen we aan issues die in JIRA staan. De branches hebben het nummer van het issue in JIRA (in ons geval DEV-123). Iedere ontwikkelaar heeft een VM die op een server in het netwerk staat waarop ontwikkeld wordt. Aanpassen van code op de VMs doen we door middel van Samba shares.
Ook staat er in Branches een rc branch waar de DEV-branches naar gemerged worden. De rc is zoals de naam al doet vermoeden de release candidate voor de volgende release.
Wanneer de rc volledig is en deze gereleased gaat worden mergen we deze naar de Trunk. Daar staat het product zoals dat op dat moment is.
In Tags houden we de vorige versies van de producten bij.

We hebben bij klanten een productie en een TA (test/acceptatie) omgeving. Ongeveer 2 weken voor een release zetten we de rc op de TA omgeving zodat er met echte data van de klant getest kan worden. We laten de klant zelf hier ook op testen en gebruiken feedback van hen om bugs te kunnen fixen en kleine wijzigingen nog door te kunnen voeren. De release wordt daarna op de productieomgeving gezet.
Het updaten van de productie en TA-omgevingen doen we door middel van een SVN update. Door middel van PuTTY zetten we een tunnel op naar onze lokale Subversion server om de SVN update uit te kunnen voeren.

Git
We zijn pas net begonnen met Git, dus het is misschien allemaal nog niet volgens de regels. We draaien onze Git repositories bij Bitbucket omdat dit goed integreert met JIRA.
We hebben de volgende branches:
  • master: Gebruiken we als rc branch. Door middel van Bitbucket pipelines worden zaken als phpunit automatisch gedraaid.
  • staging: Deze branch deployed automatisch naar een staging server bij onze hoster zodat we op een echte omgeving kunnen testen. Over het deployen later meer.
  • acceptance: Vergelijkbaar met de TA-omgeving zoals benoemd bij Subversion. Ook deze branch wordt automatisch gedeployed.
  • production: De productie-omgeving, wordt wederom automatisch gedeployed.
  • DEV-123: development branches. Wanneer ontwikkeling aan een branch klaar is maken we een pull request aan zodat deze naar de master gemerged kan worden.
We gebruik bitbucket pipelines om automatisch te deployen maar ook om zaken als phpunit te draaien. Pipelines werkt door middel van Docker containers. Aangezien de projecten die in Git staan enkel Laravel projecten zijn gebruiken we daar de laraedit container voor.
In de Git repo staat een bestand bitbucket-pipelines.yml die er ongeveer zo uit ziet (dit laat maar 1 branch zien):

image: laraedit/laraedit

pipelines:
  branches:
    acceptance:
      - step:
          script:
              - composer install --no-progress
              - wget http://deployer.org/deployer.phar
              - chmod +x deployer.phar
              - ./deployer.phar deploy acceptance


Voor het deployen maken we ook gebruik van Deployer. Hiermee kun je in PHP opgeven welke stappen er uitgevoerd dienen te worden tijdens het deployen, zoals het aanmaken van mappen of het migreren van je database (php artisan migrate).
Op iedere server is een SSH private key gegenereerd die in Bitbucket pipelines bekend is waardoor deployer op de server kan inloggen over SSH en de gedefinieerde stappen uit kan voeren.

Zoals eerder benoemd hebben we in Git momenteel aan Laravel projecten staan. Om daarvoor te ontwikkelen hebben we een homestead VM op onze laptops staan. De homestead image beheren door gebruik te maken van Vagrant (zoals eigenlijk iedereen die Homestead met Laravel gebruikt). Vagrant maakt het mogelijk om folders op je machine te mappen naar folders binnen de VM. Je past dus bestanden lokaal op je systeem aan en die bestanden zie je ook in de VM.

Heel verhaal, maar misschien dat iemand er iets aan heeft biggrin
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Luukvdo schreef:
Bij mij op het werk hebben we 2 manieren van werken:
  • SVN
  • Git
SVN
Per product hebben we de volgende mappen structuur in Subversion:
  • Branches
  • Tags
  • Trunk
In Branches ontwikkelen we aan issues die in JIRA staan. De branches hebben het nummer van het issue in JIRA (in ons geval DEV-123). Iedere ontwikkelaar heeft een VM die op een server in het netwerk staat waarop ontwikkeld wordt. Aanpassen van code op de VMs doen we door middel van Samba shares.
Ook staat er in Branches een rc branch waar de DEV-branches naar gemerged worden. De rc is zoals de naam al doet vermoeden de release candidate voor de volgende release.
Wanneer de rc volledig is en deze gereleased gaat worden mergen we deze naar de Trunk. Daar staat het product zoals dat op dat moment is.
In Tags houden we de vorige versies van de producten bij.

We hebben bij klanten een productie en een TA (test/acceptatie) omgeving. Ongeveer 2 weken voor een release zetten we de rc op de TA omgeving zodat er met echte data van de klant getest kan worden. We laten de klant zelf hier ook op testen en gebruiken feedback van hen om bugs te kunnen fixen en kleine wijzigingen nog door te kunnen voeren. De release wordt daarna op de productieomgeving gezet.
Het updaten van de productie en TA-omgevingen doen we door middel van een SVN update. Door middel van PuTTY zetten we een tunnel op naar onze lokale Subversion server om de SVN update uit te kunnen voeren.

Git
We zijn pas net begonnen met Git, dus het is misschien allemaal nog niet volgens de regels. We draaien onze Git repositories bij Bitbucket omdat dit goed integreert met JIRA.
We hebben de volgende branches:
  • master: Gebruiken we als rc branch. Door middel van Bitbucket pipelines worden zaken als phpunit automatisch gedraaid.
  • staging: Deze branch deployed automatisch naar een staging server bij onze hoster zodat we op een echte omgeving kunnen testen. Over het deployen later meer.
  • acceptance: Vergelijkbaar met de TA-omgeving zoals benoemd bij Subversion. Ook deze branch wordt automatisch gedeployed.
  • production: De productie-omgeving, wordt wederom automatisch gedeployed.
  • DEV-123: development branches. Wanneer ontwikkeling aan een branch klaar is maken we een pull request aan zodat deze naar de master gemerged kan worden.
We gebruik bitbucket pipelines om automatisch te deployen maar ook om zaken als phpunit te draaien. Pipelines werkt door middel van Docker containers. Aangezien de projecten die in Git staan enkel Laravel projecten zijn gebruiken we daar de laraedit container voor.
In de Git repo staat een bestand bitbucket-pipelines.yml die er ongeveer zo uit ziet (dit laat maar 1 branch zien):

image: laraedit/laraedit

pipelines:
  branches:
    acceptance:
      - step:
          script:
              - composer install --no-progress
              - wget http://deployer.org/deployer.phar
              - chmod +x deployer.phar
              - ./deployer.phar deploy acceptance
Voor het deployen maken we ook gebruik van Deployer. Hiermee kun je in PHP opgeven welke stappen er uitgevoerd dienen te worden tijdens het deployen, zoals het aanmaken van mappen of het migreren van je database (php artisan migrate).
Op iedere server is een SSH private key gegenereerd die in Bitbucket pipelines bekend is waardoor deployer op de server kan inloggen over SSH en de gedefinieerde stappen uit kan voeren.

Zoals eerder benoemd hebben we in Git momenteel aan Laravel projecten staan. Om daarvoor te ontwikkelen hebben we een homestead VM op onze laptops staan. De homestead image beheren door gebruik te maken van Vagrant (zoals eigenlijk iedereen die Homestead met Laravel gebruikt). Vagrant maakt het mogelijk om folders op je machine te mappen naar folders binnen de VM. Je past dus bestanden lokaal op je systeem aan en die bestanden zie je ook in de VM.

Heel verhaal, maar misschien dat iemand er iets aan heeft biggrin
Cool! Een stuk professioneler dan bij mij op stage (emo)
Welk niveau opleiding heb je gedaan?
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Stef schreef:
Cool! Een stuk professioneler dan bij mij op stage (emo)
Welk niveau opleiding heb je gedaan?

HBO Software Engineering
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren