@@ -32,13 +32,15 @@ jobs:
32
32
try {
33
33
var token = "";
34
34
var refresh = async () => {
35
+ console.log("Authenticate against registry");
35
36
var resp = await fetch("https://ghcr.io/token?service=registry.docker.io&scope=repository:${{ github.repository_owner }}/runner-images:pull,push", { method: "GET", redirect: "manual", credentials: "include", headers: {
36
37
"Authorization": "Basic " + btoa("${{ github.actor }}:${{ github.token }}")
37
38
} });
38
39
console.log(JSON.stringify(resp.status));
39
40
token = (await resp.json()).token;
40
41
}
41
42
if(process.env.UPLOAD_LAYER) {
43
+ console.log("Uploading Layer");
42
44
await refresh();
43
45
var resp = await fetch("https://ghcr.io/v2/${{ github.repository_owner }}/runner-images/blobs/uploads/", { method: "POST", redirect: "manual", body: "", credentials: "include", headers: {
44
46
"Authorization": "Bearer " + token
@@ -53,17 +55,34 @@ jobs:
53
55
console.log(JSON.stringify(resp.status));
54
56
location = resp.headers.get("Location");
55
57
console.log("NEXT_URL:" + location);
56
- await refresh();
57
- var url = "https://ghcr.io" + location + "?digest=sha256:" + (await fs.promises.readFile("sha2.txt", { encoding: "utf-8" })).trim();
58
- console.log("url:" + url);
59
- resp = await fetch(url, { method: "PUT", redirect: "manual", duplex: "half", credentials: "include", headers: {
60
- "Content-Type": "application/octet-stream",
61
- "Content-Length": "0",
62
- "Authorization": "Bearer " + token
63
- } });
64
- console.log(JSON.stringify(resp.status));
65
- location = resp.headers.get("Location");
66
- console.log("NEXT_URL:" + location);
58
+ console.log("Committing Layer");
59
+ var commitLayer = async () => {
60
+ await refresh();
61
+ var url = "https://ghcr.io" + location + "?digest=sha256:" + (await fs.promises.readFile("sha2.txt", { encoding: "utf-8" })).trim();
62
+ console.log("url:" + url);
63
+ resp = await fetch(url, { method: "PUT", redirect: "manual", duplex: "half", credentials: "include", headers: {
64
+ "Content-Type": "application/octet-stream",
65
+ "Content-Length": "0",
66
+ "Authorization": "Bearer " + token
67
+ } });
68
+ console.log(JSON.stringify(resp.status));
69
+ location = resp.headers.get("Location");
70
+ console.log("NEXT_URL:" + location);
71
+ };
72
+ var finish = false;
73
+ var lastException = null;
74
+ for(var i = 0; i < 10 && !finish; i++) {
75
+ try {
76
+ await commitLayer();
77
+ finish = true;
78
+ } catch(ex) {
79
+ lastException = ex;
80
+ console.log("Failed to commit to registry, attempt: " + i + " Cause: " + ex.toString());
81
+ }
82
+ }
83
+ if(!finish) {
84
+ throw lastException;
85
+ }
67
86
}
68
87
clearInterval(token);
69
88
@@ -410,8 +429,9 @@ jobs:
410
429
- name : Dump gcc
411
430
id : gcc
412
431
run : |
413
- sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/gcc ${{ env.UP }}
432
+ ${{ env.CMD }} || ${{ env.CMD }}
414
433
env :
434
+ CMD : sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/gcc ${{ env.UP }}
415
435
UPLOAD_LAYER : 1
416
436
TAG : runner-gcc
417
437
DIFF_IDS : |
@@ -426,8 +446,9 @@ jobs:
426
446
- name : Dump llvm
427
447
id : llvm
428
448
run : |
429
- sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/llvm-* ${{ env.UP }}
449
+ ${{ env.CMD }} || ${{ env.CMD }}
430
450
env :
451
+ CMD : sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/llvm-* ${{ env.UP }}
431
452
UPLOAD_LAYER : 1
432
453
TAG : runner-llvm
433
454
DIFF_IDS : |
@@ -444,8 +465,9 @@ jobs:
444
465
- name : Dump firefox
445
466
id : firefox
446
467
run : |
447
- sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/firefox ${{ env.UP }}
468
+ ${{ env.CMD }} || ${{ env.CMD }}
448
469
env :
470
+ CMD : sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/firefox ${{ env.UP }}
449
471
UPLOAD_LAYER : 1
450
472
TAG : runner-firefox
451
473
DIFF_IDS : |
@@ -460,8 +482,9 @@ jobs:
460
482
- name : Dump python3
461
483
id : python3
462
484
run : |
463
- sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/python3 ${{ env.UP }}
485
+ ${{ env.CMD }} || ${{ env.CMD }}
464
486
env :
487
+ CMD : sudo tar -C / -c --no-recursion /usr /usr/lib --recursion /usr/lib/python3 ${{ env.UP }}
465
488
UPLOAD_LAYER : 1
466
489
TAG : runner-python3
467
490
DIFF_IDS : |
@@ -476,8 +499,9 @@ jobs:
476
499
- name : Dump android
477
500
id : android
478
501
run : |
479
- sudo tar -C / -c --no-recursion /usr /usr/local /usr/local/lib --recursion /usr/local/lib/android ${{ env.UP }}
502
+ ${{ env.CMD }} || ${{ env.CMD }}
480
503
env :
504
+ CMD : sudo tar -C / -c --no-recursion /usr /usr/local /usr/local/lib --recursion /usr/local/lib/android ${{ env.UP }}
481
505
UPLOAD_LAYER : 1
482
506
TAG : runner-usr-android
483
507
DIFF_IDS : |
@@ -494,8 +518,9 @@ jobs:
494
518
- name : Dump haskell
495
519
id : haskell
496
520
run : |
497
- sudo tar -C / -c --no-recursion /usr /usr/local --recursion /usr/local/.ghcup ${{ env.UP }}
521
+ ${{ env.CMD }} || ${{ env.CMD }}
498
522
env :
523
+ CMD : sudo tar -C / -c --no-recursion /usr /usr/local --recursion /usr/local/.ghcup ${{ env.UP }}
499
524
UPLOAD_LAYER : 1
500
525
TAG : runner-usr-haskell
501
526
DIFF_IDS : |
@@ -512,8 +537,9 @@ jobs:
512
537
- name : Dump powershell
513
538
id : powershell
514
539
run : |
515
- sudo tar -C / -c --no-recursion /usr /usr/local /usr/local/share --recursion /usr/local/share/powershell ${{ env.UP }}
540
+ ${{ env.CMD }} || ${{ env.CMD }}
516
541
env :
542
+ CMD : sudo tar -C / -c --no-recursion /usr /usr/local /usr/local/share --recursion /usr/local/share/powershell ${{ env.UP }}
517
543
UPLOAD_LAYER : 1
518
544
TAG : runner-usr-powershell
519
545
DIFF_IDS : |
@@ -532,8 +558,9 @@ jobs:
532
558
- name : Dump /snap
533
559
id : snap
534
560
run : |
535
- sudo tar -C / -c /snap ${{ env.UP }}
561
+ ${{ env.CMD }} || ${{ env.CMD }}
536
562
env :
563
+ CMD : sudo tar -C / -c /snap ${{ env.UP }}
537
564
UPLOAD_LAYER : 1
538
565
TAG : runner-snap
539
566
DIFF_IDS : |
0 commit comments