Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 63ba88b

Browse files
committed
clean up docker command wrappers
1 parent 8748966 commit 63ba88b

File tree

4 files changed

+50
-54
lines changed

4 files changed

+50
-54
lines changed

tasks/docker.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
var constants = require('./util/constants');
22
var common = require('./util/common');
3-
var containerCommands = require('./util/container_commands');
43

54
var arg = process.argv[2];
5+
var name = constants.testContainerName;
66
var msg, cmd, cb, errorCb;
77

88
switch(arg) {
@@ -12,29 +12,39 @@ switch(arg) {
1212
break;
1313

1414
case 'run':
15-
msg = 'Booting up ' + constants.testContainerName + ' docker container';
16-
cmd = containerCommands.dockerRun;
15+
msg = 'Booting up ' + name + ' docker container';
16+
17+
cmd = [
18+
'docker run -di',
19+
'--name', name,
20+
'--volume', constants.pathToRoot + ':' + constants.testContainerHome,
21+
// save files as local owner
22+
'--user `id --user`',
23+
// override container entry point
24+
'--entrypoint /bin/bash',
25+
constants.testContainerImage
26+
].join(' ');
1727

1828
// if docker-run fails, try docker-start.
1929
errorCb = function(err) {
2030
if(err) {
21-
common.execCmd('docker start ' + constants.testContainerName);
31+
common.execCmd('docker start ' + name);
2232
}
2333
};
2434
break;
2535

2636
case 'stop':
27-
msg = 'Stopping ' + constants.testContainerName + ' docker container';
28-
cmd = 'docker stop ' + constants.testContainerName;
37+
msg = 'Stopping ' + name + ' docker container';
38+
cmd = 'docker stop ' + name;
2939
break;
3040

3141
case 'remove':
32-
msg = 'Removing ' + constants.testContainerName + ' docker container';
33-
cmd = 'docker rm ' + constants.testContainerName;
42+
msg = 'Removing ' + name + ' docker container';
43+
cmd = 'docker rm ' + name;
3444
break;
3545

3646
default:
37-
console.log('Usage: pull, run, setup, stop, remove');
47+
console.log('Usage: pull, run, stop, remove');
3848
process.exit(0);
3949
break;
4050
}

tasks/util/common.js

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
var fs = require('fs');
22
var path = require('path');
33
var exec = require('child_process').exec;
4-
54
var constants = require('./constants');
6-
var containerCommands = require('./container_commands');
75

86
exports.execCmd = function(cmd, cb, errorCb) {
97
cb = cb ? cb : function() {};
@@ -110,15 +108,15 @@ exports.testImageWrapper = function(opts) {
110108

111109
pathToScript = path.join('plotly.js', 'test', 'image', opts.script);
112110

113-
cmd = containerCommands.getExecCmd(
111+
cmd = wrapDockerExecCmd(
114112
isCI,
115113
[pathToElectron, pathToScript, args].join(' ')
116114
);
117115

118116
errorCb = function(err) {
119117
if(/Xvfb failed to start/.test(err)) {
120118
// in case Xvfb port was not closed, kill Xvfb and run cmd again
121-
var pKill = containerCommands.getExecCmd(isCI, 'pkill Xvfb');
119+
var pKill = wrapDockerExecCmd(isCI, 'pkill Xvfb');
122120
exports.execCmd(pKill, function() { exports.execCmd(cmd); });
123121
} else if(err) {
124122
process.exit(err.code);
@@ -129,3 +127,31 @@ exports.testImageWrapper = function(opts) {
129127
console.log(msg);
130128
exports.execCmd(cmd, null, errorCb);
131129
};
130+
131+
function wrapDockerExecCmd(isCI, commands) {
132+
var _commands = Array.isArray(commands) ? commands.slice() : [commands];
133+
var name = constants.testContainerName;
134+
135+
if(isCI) {
136+
_commands = ['export CIRCLECI=1'].concat(_commands);
137+
138+
var id = '$(docker inspect --format \'{{.Id}}\' ' + name + ')';
139+
140+
return [
141+
'sudo', 'lxc-attach',
142+
'-n', id,
143+
'-f', '/var/lib/docker/containers/' + id + '/config.lxc',
144+
'-- bash -c', quoteJoin(_commands)
145+
].join(' ');
146+
}
147+
else {
148+
return [
149+
'docker exec -i', name,
150+
'/bin/bash -c', quoteJoin(_commands)
151+
].join(' ');
152+
}
153+
}
154+
155+
function quoteJoin(arr) {
156+
return '"' + arr.join(' && ') + '"';
157+
}

tasks/util/constants.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ module.exports = {
7878
mapboxAccessToken: 'pk.eyJ1IjoiZXRwaW5hcmQiLCJhIjoiY2luMHIzdHE0MGFxNXVubTRxczZ2YmUxaCJ9.hwWZful0U2CQxit4ItNsiQ',
7979
pathToCredentials: path.join(pathToBuild, 'credentials.json'),
8080

81-
testContainerImage: 'plotly/testbed:latest',
81+
testContainerImage: 'plotly/testbed:image-exporter',
8282
testContainerName: process.env.PLOTLYJS_TEST_CONTAINER_NAME || 'image-exporter-container',
8383
testContainerHome: '/var/www/image-exporter/plotly.js',
8484

tasks/util/container_commands.js

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)