-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpost.js
64 lines (49 loc) · 2.39 KB
/
post.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const core = require("@actions/core");
const { exec } = require("child_process");
const { promisify } = require("util");
const execAsync = promisify(exec);
const builder = core.getInput("builder");
const path = core.getInput("cache-path");
async function post() {
try {
core.info("Before pruning:");
var {stdout, stderr} = await execAsync(`docker buildx du`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
var {stdout, stderr} = await execAsync(`docker buildx prune --force --filter type=regular`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
var {stdout, stderr} = await execAsync(`docker buildx prune --force --filter type=source.local`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
var {stdout, stderr} = await execAsync(`docker buildx prune --force --filter type=frontend`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
var {stdout, stderr} = await execAsync(`docker buildx prune --force --filter type=internal`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
var {stdout, stderr} = await execAsync(`docker buildx prune --force --filter type=exec.cachemount --keep-storage ${core.getInput('cache-max-size')}`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
core.info("After pruning:");
var {stdout, stderr} = await execAsync(`docker buildx du`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
var {stdout, stderr} = await execAsync(`docker buildx du --verbose`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
var {stdout, stderr} = await execAsync(`docker run --rm \
--volumes-from ${builder} \
-v ${path}:/cache \
alpine /bin/sh -c "cd / && \
find var/lib/buildkit -type s -print > /tmp/sockets-to-exclude && \
cat /tmp/sockets-to-exclude && \
tar cf /cache/buildkit-state.tar -X /tmp/sockets-to-exclude var/lib/buildkit"`);
core.info(`stdout:\n${stdout}\n`);
if (stderr) { core.error(`stderr:\n${stderr}\n`); }
core.info("Cache archived successfully");
} catch (error) {
core.error(`Cache archive failed: ${error}`);
}
}
post();