Skip to content

Commit 24ef24b

Browse files
committed
Update publish CDN task. Add release:cdn command
1 parent 67628af commit 24ef24b

File tree

10 files changed

+66
-130
lines changed

10 files changed

+66
-130
lines changed

Gruntfile.js

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -24,74 +24,55 @@ module.exports = function (grunt) {
2424
require('time-grunt')(grunt);
2525
var semver = require('semver');
2626

27-
var pkg = grunt.file.readJSON('package.json');
27+
var version = grunt.file.readJSON('package.json').version;
2828

29-
if (!pkg.version || !semver.valid(pkg.version)) {
29+
if (!version || !semver.valid(version)) {
3030
grunt.fail.fatal('package.json version is not valid', 1);
3131
}
3232

33-
var version = pkg.version.split('.');
34-
35-
var config = {
36-
};
37-
3833
grunt.initConfig({
3934
secrets: {},
40-
config: config,
4135
dist: 'dist',
4236
tmp: '.tmp',
43-
version: {
44-
major: version[0],
45-
minor: version[0] + '.' + version[1],
46-
patch: version[0] + '.' + version[1] + '.' + version[2]
47-
},
48-
pkg: pkg,
4937
gitinfo: {},
50-
browserify: require('./grunt/tasks/browserify').task(grunt),
38+
browserify: require('./grunt/tasks/browserify').task(),
5139
exorcise: require('./grunt/tasks/exorcise').task(),
52-
s3: require('./grunt/tasks/s3').task(grunt, config),
53-
fastly: require('./grunt/tasks/fastly').task(grunt, config),
54-
sass: require('./grunt/tasks/scss').task(grunt, config),
40+
s3: require('./grunt/tasks/s3').task(version),
41+
fastly: require('./grunt/tasks/fastly').task(),
42+
sass: require('./grunt/tasks/scss').task(),
5543
watch: require('./grunt/tasks/watch').task(),
56-
connect: require('./grunt/tasks/connect').task(config),
57-
copy: require('./grunt/tasks/copy').task(config),
44+
connect: require('./grunt/tasks/connect').task(),
45+
copy: require('./grunt/tasks/copy').task(),
5846
clean: require('./grunt/tasks/clean').task(),
59-
concat: require('./grunt/tasks/concat').task(grunt, config),
60-
uglify: require('./grunt/tasks/uglify').task(),
47+
concat: require('./grunt/tasks/concat').task(),
48+
uglify: require('./grunt/tasks/uglify').task(version),
6149
cssmin: require('./grunt/tasks/cssmin').task(),
6250
imagemin: require('./grunt/tasks/imagemin').task(),
6351
jasmine: jasmineCfg,
6452
eslint: { target: getTargetDiff() }
6553
});
6654

67-
grunt.registerTask('publish', function (target) {
55+
grunt.registerTask('publish_s3', function (target) {
6856
if (!grunt.file.exists('secrets.json')) {
6957
grunt.fail.fatal('secrets.json file does not exist, copy secrets.example.json and rename it', 1);
7058
}
7159

7260
// Read secrets
7361
grunt.config.set('secrets', grunt.file.readJSON('secrets.json'));
7462

75-
if (
76-
!grunt.config('secrets') ||
77-
!grunt.config('secrets').S3_KEY ||
78-
!grunt.config('secrets').S3_SECRET ||
79-
!grunt.config('secrets').S3_BUCKET
63+
if (!grunt.config('secrets') ||
64+
!grunt.config('secrets').AWS_USER_S3_KEY ||
65+
!grunt.config('secrets').AWS_USER_S3_SECRET ||
66+
!grunt.config('secrets').AWS_S3_BUCKET
8067
) {
8168
grunt.fail.fatal('S3 keys not specified in secrets.json', 1);
8269
}
8370

8471
grunt.task.run([
85-
'jasmine', // Don't comment this line unless you have a GOOD REASON
8672
's3'
8773
]);
8874
});
8975

90-
grunt.registerTask('set_current_version', function () {
91-
var version = pkg.version;
92-
grunt.config.set('version', version);
93-
});
94-
9576
grunt.registerTask('invalidate', function () {
9677
if (!grunt.file.exists('secrets.json')) {
9778
grunt.fail.fatal('secrets.json file does not exist, copy secrets.example.json and rename it', 1);
@@ -127,7 +108,6 @@ module.exports = function (grunt) {
127108
// Define tasks order for each step as if run in isolation,
128109
// when registering the actual tasks _.uniq is used to discard duplicate tasks from begin run
129110
var allDeps = [
130-
'set_current_version',
131111
'clean:dist_internal',
132112
'gitinfo',
133113
'copy:fonts'

grunt/tasks/browserify.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var bundles = require('./_browserify-bundles');
22

33
module.exports = {
4-
task: function (grunt) {
4+
task: function () {
55
var cfg = {};
66
for (var name in bundles) {
77
var bundle = bundles[name];

grunt/tasks/concat.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = {
2-
task: function(grunt, config) {
2+
task: function() {
33
return {
44
themes: {
55
options: {},

grunt/tasks/connect.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
*/
55
module.exports = {
6-
task: function(config) {
6+
task: function() {
77
return {
88
server: {
99
options: {

grunt/tasks/copy.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = {
2-
task: function (grunt, config) {
2+
task: function () {
33
return {
44
fonts: {
55
expand: true,

grunt/tasks/s3.js

Lines changed: 37 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,48 @@
1+
var semver = require('semver');
12

23
/**
34
* S3 upload grunt task for CartoDB.js
45
*
56
*/
67

78
module.exports = {
8-
task: function(grunt, config) {
9-
return {
9+
task: function(version) {
10+
var tasks = {
1011
options: {
11-
accessKeyId: "<%= secrets.S3_KEY %>",
12-
secretAccessKey: "<%= secrets.S3_SECRET %>",
13-
bucket: "<%= secrets.S3_BUCKET %>",
12+
accessKeyId: "<%= secrets.AWS_USER_S3_KEY %>",
13+
secretAccessKey: "<%= secrets.AWS_USER_S3_SECRET %>",
14+
bucket: "<%= secrets.AWS_S3_BUCKET %>",
1415
dryRun: false
15-
},
16-
17-
'js-major': {
18-
options: {
19-
overwrite: true,
20-
cache: false,
21-
gzip: true,
22-
headers: {
23-
ContentType: 'application/x-javascript'
24-
}
25-
},
26-
files: [
27-
{
28-
// Bug fixing version
29-
action: 'upload',
30-
expand: true,
31-
cwd: 'dist/public',
32-
src: '*.js',
33-
dest: "carto.js/v<%= version.major %>"
34-
}
35-
]
36-
},
16+
}
17+
};
3718

38-
'js-minor': {
39-
options: {
40-
overwrite: true,
41-
cache: false,
42-
gzip: true,
43-
headers: {
44-
ContentType: 'application/x-javascript'
45-
}
46-
},
47-
files: [
48-
{
49-
// Bug fixing version
50-
action: 'upload',
51-
expand: true,
52-
cwd: 'dist/public',
53-
src: '*.js',
54-
dest: "carto.js/v<%= version.minor %>"
55-
}
56-
]
57-
},
19+
var major = semver.major(version);
20+
var minor = semver.minor(version);
21+
var patch = semver.patch(version);
22+
var prerelease = semver.prerelease(version);
5823

59-
'js-patch': {
60-
options: {
61-
overwrite: true,
62-
cache: false,
63-
gzip: true,
64-
headers: {
65-
ContentType: 'application/x-javascript'
66-
}
67-
},
68-
files: [
69-
{
70-
// Bug fixing version
71-
action: 'upload',
72-
expand: true,
73-
cwd: 'dist/public',
74-
src: '*.js',
75-
dest: "carto.js/v<%= version.patch %>"
76-
}
77-
]
78-
},
24+
if (prerelease) {
25+
/**
26+
* Publish prerelease URLs
27+
*/
28+
var base = 'carto.js/v' + major + '.' + minor + '.' + patch + '-';
29+
if (prerelease[0]) { // alpha, beta, rc
30+
tasks['js-prerelease'] = createTask(base + prerelease[0]);
31+
}
32+
if (prerelease[1]) { // number
33+
tasks['js-prerelease-number'] = createTask(base + prerelease[0] + '.' + prerelease[1]);
34+
}
35+
} else {
36+
/**
37+
* Publish release URLs
38+
*/
39+
tasks['js-major'] = createTask('carto.js/v' + major);
40+
tasks['js-minor'] = createTask('carto.js/v' + major + '.' + minor);
41+
tasks['js-patch'] = createTask('carto.js/v' + major + '.' + minor + '.' + patch);
42+
}
7943

80-
'js-full': {
44+
function createTask(dest) {
45+
return {
8146
options: {
8247
overwrite: true,
8348
cache: false,
@@ -88,23 +53,16 @@ module.exports = {
8853
},
8954
files: [
9055
{
91-
// Bug fixing version
9256
action: 'upload',
9357
expand: true,
9458
cwd: 'dist/public',
9559
src: '*.js',
96-
dest: "carto.js/v<%= version.full %>"
60+
dest: dest
9761
}
9862
]
99-
}
63+
};
10064
}
101-
}
102-
}
103-
10465

105-
// How to know if the version is prerelease or
106-
// not :(
107-
function isVersionPrerelease(v) {
108-
var v = v.split('.');
109-
return !/^[0-9]+$/.test(v[v.length - 1]);
66+
return tasks;
67+
}
11068
}

grunt/tasks/scss.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
module.exports = {
7-
task: function (grunt, config) {
7+
task: function () {
88
return {
99
dist: {
1010
options: {

grunt/tasks/uglify.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ var _ = require('underscore');
22
var bundles = require('./_browserify-bundles');
33

44
module.exports = {
5-
task: function(grunt) {
5+
task: function(version) {
66
var cfg = {};
77
var defaultOptions = {
88
sourceMap: true,
99
banner: [
10-
'// CartoDB.js version: <%= grunt.config("version") %>',
11-
'// sha: <%= grunt.config.get("gitinfo").local.branch.current.SHA %>',
10+
'// CartoDB.js version: ' + version,
11+
'// sha: <%= gitinfo.local.branch.current.SHA %>',
1212
].join("\n"),
1313
};
1414

scripts/release_cdn.sh

100644100755
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ npm run build
1414

1515
echo "Uploading to CDN..."
1616

17-
grunt publish
17+
grunt publish_s3
18+
grunt invalidate
1819

1920
echo "All done."

secrets.example.json

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
{
2-
"S3_KEY": "",
3-
"S3_SECRET": "",
4-
"S3_BUCKET": "",
5-
"AWS_ACCESS_KEY": "",
6-
"AWS_SECRET_KEY": "",
7-
"AWS_DISTRIBUTION": "",
2+
"AWS_USER_S3_KEY": "",
3+
"AWS_USER_S3_SECRET": "",
4+
"AWS_S3_BUCKET": "",
85
"FASTLY_API_KEY": "",
96
"FASTLY_CARTODB_SERVICE": ""
10-
}
7+
}

0 commit comments

Comments
 (0)