World: r3wp
[!REBOL3 Source Control] How to manage build process
older newer | first last |
Carl 28-Oct-2010 [3x3] | Ok, so the subject of the discussion is how to move the host-kit build and its related processes to a more manageable method. |
This is good timing, because I was just about ready to change the method anyway. | |
Andreas has some suggestions, and if we can figure out a good way to put this together, it would benefit most developers (at this level.) | |
Andreas 28-Oct-2010 [6x2] | Ultimately, it would also greatly benefit you. |
Where I was going previously: for now, the only part that would need your direct involvement is the automation of an "export" from your "internal" sources to a set of "external" sources. | |
Carl 28-Oct-2010 [8x2] | The export step should not be that difficult. The problem will be if developers modify auto-generated files. |
So, do we have a good place to put this? Google code? | |
Andreas 28-Oct-2010 [10] | I wouldn't worry about that for now. |
Carl 28-Oct-2010 [11] | (which?) |
Andreas 28-Oct-2010 [12x2] | Where to put this. |
Unless you want to adopt a new version control system for your sources alltogether. | |
Carl 28-Oct-2010 [14] | So, how do we want to go about doing this? |
Andreas 28-Oct-2010 [15] | The important part is that you use _some_ version control system internally. |
Carl 28-Oct-2010 [16] | Same one for ten years. |
Andreas 28-Oct-2010 [17] | Ok, second step is to use a single repository for all your builds. |
Carl 28-Oct-2010 [18] | BTW, I don't type a dot without version control. |
Andreas 28-Oct-2010 [19] | I.e. a 'Linux" repository and a "Win32" repository where you manually do merges (or copy/paste) in between will only lead to trouble. |
Carl 28-Oct-2010 [20] | Back in a while. Go ahead and post your notes, then I'll reply. Thanks! |
Andreas 28-Oct-2010 [21x12] | Quick Q: what version control system do you use atm? |
Third step is to write a post-commit hook which exports from internal to external. | |
And then the automation kicks in. | |
The same post-commit hook then: - moves the export to someplace public (i.e. another public VCS like Github or Google Code; or simply uploading them to rebol.net/rebol.com), - and somehow notifies anyone interested of the new upload. | |
You'll get the notification for free on Github (I don't know about Google Code). But this could also be updating a simple .txt on a webserver somewhere which lists all available exports. Heck, it even the directory listing features of a webserver would suffice (as long as the exports are named consistently). | |
And from there on, we can have build bots which pick up any new export and build it for their platform. Build results are reported back somewhere (email, static website on the bots which gets aggregated elsewhere, a simple CGI, R3 chat, ...). | |
The details of those latter parts are not particularly exciting, as they are easy to do in a variety of ways. | |
For example, even the makefiles are not really important at this point. | |
But what's important is how to keep those "external" builds consistent with your "internal" builds. | |
Which is why it's also important to realise that those build bots need not necessarily be public. They could well be Carl's own machines standing at home which put the final binary in a central place for Carl to use. | |
If that's not immediate, you can obviously still use your own build stuff (Visual Studio projects, whatever), and as long as you regularly keep the sources up to date by committing, the builders will notify you anyway if the external build mechnisms got out of sync. | |
The most important thing to realize, is that not every commit, even if externally visible, needs to be perfect. It's perfectly fine if the external builders break, that's what they are there for: telling you when something went amiss. | |
Carl 28-Oct-2010 [33x2] | A few comments... |
I was expecting that all these various implementation parts were already available. That is, we're not reinventing the wheel. | |
Andreas 28-Oct-2010 [35] | They are. |
Carl 28-Oct-2010 [36] | Next, is there any conern about flooding. On a good day, I make about 10-20 commits. |
Andreas 28-Oct-2010 [37] | Nope. |
Carl 28-Oct-2010 [38x2] | BTW, there are no merges between Linux and Win32 files. These are all in the same repository. |
So, all of the above seems pretty standard. | |
Andreas 28-Oct-2010 [40x2] | It is. |
It just needs to be done for R3. | |
Carl 28-Oct-2010 [42] | That's why I asked earlier about where we want to put it.... because that seems to be a bigger question. |
Andreas 28-Oct-2010 [43x2] | http://www.rebol.net/builds/rebol3/alpha/ |
Call the exports r3-<datestamp>-<revision>.zip. | |
Carl 28-Oct-2010 [45] | dinner. bbl |
Andreas 28-Oct-2010 [46] | Or export into Git and put it on your server or on Github. Or export into Subversion and put it on Github, or Google Code, or .... |
Maxim 28-Oct-2010 [47x2] | I think using Git is the way to god for a new project. every big project I see that is changing VCS is goint Git. it seems to be the most powerfull VCS right now. do you agree Andreas? |
god... hahaha obviously I meant "go" | |
Andreas 28-Oct-2010 [49x3] | Absolutely. |
And I personally would suggest Git, put that'll take time and effort to get started with. | |
So it's probably quicker to get things going by using whatever Carl is familiar with. | |
Maxim 28-Oct-2010 [52] | are there free Git servers? |
older newer | first last |