| Version 6 (modified by adriaan, 14 years ago) (diff) |
|---|
Releases en revisies
Hoe werkt de SVN repository?
De SVN repository bevat twee directories: development/ met de actuele ontwikkelversie, en release/ met daarin stabiele releases van OpenAC. De versies onder release hebben namen v1.nnn/ (uiteindelijk ook v2.nnn/).
De AC's kunnen zelf wijzigingen in hun adapataties inleveren. Ze doen dit in de regel in de nieuwste release. Wanneer een AC een wijziging heeft ingeleverd, is dit te zien in de timeline van TRAC. Die houden we als ontwikkelaars dus nauwlettend in de gaten. Wekelijks worden wijzigingen door centra ingeleverd overgenomen in de development-tak. Als centra een oudere release in gebruik hebben, worden wijzigingen ook in de nieuwere releases overgenomen. Wanneer een centrum een wijzing indient en er is al een nieuwe release, krijgt men een waarschuwing dat de ingeleverde zaken niet automatisch beschikbaar zijn in de nieuwe release.
Wijzigingen die in een release worden ingeleverd, moeten via een SVN merge worden opgenomen in de ontwikkeltak.
Wizigingen overnemen
Het meest gemakkelijke is om wijzigingen naar "voren" over te nemen: van een release versie naar nieuwere release versies, of over naar development. Omdat dit regelmatig moet gebeuren is het het meest gemakkelijk om het automatisch met SVN tools te doen.
svn merge, sinds SVN 1.6, houdt bij welke wijzigingen zijn overgenomen. Daardoor voorkom je dat wijzigingen meer dan een keer overgenomen worden, en het wordt ook vrij makkelijk:
svn pg svn:mergeinfo development svn merge -r NNN:HEAD release/v1.222 development/ svn commit -m "OVERNEMEN: v1.222 -> development NNN t/m MMM"
Met het eerste commando vraag je de mergeinfo op van SVN. Omdat er sommige oude revisies nooit gemerged zijn op een heldere manier, willen we die ook niet meer overnemen. Kijk wat de laatst-gemergede revisie is (in dit geval gaan we v1.222 naar development mergen, dus zoek de uitvoer regel met release/v1.222 en onthoud de meest recente revisie daar. Zeg dat NNN=r19183, bijvoorbeeld.
Vervolgens doen we de merge zelf. Veranderingen vanaf revisie NNN worden overgenomen van v1.222 naar development. Hierbij kunnen conflicts ontstaan. Los die op.
Tot slot met de commit worden de nieuw gemergede revisies als een enkele commit doorgegeven. Merk vervolgens op dat de svn:mergeinfo veranderd is.
Backports
Het is ook mogelijk om veranderingen over te nemen van nieuwere versies naar oude, de zogenaamde backports. Dit gebeurt als er belangrijke functionaliteit ontwikkeld wordt, zeg in development, dat vervolgens tussen twee releases door uit moet komen, of als er ingewikkelde bugfixes moeten worden overgenomen.
svn merge werkt ook van development naar andere branches, maar in het geval van backports is het vaak handig om specifieke commits over te nemen. Gebruik dan -c NNN in plaats van -r NNN:HEAD om precies een revisie NNN over te nemen. Welke revisies over te nemen kan je lezen uit de timeline van OpenAC of uit svn log.
Planning van een OpenAC release
- De releasedatum is de datum dat de acceptatieversie wordt aangemaakt door de development-branch te kopiëren naar een release-branch. De releasedata vallen in principe op 31-3, 30-6, 25-9 en 15-12 (4x per jaar).
- 5e week voor releasedatum: scope bepalen, ontwerpjes maken
- 4e en 3e week voor releasedatum: bespreken ontwerpjes voor de grotere tickets, tickets afwerken
- 2e week voor releasedatum: testen (en soms nog wat losse eindjes ontwikkelwerk), 2 pilot-AC's zoeken
- week voor releasedatum: documenteren, changes overnemen en live (zie hieronder)
- week na releasedatum: test bij 2 pilot-AC's, changes overnemen, bericht productieversie live
Testen en maken van een OpenAC release
Je zit in een werkkopie van de tak 'development'. Doe nu de volgende stappen:
- Merge - wijzigingen coordineren zodat development acht de laatste wijzigingen bevat.
- Ga op de TRAC-website onder "Timeline" naar de vorige release, en loop zorgvuldig de changesets na die sindsdien zijn ingevoerd, draai eventueel een DIFF. Dit gebeurt elke week maar moet vlak voor een release nog een keer worden herhaald, zodat op het moment dat de release note uitkomt, alle wijzigingen zijn overgenomen. Wat men daarna inlevert, moet men zelf weten (versiebeheer waarschuwt dan ook). Zie ook kopje wijzigingen overnemen voor technische details.
- Controleer of alle wijzigingen in de loop van de vorige release zijn overgenomen: development/bin/adaptatie-diff v1.XXX development (vergelijk laatste versie met development). Loop de diff door op vergeten change sets. Als er regelmatig met svn merge is gewerkt is dit wellicht overbodig.
- Test - technische en functionele tests van huidige development versie.
python unittests.py --enable-all --no-adaptaties python unittests.py --with-adaptaties
- Draai de unit tests en fix zonodig, python unittests.py --enable-all . De unit tests vormen een automatische test die al ruime tijd voor alle releases wordt gedraaid. Deze test simuleert voor elk van de adaptaties een login en "drukt" vervolgens achtereenvolgens alle knoppen van het startscherm in. De unit test maakt gebruik van lege, standalone sqlite3-databases.
- Draai de systeemtest. De systeemtest vormt een automatische back-to-back test voor de academische huizen. Deze voeren we bij elke release uit. In overleg met academische huizen wordt het testrapport overlegd, maar meestal blijft dit intern. TODO: hoe draai je de systeemtest?
- Loop het test protocol door. Dit is een (gebruikers-)functionele test van OpenAC.
- Opschonen - de source code helemaal netjes maken voor release.
sh bin/clean python unittests.py --enable-all svn commit
- Werk VERSIES.txt bij door de releasedatum aan de laatste versie toe te voegen en de omschrijving af te maken. Daardoor verschijnt het in de beschikbare versies lijst van de ACs.
- Draai bin/clean en commit eventuele bestanden die nog geen eol-style LF hadden.
- Draai nog 1x de unit tests, python unittests.py --enable-all
- Doe nog eens reindent om de code style recht te trekken, python bin/reindent.py `find . -name *.py`
- Branch - in SVN de branch maken
- Draai bin/release 1.XXX om development te kopiëren naar de nieuwe release in SVN.
- Maak de adaptatiemap in de nieuwe release schrijfbaar voor centra door 3 regels te kopiëren in de TRAC configuratie. Zie daarvoor de TRAC configuratie wiki elders.
- Test nogmaals - of het na de branch nog doet.
- Check de nieuwe versie uit en controleer nogmaals dat het -- nu als eigen release -- nog steeds start. Loop nogmaals cluchtig het test protocol door.
- Start een eerdere versie op, ga naar versiebeheer en controleer dat (1) de nieuwe release in de versies lijst staat en (2) opschakelen naar de nieuwe release kan.
- Announce - maak de nieuwe versie bekend
- Maak een nieuwe starterkit.
- Stuur een release-bericht naar openac@…. Denk daarbij goed na welke migraties er allemaal gebeuren bij deze nieuwe versie.
Maken van een nieuwe starter kit
De starter kit is in essentie een self-extracting ZIP van een release branch van OpenAC. Dit zijn de stappen die je moet doorlopen om een starter kit te maken.
- Check de release uit waarvan de starterkit moet worden gemaakt.
- Zorg dat de volgende elementen in de directory aanwezig zijn: directory Python25, en de 4 DLLs msvcpp71.dll, python25.dll, pythoncom25.dll en pywintypes25.dll.
- Draai ./bin/clean. Dit ruimt tempfiles op en zet permissies goed, maar kan ook wijzigingen maken in bestanden. Doe een svn status en als er wijzigingen zijn, deze eerst committen.
- Draai ./bin/makezip. Dit maakt een complete ZIP die goed door windows kan worden uitgepakt.
- De zip is ongeveer 100MB.
- Gebruik EnZIP voor het maken van de EXE: rechtermuis op starterkit.zip -> open with Enzip -> Create self extractor
- Bij Message Box: nee, we willen geen message box.
- Bij Folder: "OpenAC"
- Title Caption: "OpenAC installatie"
- Command: icon.bat
- Selecteer het icon-bestand images/OpenAC-128x128.ico
- In het laatste scherm geen opties veranderen
- Upload het bestand naar Downloads op de TRAC site
- Pas de links aan op de wiki-homepage en in de installatiehandleiding, zodat deze wijzen naar de meest recente starter kit.
Attachments (2)
- release.png (5.1 KB) - added by adriaan 13 years ago.
- wixtools.png (9.0 KB) - added by adriaan 10 years ago.
Download all attachments as: .zip