Skip to content

Commit d65396b

Browse files
committed
Release: Added custom release script
1 parent ae370cd commit d65396b

File tree

3 files changed

+130
-18
lines changed

3 files changed

+130
-18
lines changed

Gruntfile.js

Lines changed: 51 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ module.exports = function( grunt ) {
9191
dirs = {
9292
dist: dist,
9393
cdn: {
94-
noversion: path.join( dist, "cdn-noversion" ),
94+
google: path.join( dist, "cdn-google" ),
95+
jquery: path.join( dist, "cdn" ),
9596
git: path.join( dist, "git" )
9697
},
9798
tmp: path.join( dist, "tmp" )
@@ -185,7 +186,7 @@ module.exports = function( grunt ) {
185186

186187
distZipOut: path.join( dist, name + "<%= versionSuffix %>.zip" ),
187188

188-
cdnNoversionZipOut: path.join( "<%= dirs.cdn.noversion %>","<%= files.zipFileName %>" )
189+
googleCDNZipOut: path.join( "<%= dirs.cdn.google %>","<%= files.zipFileName %>" )
189190
};
190191

191192
// Add minified property to files.css.*
@@ -495,7 +496,15 @@ module.exports = function( grunt ) {
495496
}
496497
]
497498
},
498-
noversion: {
499+
"jqueryCDN": {
500+
files: {
501+
// WARNING: This will be modified by the config:copy:noversion task
502+
cwd: dist,
503+
src: "<%= files.cdn %>",
504+
dest: "<%= dirs.cdn.jquery %>"
505+
}
506+
},
507+
"googleCDN": {
499508
options: {
500509
processContent: function( content, srcPath ) {
501510
if ( /\.min.js$|\.min.map$/.test( srcPath ) ) {
@@ -535,7 +544,7 @@ module.exports = function( grunt ) {
535544
},
536545

537546
"hash-manifest": {
538-
noversion: {
547+
googleCDN: {
539548
options: {
540549
algo: "md5",
541550
cwd: "<%= dirs.tmp %>"
@@ -558,9 +567,9 @@ module.exports = function( grunt ) {
558567
}
559568
]
560569
},
561-
"cdn-noversion": {
570+
"googleCDN": {
562571
options: {
563-
archive: "<%= files.cdnNoversionZipOut %>"
572+
archive: "<%= files.googleCDNZipOut %>"
564573
},
565574
files: [
566575
{
@@ -720,7 +729,8 @@ module.exports = function( grunt ) {
720729
dist: [ dist ],
721730
git: [ path.join( dist, "git" ) ],
722731
tmp: [ "<%= dirs.tmp %>" ],
723-
"cdn-noversion": [ "<%= dirs.cdn.noversion %>" ]
732+
"googleCDN": [ "<%= dirs.cdn.google %>" ],
733+
"jqueryCDN": [ "<%= dirs.cdn.jquery %>" ]
724734
}
725735
});
726736

@@ -752,19 +762,46 @@ module.exports = function( grunt ) {
752762
grunt.registerTask( "css", [ "cssbuild" ] );
753763
grunt.registerTask( "css:release", [ "css", "cssmin" ] );
754764

755-
grunt.registerTask( "demos", [ "concat:demos", "copy:demos.nested-includes", "copy:demos.processed", "copy:demos.unprocessed", "copy:demos.backbone" ] );
756-
757-
grunt.registerTask( "cdn", [ "release:init", "clean:tmp", "config:copy:noversion", "copy:noversion", "hash-manifest:noversion", "compress:cdn-noversion", "clean:tmp" ] );
758-
759-
grunt.registerTask( "dist", [ "config:fetchHeadHash", "js:release", "css:release", "copy:images", "demos", "compress:dist" ] );
765+
grunt.registerTask( "demos", [
766+
"concat:demos",
767+
"copy:demos.nested-includes",
768+
"copy:demos.processed",
769+
"copy:demos.unprocessed",
770+
"copy:demos.backbone"
771+
]);
772+
773+
grunt.registerTask( "cdn", [
774+
"release:init",
775+
"clean:jqueryCDN", "config:copy:jqueryCDN", "copy:jqueryCDN",
776+
"clean:tmp",
777+
"config:copy:googleCDN", "copy:googleCDN", "hash-manifest:googleCDN", "compress:googleCDN",
778+
"clean:tmp"
779+
]);
780+
781+
grunt.registerTask( "dist", [
782+
"config:fetchHeadHash",
783+
"js:release",
784+
"css:release",
785+
"copy:images",
786+
"demos",
787+
"compress:dist"
788+
]);
760789
grunt.registerTask( "dist:release", [ "release:init", "dist", "cdn" ] );
761790
grunt.registerTask( "dist:git", [ "dist", "clean:git", "config:copy:git:-git", "copy:git" ] );
762791

763792
grunt.registerTask( "test", [ "jshint", "config:fetchHeadHash", "js:release", "connect", "qunit:http" ] );
764793
grunt.registerTask( "test:ci", [ "qunit_junit", "connect", "qunit:http" ] );
765794

766-
grunt.registerTask( "deploy", [ "release:init", "release:fail-if-pre", "dist:release" ] ); // TODO: Add copy to cdn repo and add / commit / push
767-
grunt.registerTask( "release", [ "clean:dist", "release:init", "release:check-git-status", "release:set-version", "release:tag", "recurse:deploy", "release:set-next-version" ] );
795+
grunt.registerTask( "deploy", [ "release:init", "release:fail-if-pre", "dist:release" ] );
796+
grunt.registerTask( "release", [
797+
"clean:dist",
798+
"release:init",
799+
"release:check-git-status",
800+
"release:set-version",
801+
"release:tag",
802+
"recurse:deploy",
803+
"release:set-next-version"
804+
]);
768805

769806
// Default grunt
770807
grunt.registerTask( "default", [ "dist" ] );

build/release.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
var scp = require( "scp" ),
2+
path = require( "path" ),
3+
shell = require( "shelljs" );
4+
5+
module.exports = function( Release ) {
6+
Release.define({
7+
issueTracker: "github",
8+
changelogShell: function() {
9+
return "# Changelog for jQuery Mobile v" + Release.newVersion + "\n";
10+
},
11+
12+
generateArtifacts: function( done ) {
13+
Release.exec(
14+
"grunt dist:release"
15+
);
16+
done([]);
17+
},
18+
19+
_uploadZipToWebsite: function( done ) {
20+
var releaseDist = path.join( Release.dir.repo, "dist" ),
21+
zipFilename = "jquery.mobile-" + Release.newVersion + ".zip";
22+
23+
console.log( "Uploading " + zipFilename + " to jquerymobile.com..." );
24+
scp.send({
25+
user: "jqadmin",
26+
host: "jquerymobile.com",
27+
file: path.join( releaseDist, zipFilename),
28+
path: "/var/www/jquerymobile.com/htdocs/resources/download/"
29+
}, function( err ) {
30+
if ( err ) {
31+
Release.abort( "Error while uploading " + zipFilename + " to the website: " + err );
32+
}
33+
done();
34+
});
35+
},
36+
37+
_uploadDemosToWebsite: function( done ) {
38+
var releaseDist = path.join( Release.dir.repo, "dist" ),
39+
zipFilename = "jquery.mobile-" + Release.newVersion + ".zip",
40+
dest = "/var/www/jquerymobile.com/htdocs/demos/" + Release.newVersion;
41+
42+
console.log( "Uploading demos to jquerymobile.com..." );
43+
44+
shell.exec( "ssh [email protected] rm -rf '" + dest + "'" );
45+
shell.exec( "ssh [email protected] mkdir -p '" + dest + "'" );
46+
scp.send({
47+
user: "jqadmin",
48+
host: "jquerymobile.com",
49+
file: path.join( releaseDist, "demos" ) + path.sep + "*",
50+
path: dest
51+
}, function( err ) {
52+
if ( err ) {
53+
Release.abort( "Error while uploading demos to the website: " + err );
54+
}
55+
done();
56+
});
57+
58+
},
59+
60+
_complete: function( done ) {
61+
Release._walk([
62+
Release._uploadZipToWebsite,
63+
Release._uploadDemosToWebsite
64+
], done );
65+
},
66+
67+
complete: function( done ) {
68+
Release._complete(function() {
69+
console.log( "Release of " + Release.project + " version " + Release.newVersion + " complete." );
70+
done();
71+
});
72+
}
73+
});
74+
};

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
},
2525
"devDependencies": {
2626
"async": "0.2.9",
27+
"jsdom": "0.8.3",
2728
"grunt": "0.4.1",
2829
"grunt-contrib-clean": "0.5.0",
2930
"grunt-contrib-compress": "0.5.2",
@@ -37,11 +38,11 @@
3738
"grunt-contrib-uglify": "0.2.2",
3839
"grunt-git-authors": "1.2.0",
3940
"grunt-qunit-junit": "0.1.0-alpha2",
40-
"requirejs": "2.1.8",
4141
"grunt-hash-manifest": "0.4.0",
42-
"jsdom": "0.8.3",
43-
"xmlhttprequest": "1.6.0",
44-
"optimist": "0.6.0"
42+
"optimist": "0.6.0",
43+
"requirejs": "2.1.8",
44+
"scp": "0.0.3",
45+
"xmlhttprequest": "1.6.0"
4546
},
4647
"main": "Gruntfile.js",
4748
"engines": {

0 commit comments

Comments
 (0)