-
-
Notifications
You must be signed in to change notification settings - Fork 644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Better release strategy (with bower) #508
Comments
I was able to write a shell script for this, but for portability we should probably continue using node. |
doing a little research, found those projects that could be useful: https://github.com/geddski/grunt-release http://rafeca.com/node-releasetools/Jakefile.html (Nice project name BTW) |
|
back to this, so can we create our version of |
For sure it's simple. The bash script is above. This is really just a task that needs to be done. The design is complete. |
sure, just to clear things out. Should we create a custom task on the tasks folder and add this bash script to be executed, or should we try to use pure node.js libs to reproduce that script? I think i can do that modifications. |
I would prefer to do it with node, for portability reasons (especially building on Windows). That's the reason I didn't commit a bash script. But you can still use the script as a guide. Here's the one I was testing a few weeks ago: https://github.com/parasyte/hork/blob/master/tasks/release.sh I think you might be able to write the task using |
sure, i will take a closer look. |
is this something that can be done within the next couple of days, or is it better to plan this for 1.0.3 or the 1.1.0 branch ? (i'm ok with both) |
I think we can do this for |
works for me, and the sooner we get this 1.0.2 out, the sooner i can go back focusing on 1.1.0 as well and the new object/collision stuff ;P |
hey guys, some news on this one. The only problem now is that the |
@ellisonleao This sounds pretty cool, and the code is clean and simple. I read through it on the plane, and liked what I saw. Unfortunate that it wasn't working as you intended, though. I haven't tried it beyond that yet. |
what about this one btw ? do we try to finalise it before the final 1.1.0 release ? |
I would love to use this to release 1.1.0. ;) I'm going over the pull request (#528) now. |
i'm postponing this one to 1.2.0 then (or maybe 1.1.1 a bit later) |
sounds good! I will try another approach this week. Let's hope for the best. |
ooooh yes, I almost forgot about this one :):):) |
sorry about the late on this one. I had a really busy time these past two months since i am getting married on November. I will try to finish ASAP |
congrats :) On Thu, Oct 9, 2014 at 9:20 AM, Ellison Leão [email protected]
Aaron McLeod |
Congratulations !!!!!!!! And please no worries about the ticket :)
|
There are two alternatives for the git commands, both use libgit:
These provide low-level access to a git repo. I would be surprised if all the tasks cannot be done with this. Also we won't have to rely on the broken behavior in shelljs as we see in #508 |
Add dependency of MelonJS isn't working yet? |
- Bug: shelljs/shelljs#51 - Workaround: #528 (comment)
This one is fixed. I had a lot of trouble with the last little stretch, but it's now working with rollback on failure cases! The new release command is:
Requires |
Ooohh nice ! So basically "grunt release" will do the whole release stuff ?
|
Yep, it does! There's a followup ticket for a few minor things left to do. |
- New release strategy [#508] handles this now - To use melonJS as a node module, we can publish the release tags to npm
@agmcleod @obiot I have been investigating bower more closely, which was discussed a bit in #227.
My understanding of the bower package manager ecosystem is still vague, at best. But it does appear to be useful for the distribution of pre-built melonJS releases -- something we are NOT doing with it yet.
In my experiments, I installed jQuery using
bower install jquery
in an empty directory. It creates a subdirectory calledbower_components
(synonymous tonode_modules
withnpm
) and jQuery is installed there. What's interesting to note is that in thejquery
subdirectory, there's the full source code, plus the pre-built js files in adist
directory. And the bower manifest points to one of these dist files: https://github.com/jquery/jquery/blob/master/bower.json#L4But if you look at the jQuery repo, you'll see that there is no dist directory, and in fact, it is ignored in
.gitignore
! But if you check out their latest tag, you will indeed find the dist directory: https://github.com/jquery/jquery/tree/2.1.1/dist This means the2.1.1
tag is not in any branch. So jQuery's dist/bower register step must detach the branch, commit the dist files, tag the commit, and push the detached tag.This is the flow I tested in a new repo, and it works really well: https://github.com/parasyte/hork The build directory is purposefully empty (just a placeholder) And I have made three tags, each with a different build file that never touched a branch, with all tags having histories from different points in the master branch. Here's how we might do this with melonJS:
What we're doing here is building the dist files with grunt, then detaching from the branch and committing the dist files in the detached state. This creates the commit sha1 in git history, but the commit isn't really linked anywhere. To link it with something, a tag is created (which integrates with the github release mechanism) and the tag is pushed to remote (github) to create the release.
And of course, all of these steps can be automated to pull the version number from package.json.
With all of that done, we should be able to
bower install melonJS
and get the dist files (plus source code) installed into our project when starting a new game. No need to build melonJS, no need to install any build dependencies, and finally thenpm install
task does not need to run bower; they can live entirely independent of one another, the way it should be.Final note: This takes us back to our current release strategy of just using tags to keep track of releases. That much won't change. But what will need to change is how the "Stable" branch is initially created. I'll use "1.1.0" as an example for when we start to work on "1.2.0":
master
is the current "1.1.0" development line. We want to start working on "1.2.0".master
named1.1.x
.1.1.0
containing dist files.1.1.x
branch, with periodic detached tags for releases.master
to "1.2.0".master
branch for unstable/experimental features in the 1.2.x line.The text was updated successfully, but these errors were encountered: