Αυτόματο σύστημα εκδόσεων εφαρμογής μέσω SVN?

Προβληματισμοί και ανταλλαγή ιδεών από την Επικαιρότητα και διάφορα άλλα θέματα.

Συντονιστής: Super-Moderators

Απάντηση

Συμφωνώ με την πρόταση

Ναι, απόλυτα
1
25%
Ναι, εν μέρη
1
25%
Όχι, διαφωνώ απόλυτα
2
50%
 
Σύνολο ψήφων: 4

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Αυτόματο σύστημα εκδόσεων εφαρμογής μέσω SVN?

Δημοσίευση από panosru » 04 Ιούλ 2010 19:09

Πλέων ο ποιο διαδεδομένος τρόπος στο να παρακολουθείς την πρόοδο στο πηγαίο κώδικα μιας εφαρμογής είναι οι SVN servers (ssubversion), ωστόσο μέσω SVN μπορείς να παρακολουθήσεις το πλήθος των commits που έχουν γίνει, κάτι που δεν αποτελεί μια έκδοση.

Η λύση που σκέφτηκα στο να αυτοματοποιήσω με κάποιο τρόπο την παραγωγή εκδόσεων είναι ναι μεν λογική (απ' όσο το συζήτησα γενικότερα και με άλλα άτομα) ωστόσο δεν είναι ορθή.

Θα αναλύσω τον τρόπο με τον οποίο σκέφτηκα πως θα πρέπει να παράγεται μια έκδοση και έπειτα θα αναφέρω κατεμέ τα θετικά και αρνητικά του τρόπου αυτού.


Τρόπος

Καταρχήν μια έκδοση θα πρέπει να βγαίνει από τον αριθμό των commits που έχουν γίνει στο SVN repository της εφαρμογής.

Μία τελική έκδοση θα πρέπει να είναι της μορφής Έκδοση Build: νούμερο

η έκδοση θα μπορεί να έχει τις παρακάτω μορφές με σειρά προτεραιότητας
  1. Alpha
  2. Beta
  3. RC
  4. X.X.X Build #
Στο 4ο στάδιο της έκδοσης το πρώτο Χ αποτελεί την κύρια έκδοση (Master version), το δεύτερο Χ αποτελεί την υποέκδοση (Sub version), το 3ο Χ αποτελεί τον δείκτη της υποέκδοσης (Pointer Version) και το # στο Build αποτελεί τον αριθμό των commits του δείκτη της υποέκδοσης.

Η κύρια έκδοση αποτελεί το πλήθος των χιλιάδων του αριθμού των commits, η υποέκδοση το πλήθος των εκατοντάδων, ο δείκτης της υποέκδοσης των δεκάδων και το build των μονάδων.

Οπότε:

Commit #10 = Version 0.0.1 Build 0
Commit #11 = Version 0.0.1 Build 1

Commit #100 = Version 0.1.0 Build 0
Commit #101 = Version 0.1.0 Build 1
Commit #110 = Version 0.1.1 Build 0
Commit #111 = Version 0.1.1 Build 1

Commit #1000 = Version 1.0.0 Build 0
Commit #1001 = Version 1.0.0 Build 1
Commit #1010 = Version 1.0.1 Build 0
Commit #1011 = Version 1.0.1 Build 1
Commit #1100 = Version 1.1.0 Build 0
Commit #1101 = Version 1.1.0 Build 1
Commit #1110 = Version 1.1.1 Build 0
Commit #1111 = Version 1.1.1 Build 1

Αυτό το οποίο γίνεται είναι ο αριθμός των commits (revision number) σπάει σε χιλιάδες, εκατοντάδες, δεκάδες και μονάδες και με βάση αυτούς τους αριθμούς βγαίνει η παραπάνω λίστα εκδόσεων (μια έκδοση κάθε φορά με βάση το τρέχων revision).

Για παράδειγμα αν έχουμε τον αριθμό 3762 τότε αυτό θα είχε το εξής αποτέλεσμα:

3 : Κύρια έκδοση
7 : Υποέκδοση
6 : Δείκτης υποέκδοσης
2 : Build δείκτη υποέκδοσης

Οπότε η έκδοση με βάση τον παραπάνω αριθμό θα ήτανε: 3.7.6 Build 2

Πώς θα υπολογίζονται οι εκδόσεις Alpha, Beta και RC:

Σκέφτηκα να κάνω το εξής:

Όταν ο αριθμός των commits είναι από 1 έως και 4 τότε είναι στην Alpha έκδοση
Όταν ο αριθμός των commits είναι από 5 έως και 8 τότε είναι στην Beta έκδοση
Όταν ο αριθμός των commits είναι 9 τότε είναι στην RC (release candidate) έκδοση

Οπότε:

Commit #1 = Version Alpha 1 Build 1
Commit #2 = Version Alpha 1 Build 2
Commit #3 = Version Alpha 2 Build 3
Commit #4 = Version Alpha 2 Build 4

Commit #5 = Version Beta 1 Build 5
Commit #6 = Version Beta 1 Build 6
Commit #7 = Version Beta 2 Build 7
Commit #8 = Version Beta 2 Build 8

Commit #9 = Version RC


Θετικά
  • Οι εκδώσεις θα βγαίνουν αυτόματα και θα βασίζονται σε ένα πρότυπο οπότε θα υπάρχει μια λογική ροή.
  • Σε κάθε έκδοση θα μπορεί με βάση τα tags κάθε commit να βγαίνει και το αντίστοιχο change log

Αρνητηκά
  • Δεν θα μπορεί να δημιουργηθεί κάποιο roadmap της εφαρμογής που θα λέει ότι στην έκδοση 3 θα υπάρχει το Χ, Υ feature ή bug fix καθώς δεν μπορείς να ξέρεις αν αυτό θα γίνει στην έκδοση 3.0.0 ή στην έκδοση 2.9.8 ή εκεί γύρο.
  • Η έκδοση πλέων περνάει στα χέρια του προγραμματιστή και όχι του υπεύθυνου για τις το ποια θα είναι η έκδοση που θα πρέπει να βγει και πότε πρέπει να βγει.
  • Η αύξηση της έκδοσης θα πάρει αρκετό καιρό για να φτάσει στην έκδοση 1.0.0 καθώς απαιτεί 1000 commits και τίποτα δεν διαβεβαιώνει ότι η έκδοση 1.0.0 θα μπορούσε υπό άλλες συνθήκες να έχει την αξία της έκδοσης 1 ή της έκδοσης 10.
Αυτά προς το παρών, θα ήθελα πολύ ν' ακούσω και άλλες γνώμες, ιδέες & προτάσεις επί του θέματος.

Ευχαριστώ

giannisfs
Δημοσιεύσεις: 9
Εγγραφή: 24 Μάιος 2007 15:19

Αυτόματο σύστημα εκδόσεων εφαρμογής μέσω SVN?

Δημοσίευση από giannisfs » 11 Ιούλ 2010 18:17

Καλό το να σκέφτεσαι και έτσι και γενικά να σκέφτεσαι ...
ΜΠΡΑΒΟ.
για να μην τα πολυλέω ...
κατά την γνώμη μου
καλό θα ήταν να υπήρχαν 2 επιπλέον αριθμοί
ώστε να βλέπει κανείς άμεσα τα revision και τα commits

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Αυτόματο σύστημα εκδόσεων εφαρμογής μέσω SVN?

Δημοσίευση από panosru » 11 Ιούλ 2010 18:21

Καλησπέρα giannisfs, έχεις δίκιο για την αμεσότητα προβολής των 2 αυτών στοιχείων, ευχαριστώ για την συμβουλή θα το ξανασκεφτώ το θέμα!

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Αυτόματο σύστημα εκδόσεων εφαρμογής μέσω SVN?

Δημοσίευση από cordis » 11 Ιούλ 2010 18:45

το ότι δε μπορείς να ορίσεις roadmap για εμένα το βγάζει εκτός χωρίς πολύ σκέψη. δε μπορώ να διανοηθώ ότι θα γράφεις ακατάσχετα κώδικα χωρίς να έχεις στόχους που όταν επιτευχθούν βγάζεις release. δεν είμαστε εργάτες σε ορυχεία, αν και τείνουμε να γίνουμε, που σκάβουμε με το μέτρο. :p

ίσως μπορεί να γίνει για subversions για ευκολία.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Αυτόματο σύστημα εκδόσεων εφαρμογής μέσω SVN?

Δημοσίευση από panosru » 11 Ιούλ 2010 18:46

Ναι και για μένα είναι ένα μείον αλλά προσπαθώ να βγάλω άκρη επί του θέματος :)

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Αυτόματο σύστημα εκδόσεων εφαρμογής μέσω SVN?

Δημοσίευση από fafos » 11 Ιούλ 2010 19:02

apoti gnorizo kathe protos akeraios arithmos (p.x. 3.0.0) einai h stable ekdosh pou tithetai os stoxos..

gia paradeigma eisai sthn ekdosh 2.4.5... kathe nea metavolh (diorthosh bugs, mikroepektaseis klp) pane stous deuterotritous akeraious analoga me ton vathmo shmasias gia thn efarmogh..


otan theteis stoxo na pas sthn ekdosh 3.0.0 opou oi metavoles einai kata poly shmantikoteres arxizeis na douleueis me alpha, beta, RC kai katalhgeis sthn stable h opoia exei parei to noumero ths teleutaias RC (p.x. h 3.1.5 RC3 tha parousiastei os 3.1.5 stable ekdoshs)

nomizo...

Απάντηση

Επιστροφή στο “Επικαιρότητα & Διάφορες Συζητήσεις”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 3 επισκέπτες