feat(images): can now import and export images, start work on local 100% JS oci imageregistry

This commit is contained in:
2024-06-05 14:10:44 +02:00
parent a5f4d93f50
commit e06ef454a6
17 changed files with 3653 additions and 2477 deletions

View File

@ -1,4 +1,8 @@
import { expect, tap } from '@push.rocks/tapbundle';
import * as plugins from '../ts/plugins.js';
import * as paths from '../ts/paths.js';
import * as docker from '../ts/index.js';
let testDockerHost: docker.DockerHost;
@ -40,8 +44,10 @@ tap.test('should remove a network', async () => {
// Images
tap.test('should pull an image from imagetag', async () => {
const image = await docker.DockerImage.createFromRegistry(testDockerHost, {
imageUrl: 'hosttoday/ht-docker-node',
imageTag: 'alpine',
creationObject: {
imageUrl: 'hosttoday/ht-docker-node',
imageTag: 'alpine',
},
});
expect(image).toBeInstanceOf(docker.DockerImage);
console.log(image);
@ -93,7 +99,9 @@ tap.test('should create a service', async () => {
contentArg: '{"hi": "wow"}',
});
const testImage = await docker.DockerImage.createFromRegistry(testDockerHost, {
imageUrl: 'registry.gitlab.com/hosttoday/ht-docker-static',
creationObject: {
imageUrl: 'code.foss.global/host.today/ht-docker-node:latest',
}
});
const testService = await docker.DockerService.createService(testDockerHost, {
image: testImage,
@ -110,4 +118,34 @@ tap.test('should create a service', async () => {
await testSecret.remove();
});
tap.start();
tap.skip.test('should export images', async (toolsArg) => {
const done = toolsArg.defer();
const testImage = await docker.DockerImage.createFromRegistry(testDockerHost, {
creationObject: {
imageUrl: 'code.foss.global/host.today/ht-docker-node:latest',
}
});
const fsWriteStream = plugins.smartfile.fsStream.createWriteStream(
plugins.path.join(paths.nogitDir, 'testimage.tar')
);
const exportStream = await testImage.exportToTarStream();
exportStream.pipe(fsWriteStream).on('finish', () => {
done.resolve();
});
await done.promise;
});
tap.test('should import images', async (toolsArg) => {
const done = toolsArg.defer();
const fsReadStream = plugins.smartfile.fsStream.createReadStream(
plugins.path.join(paths.nogitDir, 'testimage.tar')
);
await docker.DockerImage.createFromTarStream(testDockerHost, {
tarStream: fsReadStream,
creationObject: {
imageUrl: 'code.foss.global/host.today/ht-docker-node:latest',
}
})
})
export default tap.start();