aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/jshipit/JshipIT.java
diff options
context:
space:
mode:
authoraxtloss <axtlos@getcryst.al>2023-05-15 22:36:20 +0200
committeraxtloss <axtlos@getcryst.al>2023-05-15 22:36:20 +0200
commit9736e92073502adcfd466a629f10464f518e2c15 (patch)
tree8d9b0d2b935fe95f5edbcd635b1dbd29313bbee1 /src/main/java/io/github/jshipit/JshipIT.java
parent01c8a59f8aa41296b791c8a64aa3b42da8e7458e (diff)
downloadjshipit-9736e92073502adcfd466a629f10464f518e2c15.tar.gz
jshipit-9736e92073502adcfd466a629f10464f518e2c15.tar.bz2
multithreaded downloads and non docker registries
Runs each layer download on a different thread. Allows using registries other than registry.docker.io
Diffstat (limited to 'src/main/java/io/github/jshipit/JshipIT.java')
-rwxr-xr-xsrc/main/java/io/github/jshipit/JshipIT.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/io/github/jshipit/JshipIT.java b/src/main/java/io/github/jshipit/JshipIT.java
new file mode 100755
index 0000000..30065a0
--- /dev/null
+++ b/src/main/java/io/github/jshipit/JshipIT.java
@@ -0,0 +1,50 @@
+package io.github.jshipit;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+public class JshipIT {
+
+ public int finishedCount;
+ public int downloadThreads;
+
+ public JshipIT(String[] args) {
+ DockerAPIHelper api = new DockerAPIHelper("registry.getcryst.al","crystal/misc", "docker", "latest");
+ JsonNode manifest = null;
+
+ System.out.println("API Token: " + api.getApiToken());
+ try {
+ manifest = api.fetchManifestJson();
+ } catch (IOException e) {
+
+ }
+
+ System.out.println("Manifest: " + manifest);
+
+ Path path = Path.of("./tmp_"+api.getImage()+"_"+api.getTag());
+ try {
+ Files.createDirectory(path);
+ } catch (IOException e) {
+ System.out.println("Failed to create directory: " + path);
+ e.printStackTrace();
+ return;
+ }
+
+ finishedCount = 0;
+ downloadThreads = 0;
+
+ JsonNode layers = manifest.get("layers");
+ for (JsonNode layer : layers) {
+ System.out.println("Layer: " + layer);
+ try {
+ api.fetchBlob(layer.get("digest").asText(), path.toString());
+ downloadThreads = downloadThreads+1;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+} \ No newline at end of file