Skip to content

Commit 764664e

Browse files
committed
Fix Docker artifact harness entrypoint handling
1 parent 677b0c0 commit 764664e

2 files changed

Lines changed: 74 additions & 16 deletions

File tree

deployment/release/test-release-artifacts-docker.mjs

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -445,17 +445,17 @@ function writeContainerConfig(workDir, name, bootstrapPeers) {
445445
return configPath;
446446
}
447447

448-
function startFullNode({
448+
export function buildFullNodeRunArgs({
449449
containerName,
450450
imageName,
451451
configPath,
452452
networkName,
453453
platform,
454454
binaryPath = '/opt/spacedatanetwork/bin/spacedatanetwork',
455-
configTargetPath = '/etc/spacedatanetwork/config.yaml'
455+
configTargetPath = '/etc/spacedatanetwork/config.yaml',
456+
entrypoint
456457
}) {
457-
log(`starting ${containerName}`);
458-
runDocker([
458+
const args = [
459459
'run',
460460
'-d',
461461
'--platform',
@@ -465,25 +465,36 @@ function startFullNode({
465465
'--network',
466466
networkName,
467467
'-v',
468-
`${configPath}:${configTargetPath}:ro`,
468+
`${configPath}:${configTargetPath}:ro`
469+
];
470+
if (entrypoint) {
471+
args.push('--entrypoint', entrypoint);
472+
}
473+
args.push(
469474
imageName,
470-
binaryPath,
475+
...(binaryPath === null ? [] : [binaryPath]),
471476
'daemon',
472477
'--config',
473478
configTargetPath
474-
]);
479+
);
480+
return args;
481+
}
482+
483+
function startFullNode(options) {
484+
log(`starting ${options.containerName}`);
485+
runDocker(buildFullNodeRunArgs(options));
475486
}
476487

477-
function startEdgeNode({
488+
export function buildEdgeNodeRunArgs({
478489
containerName,
479490
imageName,
480491
bootstrapPeer,
481492
networkName,
482493
platform,
483-
binaryPath = '/opt/spacedatanetwork/bin/spacedatanetwork-edge'
494+
binaryPath = '/opt/spacedatanetwork/bin/spacedatanetwork-edge',
495+
entrypoint
484496
}) {
485-
log(`starting ${containerName}`);
486-
runDocker([
497+
const args = [
487498
'run',
488499
'-d',
489500
'--platform',
@@ -492,12 +503,23 @@ function startEdgeNode({
492503
containerName,
493504
'--network',
494505
networkName,
506+
];
507+
if (entrypoint) {
508+
args.push('--entrypoint', entrypoint);
509+
}
510+
args.push(
495511
imageName,
496-
binaryPath,
512+
...(entrypoint ? [] : [binaryPath]),
497513
'--listen',
498514
'/ip4/0.0.0.0/tcp/8080/ws',
499515
...generateEdgeArgs({ bootstrapPeer, healthPort: 8081 })
500-
]);
516+
);
517+
return args;
518+
}
519+
520+
function startEdgeNode(options) {
521+
log(`starting ${options.containerName}`);
522+
runDocker(buildEdgeNodeRunArgs(options));
501523
}
502524

503525
function sleep(ms) {
@@ -630,7 +652,7 @@ async function runNetworkTest({ images, workDir, platform, prefix, timeoutMs })
630652
configPath: containerConfig,
631653
networkName,
632654
platform,
633-
binaryPath: '/app/spacedatanetwork',
655+
binaryPath: null,
634656
configTargetPath: '/app/config/full-docker.yaml'
635657
});
636658
startEdgeNode({
@@ -639,7 +661,7 @@ async function runNetworkTest({ images, workDir, platform, prefix, timeoutMs })
639661
bootstrapPeer: seedBootstrap,
640662
networkName,
641663
platform,
642-
binaryPath: '/app/spacedatanetwork-edge'
664+
entrypoint: '/app/spacedatanetwork-edge'
643665
});
644666

645667
await waitForJson({

deployment/release/test-release-artifacts-docker.test.mjs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import {
1010
generateInstallDockerfile,
1111
generateFullNodeConfig,
1212
generateEdgeArgs,
13-
parseDockerLoadImage
13+
parseDockerLoadImage,
14+
buildFullNodeRunArgs,
15+
buildEdgeNodeRunArgs
1416
} from './test-release-artifacts-docker.mjs';
1517

1618
const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), '../..');
@@ -117,6 +119,40 @@ test('network configs bootstrap non-seed nodes to the seed peer', () => {
117119
]);
118120
});
119121

122+
test('container image run args respect the image entrypoint', () => {
123+
const packageFullArgs = buildFullNodeRunArgs({
124+
containerName: 'sdn-full-deb',
125+
imageName: 'sdn-artifact-full-deb:latest',
126+
configPath: '/tmp/full.yaml',
127+
networkName: 'sdn-net',
128+
platform: 'linux/amd64'
129+
});
130+
const containerFullArgs = buildFullNodeRunArgs({
131+
containerName: 'sdn-container-full',
132+
imageName: 'dockerdigitalarsenal/space-data-network:v1.0.3-beta.1',
133+
configPath: '/tmp/container.yaml',
134+
networkName: 'sdn-net',
135+
platform: 'linux/amd64',
136+
binaryPath: null,
137+
configTargetPath: '/app/config/full-docker.yaml'
138+
});
139+
const containerEdgeArgs = buildEdgeNodeRunArgs({
140+
containerName: 'sdn-container-edge',
141+
imageName: 'dockerdigitalarsenal/space-data-network:v1.0.3-beta.1',
142+
bootstrapPeer: '/dns4/sdn-full-deb/tcp/4001/p2p/12D3KooWSeed',
143+
networkName: 'sdn-net',
144+
platform: 'linux/amd64',
145+
entrypoint: '/app/spacedatanetwork-edge'
146+
});
147+
148+
assert(packageFullArgs.includes('/opt/spacedatanetwork/bin/spacedatanetwork'));
149+
assert.deepEqual(containerFullArgs.slice(-3), ['daemon', '--config', '/app/config/full-docker.yaml']);
150+
assert(!containerFullArgs.includes('/app/spacedatanetwork'));
151+
assert(containerEdgeArgs.includes('--entrypoint'));
152+
assert.equal(containerEdgeArgs[containerEdgeArgs.indexOf('--entrypoint') + 1], '/app/spacedatanetwork-edge');
153+
assert(!containerEdgeArgs.slice(containerEdgeArgs.indexOf('dockerdigitalarsenal/space-data-network:v1.0.3-beta.1') + 1).includes('/app/spacedatanetwork-edge'));
154+
});
155+
120156
test('full-node package and VM bundle scripts include the WasmEdge runtime', () => {
121157
const packageScript = readFileSync(join(repoRoot, 'deployment/packaging/build-linux-packages.sh'), 'utf8');
122158
const vmScript = readFileSync(join(repoRoot, 'deployment/scripts/package-linux-vm-bundle.sh'), 'utf8');

0 commit comments

Comments
 (0)