mirror of
https://github.com/docker/build-push-action.git
synced 2026-10-15 20:06:57 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d08e5c354a | ||
|
|
cbd2dff9a0 | ||
|
|
f76f51f129 | ||
|
|
7d03e66b5f | ||
|
|
98f853d923 | ||
|
|
cadccf6e8c | ||
|
|
03fe8775e3 | ||
|
|
827e36650e | ||
|
|
e25db879d0 | ||
|
|
1ac2573b5c | ||
|
|
5b9c34fb44 | ||
|
|
61cac19eba | ||
|
|
9a57217389 | ||
|
|
975aafcd3e | ||
|
|
2c65e9c5d3 | ||
|
|
230fd87864 | ||
|
|
7c68264114 | ||
|
|
1d41182205 | ||
|
|
6b3878c083 | ||
|
|
582091f7f9 | ||
|
|
38de52285e | ||
|
|
5bc2aa100a | ||
|
|
f939b4c816 | ||
|
|
b4bda282d6 | ||
|
|
683985cc23 | ||
|
|
8913706d4e | ||
|
|
2505ca301c | ||
|
|
2faeb55053 | ||
|
|
217eea940b | ||
|
|
4003f769ac | ||
|
|
dbbef96a17 | ||
|
|
d2c9f1ec18 | ||
|
|
2bd26e7129 | ||
|
|
4c8333398a | ||
|
|
ce71e4f44d | ||
|
|
b66574c6d1 | ||
|
|
db4ff6ca90 | ||
|
|
10e90e3645 | ||
|
|
5262538458 | ||
|
|
cd130e45cb | ||
|
|
806c75105a | ||
|
|
601a80b39c | ||
|
|
8f7fd7c8c7 | ||
|
|
710e335474 | ||
|
|
c4ca8486a6 | ||
|
|
ee4ca427a2 | ||
|
|
f1b3bb51af | ||
|
|
db35f80311 | ||
|
|
a129300020 | ||
|
|
ba15693834 | ||
|
|
367ff5effe | ||
|
|
0149a90b0f | ||
|
|
d1d3988951 | ||
|
|
b88979e155 | ||
|
|
176babefcc | ||
|
|
469bed9e93 | ||
|
|
f477955db5 | ||
|
|
9760b3030f | ||
|
|
d40bd56b13 | ||
|
|
8c1e8f8e5b | ||
|
|
456cabcd5e | ||
|
|
073b0e6385 | ||
|
|
64c9b14150 | ||
|
|
b035f368b0 | ||
|
|
607c92fb2b | ||
|
|
2fec442ac0 | ||
|
|
f91d05adaa | ||
|
|
c6a539d2f5 | ||
|
|
19e4966231 | ||
|
|
01c006c5e0 | ||
|
|
2a7a5fe65d | ||
|
|
56acb03b80 | ||
|
|
6d01ebc3b0 | ||
|
|
9e436ba9f2 | ||
|
|
62929198b5 | ||
|
|
cb8fc7586f | ||
|
|
5225a9fc21 | ||
|
|
ccc2b40e9e | ||
|
|
5dd7b9db36 | ||
|
|
55146d969b | ||
|
|
24e9b7e65f | ||
|
|
263435318d | ||
|
|
c0432d2e01 | ||
|
|
0bb1f27d6b | ||
|
|
5f9dbf956c | ||
|
|
0788c444d8 | ||
|
|
aa179ca4f4 | ||
|
|
1dc7386353 | ||
|
|
9c9803f364 | ||
|
|
db1f6c46e8 | ||
|
|
721e8c79de | ||
|
|
14487ce63c | ||
|
|
0ec91264d8 | ||
|
|
b749522b90 | ||
|
|
c566248492 | ||
|
|
13275dd76e | ||
|
|
67dc78bbaf | ||
|
|
0760504437 | ||
|
|
1c198f4467 | ||
|
|
288d9e2e4a | ||
|
|
88844b95d8 | ||
|
|
1be4244e8d | ||
|
|
094d2bc0cd | ||
|
|
548776e8d0 | ||
|
|
91838c2ba3 | ||
|
|
1332e65dc3 | ||
|
|
66147ca503 | ||
|
|
8ea72f78e8 | ||
|
|
6481840af9 | ||
|
|
84ad562665 | ||
|
|
9bea05fc44 | ||
|
|
471d1dc4e0 | ||
|
|
b89ff0a6f2 | ||
|
|
1e3ae3a4d3 | ||
|
|
b16f42f92a | ||
|
|
dc0fea5e62 | ||
|
|
0adf995921 | ||
|
|
d88cd289df | ||
|
|
3d09a6bd70 | ||
|
|
ca877d9245 | ||
|
|
d2fe919bb5 | ||
|
|
f0fc9ece82 | ||
|
|
67a2d409c0 | ||
|
|
0b1b1c9c43 | ||
|
|
b6a7c2c4ee | ||
|
|
31ca4e5d51 | ||
|
|
e613db9d5a | ||
|
|
b32b51a8ed | ||
|
|
594bf46f0f | ||
|
|
fd37bd55af | ||
|
|
e6478a2405 | ||
|
|
78785bddff | ||
|
|
128779fed7 | ||
|
|
7e094594be | ||
|
|
32ee877a58 | ||
|
|
d1a4129c41 | ||
|
|
49c623eaf8 | ||
|
|
bcc9f4afe7 | ||
|
|
da5b6c75b9 | ||
|
|
11be14d908 | ||
|
|
f5a8591a7f | ||
|
|
8796455d32 | ||
|
|
750f367828 | ||
|
|
48aba3b46d | ||
|
|
678328cf8e | ||
|
|
cdf0a37e6f | ||
|
|
d719b79de1 | ||
|
|
c333dfd43d | ||
|
|
6b56a4c3f8 | ||
|
|
92fb0d73b6 | ||
|
|
40532c5d6f | ||
|
|
70dd953427 | ||
|
|
41b4e8020e | ||
|
|
22cd91d73b | ||
|
|
6bdcc4fb8c | ||
|
|
b5e932e401 | ||
|
|
325a8bf0f1 | ||
|
|
0259cb088b | ||
|
|
1b8e4efb78 | ||
|
|
75ffdcce88 | ||
|
|
73b7dbf5d4 | ||
|
|
f79ca49284 | ||
|
|
5e99dacf67 | ||
|
|
b249570060 | ||
|
|
4f58ea7922 | ||
|
|
49b5ea61c6 | ||
|
|
13c9fddd72 | ||
|
|
e44afff359 | ||
|
|
67ebad331f | ||
|
|
32945a3392 | ||
|
|
e0fe9cf0f2 | ||
|
|
8f1ff6bf9a | ||
|
|
5cd11c3a4c | ||
|
|
0aba704831 | ||
|
|
23c657a01f | ||
|
|
16ebe778df | ||
|
|
646a62b4f2 | ||
|
|
d92ab1347f | ||
|
|
4f7cdeb0f0 | ||
|
|
ad3cd774a4 | ||
|
|
3efbc13366 | ||
|
|
2dbe91db48 | ||
|
|
7de3854c4c | ||
|
|
175aa53a3f | ||
|
|
806a2a461f | ||
|
|
a8d35412fb | ||
|
|
1672e74297 | ||
|
|
a04f51d3b4 | ||
|
|
5176d81f87 | ||
|
|
ec10ae8f96 | ||
|
|
597e8fc414 | ||
|
|
e050dfa622 | ||
|
|
d1fcdb6ee0 | ||
|
|
a6067b9a1a | ||
|
|
1ca370b3a9 | ||
|
|
2c95ebed5c | ||
|
|
d189d0ef33 | ||
|
|
a254f8ca60 | ||
|
|
94dae62c78 | ||
|
|
267a69d6cc | ||
|
|
f23fb2a7cb | ||
|
|
ef76d100ee | ||
|
|
522345f555 | ||
|
|
1a162644f9 | ||
|
|
9eea548195 | ||
|
|
11c2faaa9e | ||
|
|
de2365af33 | ||
|
|
bca5082da7 | ||
|
|
e7aab408d9 | ||
|
|
63eb7590c6 | ||
|
|
53ec48606f | ||
|
|
fe9d9f1d0c | ||
|
|
ad37ba1ad0 | ||
|
|
aabbd3f4d7 | ||
|
|
9c7c277413 | ||
|
|
987902144c | ||
|
|
709dde20a7 | ||
|
|
ec2d640ea6 | ||
|
|
3dc0757c66 | ||
|
|
dcb0699155 | ||
|
|
a3c06e8698 | ||
|
|
e75138d857 | ||
|
|
9552610e81 | ||
|
|
99c83871c1 | ||
|
|
af64c4e18f | ||
|
|
6fdff4fb09 | ||
|
|
9e59c61762 | ||
|
|
49351df2b7 | ||
|
|
723ff6ffad | ||
|
|
15560696de | ||
|
|
57e1d34ac3 | ||
|
|
309982ebc9 | ||
|
|
9476c25b2a | ||
|
|
97be5a4928 | ||
|
|
9cac6c8ea0 | ||
|
|
31159d49c0 | ||
|
|
07e1c3e148 | ||
|
|
f7febd621d | ||
|
|
f6010ea701 | ||
|
|
c0a6b9680f | ||
|
|
0dfe9c3d41 | ||
|
|
94f8f8c2ee | ||
|
|
22f4433c58 | ||
|
|
6721c56015 | ||
|
|
4367da978b | ||
|
|
0883ebe52d | ||
|
|
76e5c2d6ea | ||
|
|
29d67824d8 | ||
|
|
c382f710d3 | ||
|
|
5a5b70d974 | ||
|
|
dc24cf9e25 | ||
|
|
667cb22c52 | ||
|
|
d880b1964b | ||
|
|
e51051ad0b | ||
|
|
86c2bd0031 | ||
|
|
268d2b1611 | ||
|
|
2b8dc7f529 | ||
|
|
840c12be17 | ||
|
|
26368743c0 | ||
|
|
cfed4e995e | ||
|
|
dca03ca8fd | ||
|
|
e030091ff4 | ||
|
|
84354d3b32 | ||
|
|
de5408fe94 | ||
|
|
cfc1555281 | ||
|
|
f6a172d30e | ||
|
|
ca052bb54a | ||
|
|
025c2051f3 | ||
|
|
12076d2fb1 | ||
|
|
ef6cba3353 | ||
|
|
4c16cf906a | ||
|
|
a3118a86c8 | ||
|
|
c86eb8b0f7 | ||
|
|
2a53c6ccda | ||
|
|
ccef1f210d | ||
|
|
79117b6ea5 | ||
|
|
df19a799eb | ||
|
|
0e2ab16cd2 | ||
|
|
54d0f58d64 | ||
|
|
563a2f55e4 | ||
|
|
6003d3266a | ||
|
|
e1e22cdde8 | ||
|
|
fc15b64049 | ||
|
|
6c58ea3670 | ||
|
|
729f7f4926 | ||
|
|
99d83235bc | ||
|
|
1d5307d7af | ||
|
|
cf8d130912 | ||
|
|
8804d8e2ac | ||
|
|
1984549052 | ||
|
|
5bc9e2e9b9 | ||
|
|
eb539f44b1 | ||
|
|
b6ff9e5753 | ||
|
|
929fba6cce | ||
|
|
7f1f43ba33 | ||
|
|
40d6a900e0 | ||
|
|
d56be63626 | ||
|
|
eb3cfeaf00 | ||
|
|
d0fc12d8a4 | ||
|
|
68615d5b67 | ||
|
|
c3b570184c | ||
|
|
7e6f77677b | ||
|
|
2ce6beaad4 | ||
|
|
4c8d1e6826 | ||
|
|
b0312962ef | ||
|
|
96acf63e4c | ||
|
|
f8bc7f4600 | ||
|
|
c2064be02c | ||
|
|
4f02f34098 | ||
|
|
090ca155fc | ||
|
|
ec4854f780 | ||
|
|
2cdde995de | ||
|
|
008747aa03 | ||
|
|
1580753126 | ||
|
|
2a7db1d68a | ||
|
|
35e7dd5921 | ||
|
|
af5a7ed5ba | ||
|
|
2a85189a6c | ||
|
|
6c2079483e | ||
|
|
afdf0c0a67 | ||
|
|
00ae31ab6e | ||
|
|
701942b6e5 | ||
|
|
90e54d0b1d | ||
|
|
831ca179d3 | ||
|
|
6bd0e5492f | ||
|
|
b3eddbb94c | ||
|
|
ffd798c1f1 | ||
|
|
62d8db0960 | ||
|
|
8ab81cb898 | ||
|
|
d47e7c357d | ||
|
|
4976231911 | ||
|
|
d236adc992 | ||
|
|
94d76d3bc1 | ||
|
|
2b28f2a854 | ||
|
|
9f6f8c940b | ||
|
|
8411d080ee |
No files matched your search
+11
-1
@@ -1,2 +1,12 @@
|
||||
/coverage
|
||||
/node_modules
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
@@ -1,3 +0,0 @@
|
||||
/dist/**
|
||||
/coverage/**
|
||||
/node_modules/**
|
||||
@@ -1,24 +0,0 @@
|
||||
{
|
||||
"env": {
|
||||
"node": true,
|
||||
"es6": true,
|
||||
"jest": true
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:jest/recommended",
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint",
|
||||
"jest",
|
||||
"prettier"
|
||||
]
|
||||
}
|
||||
@@ -1,2 +1,4 @@
|
||||
/.yarn/releases/** binary
|
||||
/.yarn/plugins/** binary
|
||||
/dist/** linguist-generated=true
|
||||
/lib/** linguist-generated=true
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
@@ -76,6 +76,7 @@ until $(curl --output /dev/null --silent --head --fail "http://$NEXUS_HOST:$NEXU
|
||||
printf '.'
|
||||
sleep 5
|
||||
done
|
||||
echo "ready!"
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Change user's password"
|
||||
|
||||
@@ -27,9 +27,9 @@ on:
|
||||
type: string
|
||||
|
||||
env:
|
||||
HARBOR_VERSION: v2.7.0
|
||||
HARBOR_VERSION: v2.13.2
|
||||
NEXUS_VERSION: 3.47.1
|
||||
DISTRIBUTION_VERSION: 2.8.1
|
||||
DISTRIBUTION_VERSION: 3.0.0
|
||||
|
||||
jobs:
|
||||
run:
|
||||
@@ -38,6 +38,9 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
-
|
||||
buildx_version: edge
|
||||
buildkit_image: moby/buildkit:latest
|
||||
-
|
||||
buildx_version: latest
|
||||
buildkit_image: moby/buildkit:buildx-stable-1
|
||||
@@ -47,7 +50,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up env
|
||||
if: inputs.type == 'local'
|
||||
@@ -65,10 +68,11 @@ jobs:
|
||||
if: inputs.type == 'local'
|
||||
run: |
|
||||
if [ ! -e /etc/docker/daemon.json ]; then
|
||||
echo '{}' | tee /etc/docker/daemon.json >/dev/null
|
||||
echo '{}' | sudo tee /etc/docker/daemon.json >/dev/null
|
||||
fi
|
||||
DOCKERD_CONFIG=$(jq '.+{"insecure-registries":["http://${{ env.REGISTRY_FQDN }}"]}' /etc/docker/daemon.json)
|
||||
sudo tee /etc/docker/daemon.json <<<"$DOCKERD_CONFIG" >/dev/null
|
||||
cat /etc/docker/daemon.json
|
||||
sudo service docker restart
|
||||
-
|
||||
name: Install ${{ inputs.name }}
|
||||
@@ -88,13 +92,13 @@ jobs:
|
||||
type=raw,gh-runid-${{ github.run_id }}
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ matrix.buildx_version }}
|
||||
config: /tmp/buildkitd.toml
|
||||
buildkitd-config: /tmp/buildkitd.toml
|
||||
buildkitd-flags: --debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host
|
||||
driver-opts: |
|
||||
image=${{ matrix.buildkit_image }}
|
||||
@@ -102,7 +106,7 @@ jobs:
|
||||
-
|
||||
name: Login to Registry
|
||||
if: github.event_name != 'pull_request' && (env.REGISTRY_USER || inputs.username_secret) != ''
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ env.REGISTRY_FQDN || inputs.registry }}
|
||||
username: ${{ env.REGISTRY_USER || secrets[inputs.username_secret] }}
|
||||
|
||||
+416
-71
@@ -24,8 +24,8 @@ on:
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
BUILDX_VERSION: latest
|
||||
BUILDKIT_IMAGE: moby/buildkit:buildx-stable-1
|
||||
BUILDX_VERSION: edge
|
||||
BUILDKIT_IMAGE: moby/buildkit:latest
|
||||
|
||||
jobs:
|
||||
minimal:
|
||||
@@ -33,12 +33,12 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -59,16 +59,16 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -108,16 +108,16 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -167,14 +167,14 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -216,7 +216,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Docker meta
|
||||
id: meta
|
||||
@@ -233,7 +233,7 @@ jobs:
|
||||
type=sha
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -272,7 +272,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Stop docker
|
||||
run: |
|
||||
@@ -288,7 +288,6 @@ jobs:
|
||||
-
|
||||
name: Check
|
||||
run: |
|
||||
echo "${{ toJson(steps.docker_build) }}"
|
||||
if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
|
||||
echo "::error::Should have failed"
|
||||
exit 1
|
||||
@@ -299,13 +298,13 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -324,7 +323,6 @@ jobs:
|
||||
-
|
||||
name: Check
|
||||
run: |
|
||||
echo "${{ toJson(steps.docker_build) }}"
|
||||
if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
|
||||
echo "::error::Should have failed"
|
||||
exit 1
|
||||
@@ -340,7 +338,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Build
|
||||
id: docker_build
|
||||
@@ -356,7 +354,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Build
|
||||
uses: ./
|
||||
@@ -375,10 +373,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -398,10 +396,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -423,10 +421,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -447,10 +445,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -469,10 +467,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -494,10 +492,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -517,10 +515,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -542,10 +540,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -567,6 +565,8 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- buildx: edge
|
||||
buildkit: moby/buildkit:latest
|
||||
- buildx: latest
|
||||
buildkit: moby/buildkit:buildx-stable-1
|
||||
- buildx: latest
|
||||
@@ -576,10 +576,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ matrix.buildx }}
|
||||
driver-opts: |
|
||||
@@ -619,10 +619,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -671,10 +671,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -723,14 +723,14 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -792,10 +792,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver: ${{ matrix.driver }}
|
||||
@@ -862,13 +862,13 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -911,13 +911,13 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -942,12 +942,69 @@ jobs:
|
||||
run: |
|
||||
docker buildx imagetools inspect localhost:5000/name/app:1.0.0 --format '{{json .}}'
|
||||
|
||||
local-cache:
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
registry:
|
||||
image: registry:2
|
||||
ports:
|
||||
- 5000:5000
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
network=host
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
buildkitd-flags: --debug
|
||||
-
|
||||
name: Cache Build
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-local-test-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-local-test-
|
||||
-
|
||||
name: Build and push
|
||||
uses: ./
|
||||
with:
|
||||
context: ./test
|
||||
file: ./test/multi.Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: |
|
||||
localhost:5000/name/app:latest
|
||||
localhost:5000/name/app:1.0.0
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new
|
||||
-
|
||||
name: Inspect
|
||||
run: |
|
||||
docker buildx imagetools inspect localhost:5000/name/app:1.0.0 --format '{{json .}}'
|
||||
-
|
||||
# Temp fix
|
||||
# https://github.com/docker/build-push-action/issues/252
|
||||
# https://github.com/moby/buildkit/issues/1896
|
||||
name: Move cache
|
||||
run: |
|
||||
rm -rf /tmp/.buildx-cache
|
||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||
|
||||
standalone:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Uninstall docker cli
|
||||
run: |
|
||||
@@ -958,7 +1015,7 @@ jobs:
|
||||
fi
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -976,10 +1033,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -998,10 +1055,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver: docker
|
||||
@@ -1032,10 +1089,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -1063,7 +1120,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set malformed docker config
|
||||
run: |
|
||||
@@ -1090,7 +1147,7 @@ jobs:
|
||||
curl --retry 5 --retry-all-errors --retry-delay 0 --connect-timeout 5 --proxy http://127.0.0.1:3128 -v --insecure --head https://www.google.com
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set proxy config
|
||||
run: |
|
||||
@@ -1098,7 +1155,7 @@ jobs:
|
||||
echo '{"proxies":{"default":{"httpProxy":"http://127.0.0.1:3128","httpsProxy":"http://127.0.0.1:3128"}}}' > ~/.docker/config.json
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -1127,10 +1184,10 @@ jobs:
|
||||
curl --retry 5 --retry-all-errors --retry-delay 0 --connect-timeout 5 --proxy http://127.0.0.1:3128 -v --insecure --head https://www.google.com
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -1158,7 +1215,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Docker meta
|
||||
id: meta
|
||||
@@ -1175,7 +1232,7 @@ jobs:
|
||||
type=sha
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
@@ -1197,3 +1254,291 @@ jobs:
|
||||
name: Check manifest
|
||||
run: |
|
||||
docker buildx imagetools inspect ${{ env.DOCKER_IMAGE }}:${{ steps.meta.outputs.version }} --format '{{json .}}'
|
||||
|
||||
multi-output:
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
registry:
|
||||
image: registry:2
|
||||
ports:
|
||||
- 5000:5000
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
network=host
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
buildkitd-flags: --debug
|
||||
-
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
context: ./test
|
||||
file: ./test/Dockerfile
|
||||
outputs: |
|
||||
type=image,name=localhost:5000/name/app:latest,push=true
|
||||
type=docker,name=app:local
|
||||
type=oci,dest=/tmp/oci.tar
|
||||
-
|
||||
name: Check registry
|
||||
run: |
|
||||
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
||||
-
|
||||
name: Check docker
|
||||
run: |
|
||||
docker image inspect app:local
|
||||
-
|
||||
name: Check oci
|
||||
run: |
|
||||
set -ex
|
||||
mkdir -p /tmp/oci-out
|
||||
tar xf /tmp/oci.tar -C /tmp/oci-out
|
||||
tree -nh /tmp/oci-out
|
||||
|
||||
load-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
registry:
|
||||
image: registry:2
|
||||
ports:
|
||||
- 5000:5000
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
network=host
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
buildkitd-flags: --debug
|
||||
-
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
context: ./test
|
||||
file: ./test/Dockerfile
|
||||
load: true
|
||||
push: true
|
||||
tags: localhost:5000/name/app:latest
|
||||
-
|
||||
name: Check registry
|
||||
run: |
|
||||
docker buildx imagetools inspect localhost:5000/name/app:latest --format '{{json .}}'
|
||||
-
|
||||
name: Check docker
|
||||
run: |
|
||||
docker image inspect localhost:5000/name/app:latest
|
||||
|
||||
summary-disable:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
uses: ./action
|
||||
with:
|
||||
file: ./test/Dockerfile
|
||||
env:
|
||||
DOCKER_BUILD_SUMMARY: false
|
||||
|
||||
summary-not-supported:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: v0.12.1
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
uses: ./action
|
||||
with:
|
||||
file: ./test/Dockerfile
|
||||
|
||||
record-upload-disable:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
uses: ./action
|
||||
with:
|
||||
file: ./test/Dockerfile
|
||||
env:
|
||||
DOCKER_BUILD_RECORD_UPLOAD: false
|
||||
|
||||
record-retention-days:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
days:
|
||||
- 2
|
||||
- 0
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
uses: ./action
|
||||
with:
|
||||
file: ./test/Dockerfile
|
||||
env:
|
||||
DOCKER_BUILD_RECORD_RETENTION_DAYS: ${{ matrix.days }}
|
||||
|
||||
checks:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
buildx-version:
|
||||
- edge
|
||||
- latest
|
||||
- v0.14.1
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ matrix.buildx-version }}
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
context: ./test
|
||||
file: ./test/lint.Dockerfile
|
||||
|
||||
annotations-disabled:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
context: ./test
|
||||
file: ./test/lint.Dockerfile
|
||||
env:
|
||||
DOCKER_BUILD_CHECKS_ANNOTATIONS: false
|
||||
|
||||
call-check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
id: docker_build
|
||||
continue-on-error: true
|
||||
uses: ./
|
||||
with:
|
||||
context: ./test
|
||||
file: ./test/lint.Dockerfile
|
||||
call: check
|
||||
-
|
||||
name: Check
|
||||
run: |
|
||||
if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
|
||||
echo "::error::Should have failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
no-default-attestations:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: action
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
|
||||
driver-opts: |
|
||||
image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
|
||||
-
|
||||
name: Build
|
||||
uses: ./action
|
||||
with:
|
||||
file: ./test/Dockerfile
|
||||
env:
|
||||
BUILDX_NO_DEFAULT_ATTESTATIONS: 1
|
||||
@@ -67,13 +67,6 @@ jobs:
|
||||
username_secret: GAR_USERNAME
|
||||
password_secret: GAR_JSON_KEY
|
||||
type: remote
|
||||
-
|
||||
name: Google Container Registry
|
||||
registry: gcr.io
|
||||
slug: gcr.io/sandbox-298914/test-docker-action
|
||||
username_secret: GCR_USERNAME
|
||||
password_secret: GCR_JSON_KEY
|
||||
type: remote
|
||||
-
|
||||
name: Azure Container Registry
|
||||
registry: officialgithubactions.azurecr.io
|
||||
@@ -88,13 +81,13 @@ jobs:
|
||||
username_secret: QUAY_USERNAME
|
||||
password_secret: QUAY_TOKEN
|
||||
type: remote
|
||||
# -
|
||||
# name: Artifactory
|
||||
# registry: sforzando-build-team-local.jfrog.io
|
||||
# slug: sforzando-build-team-local.jfrog.io/build-push-action-e2e
|
||||
# username_secret: ARTIFACTORY_USERNAME
|
||||
# password_secret: ARTIFACTORY_TOKEN
|
||||
# type: remote
|
||||
-
|
||||
name: Artifactory
|
||||
registry: infradock.jfrog.io
|
||||
slug: infradock.jfrog.io/test-ghaction/build-push-action
|
||||
username_secret: ARTIFACTORY_USERNAME
|
||||
password_secret: ARTIFACTORY_TOKEN
|
||||
type: remote
|
||||
-
|
||||
name: Harbor
|
||||
id: harbor
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
name: pr-assign-author
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
|
||||
jobs:
|
||||
run:
|
||||
uses: crazy-max/.github/.github/workflows/pr-assign-author.yml@1b673f36fad86812f538c1df9794904038a23cbf
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
@@ -0,0 +1,21 @@
|
||||
name: publish
|
||||
|
||||
on:
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
packages: write
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Publish
|
||||
uses: actions/publish-immutable-action@v0.0.4
|
||||
@@ -17,14 +17,16 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Test
|
||||
uses: docker/bake-action@v4
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
source: .
|
||||
targets: test
|
||||
-
|
||||
name: Upload coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
uses: codecov/codecov-action@v5
|
||||
with:
|
||||
file: ./coverage/clover.xml
|
||||
files: ./coverage/clover.xml
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
@@ -0,0 +1,49 @@
|
||||
name: update-dist
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
|
||||
jobs:
|
||||
update-dist:
|
||||
if: github.actor == 'dependabot[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: GitHub auth token from GitHub App
|
||||
id: docker-read-app
|
||||
uses: actions/create-github-app-token@v2
|
||||
with:
|
||||
app-id: ${{ secrets.GHACTIONS_REPO_WRITE_APP_ID }}
|
||||
private-key: ${{ secrets.GHACTIONS_REPO_WRITE_APP_PRIVATE_KEY }}
|
||||
owner: docker
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
fetch-depth: 0
|
||||
token: ${{ steps.docker-read-app.outputs.token || github.token }}
|
||||
-
|
||||
name: Build
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
source: .
|
||||
targets: build
|
||||
-
|
||||
name: Commit and push dist
|
||||
run: |
|
||||
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||
(
|
||||
set -x
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git add dist
|
||||
git commit -m "chore: update generated content"
|
||||
git push
|
||||
)
|
||||
else
|
||||
echo "No changes in dist"
|
||||
fi
|
||||
@@ -15,16 +15,17 @@ jobs:
|
||||
prepare:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
targets: ${{ steps.targets.outputs.matrix }}
|
||||
targets: ${{ steps.generate.outputs.targets }}
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
-
|
||||
name: Targets matrix
|
||||
id: targets
|
||||
run: |
|
||||
echo "matrix=$(docker buildx bake validate --print | jq -cr '.group.validate.targets')" >> $GITHUB_OUTPUT
|
||||
name: List targets
|
||||
id: generate
|
||||
uses: docker/bake-action/subaction/list-targets@v6
|
||||
with:
|
||||
target: validate
|
||||
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -35,11 +36,8 @@ jobs:
|
||||
matrix:
|
||||
target: ${{ fromJson(needs.prepare.outputs.targets) }}
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Validate
|
||||
uses: docker/bake-action@v4
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
+14
-52
@@ -1,7 +1,5 @@
|
||||
node_modules
|
||||
lib
|
||||
# https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
|
||||
|
||||
# Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
@@ -9,6 +7,7 @@ npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
@@ -19,34 +18,14 @@ pids
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
@@ -56,36 +35,19 @@ typings/
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.test
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# nuxt.js build output
|
||||
.nuxt
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
@@ -0,0 +1,6 @@
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# yarn v2
|
||||
.yarn/
|
||||
+1
-2
@@ -6,6 +6,5 @@
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": false,
|
||||
"arrowParens": "avoid",
|
||||
"parser": "typescript"
|
||||
"arrowParens": "avoid"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
# https://yarnpkg.com/configuration/yarnrc
|
||||
|
||||
compressionLevel: mixed
|
||||
enableGlobalCache: false
|
||||
enableHardenedMode: true
|
||||
|
||||
logFilters:
|
||||
- code: YN0013
|
||||
level: discard
|
||||
- code: YN0019
|
||||
level: discard
|
||||
- code: YN0076
|
||||
level: discard
|
||||
- code: YN0086
|
||||
level: discard
|
||||
|
||||
nodeLinker: node-modules
|
||||
@@ -19,21 +19,11 @@ ___
|
||||
* [Git context](#git-context)
|
||||
* [Path context](#path-context)
|
||||
* [Examples](#examples)
|
||||
* [Multi-platform image](https://docs.docker.com/build/ci/github-actions/multi-platform/)
|
||||
* [Secrets](https://docs.docker.com/build/ci/github-actions/secrets/)
|
||||
* [Push to multi-registries](https://docs.docker.com/build/ci/github-actions/push-multi-registries/)
|
||||
* [Manage tags and labels](https://docs.docker.com/build/ci/github-actions/manage-tags-labels/)
|
||||
* [Cache management](https://docs.docker.com/build/ci/github-actions/cache/)
|
||||
* [Export to Docker](https://docs.docker.com/build/ci/github-actions/export-docker/)
|
||||
* [Test before push](https://docs.docker.com/build/ci/github-actions/test-before-push/)
|
||||
* [Local registry](https://docs.docker.com/build/ci/github-actions/local-registry/)
|
||||
* [Share built image between jobs](https://docs.docker.com/build/ci/github-actions/share-image-jobs/)
|
||||
* [Named contexts](https://docs.docker.com/build/ci/github-actions/named-contexts/)
|
||||
* [Copy image between registries](https://docs.docker.com/build/ci/github-actions/copy-image-registries/)
|
||||
* [Update Docker Hub repo description](https://docs.docker.com/build/ci/github-actions/update-dockerhub-desc/)
|
||||
* [Summaries](#summaries)
|
||||
* [Customizing](#customizing)
|
||||
* [inputs](#inputs)
|
||||
* [outputs](#outputs)
|
||||
* [environment variables](#environment-variables)
|
||||
* [Troubleshooting](#troubleshooting)
|
||||
* [Contributing](#contributing)
|
||||
|
||||
@@ -65,28 +55,26 @@ name: ci
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: true
|
||||
tags: user/app:latest
|
||||
@@ -104,28 +92,15 @@ expression `{{defaultContext}}`. Here we can use it to provide a subdirectory
|
||||
to the default Git context:
|
||||
|
||||
```yaml
|
||||
-
|
||||
# Setting up Docker Buildx with docker-container driver is required
|
||||
# at the moment to be able to use a subdirectory with Git context
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: "{{defaultContext}}:mysubdir"
|
||||
push: true
|
||||
tags: user/app:latest
|
||||
```
|
||||
|
||||
> **Warning**
|
||||
>
|
||||
> Subdirectory for Git context is available from [BuildKit v0.9.0](https://github.com/moby/buildkit/releases/tag/v0.9.0).
|
||||
> If you're using the `docker` builder (default if `setup-buildx-action` not used),
|
||||
> then BuildKit in Docker Engine will be used. As Docker Engine < v22.x.x embeds
|
||||
> Buildkit 0.8.2 at the moment, it does not support this feature. It's therefore
|
||||
> required to use the `setup-buildx-action` at the moment.
|
||||
|
||||
Building from the current repository automatically uses the [GitHub Token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication),
|
||||
so it does not need to be passed. If you want to authenticate against another
|
||||
private repository, you have to use a [secret](https://docs.docker.com/build/ci/github-actions/secrets)
|
||||
@@ -134,7 +109,7 @@ named `GIT_AUTH_TOKEN` to be able to authenticate against it with Buildx:
|
||||
```yaml
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: true
|
||||
tags: user/app:latest
|
||||
@@ -149,8 +124,6 @@ name: ci
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
@@ -158,22 +131,22 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v5
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
@@ -189,17 +162,54 @@ jobs:
|
||||
* [Cache management](https://docs.docker.com/build/ci/github-actions/cache/)
|
||||
* [Export to Docker](https://docs.docker.com/build/ci/github-actions/export-docker/)
|
||||
* [Test before push](https://docs.docker.com/build/ci/github-actions/test-before-push/)
|
||||
* [Validating build configuration](https://docs.docker.com/build/ci/github-actions/checks/)
|
||||
* [Local registry](https://docs.docker.com/build/ci/github-actions/local-registry/)
|
||||
* [Share built image between jobs](https://docs.docker.com/build/ci/github-actions/share-image-jobs/)
|
||||
* [Named contexts](https://docs.docker.com/build/ci/github-actions/named-contexts/)
|
||||
* [Copy image between registries](https://docs.docker.com/build/ci/github-actions/copy-image-registries/)
|
||||
* [Update Docker Hub repo description](https://docs.docker.com/build/ci/github-actions/update-dockerhub-desc/)
|
||||
* [SBOM and provenance attestations](https://docs.docker.com/build/ci/github-actions/attestations/)
|
||||
* [Annotations](https://docs.docker.com/build/ci/github-actions/annotations/)
|
||||
* [Reproducible builds](https://docs.docker.com/build/ci/github-actions/reproducible-builds/)
|
||||
|
||||
## Summaries
|
||||
|
||||
This action generates a [job summary](https://github.blog/2022-05-09-supercharging-github-actions-with-job-summaries/)
|
||||
that provides a detailed overview of the build execution. The summary shows an
|
||||
overview of all the steps executed during the build, including the build inputs
|
||||
and eventual errors.
|
||||
|
||||

|
||||
|
||||
The summary also includes a link for downloading the build record with
|
||||
additional details about the build, including build stats, logs, outputs, and
|
||||
more. The build record can be imported to Docker Desktop for inspecting the
|
||||
build in greater detail.
|
||||
|
||||
> [!WARNING]
|
||||
>
|
||||
> If you're using the [`actions/download-artifact`](https://github.com/actions/download-artifact)
|
||||
> action in your workflow, you need to ignore the build record artifacts
|
||||
> if `name` and `pattern` inputs are not specified ([defaults to download all artifacts](https://github.com/actions/download-artifact?tab=readme-ov-file#download-all-artifacts) of the workflow),
|
||||
> otherwise the action will fail:
|
||||
> ```yaml
|
||||
> - uses: actions/download-artifact@v4
|
||||
> with:
|
||||
> pattern: "!*.dockerbuild"
|
||||
> ```
|
||||
> More info: https://github.com/actions/toolkit/pull/1874
|
||||
|
||||
Summaries are enabled by default, but can be disabled with the
|
||||
`DOCKER_BUILD_SUMMARY` [environment variable](#environment-variables).
|
||||
|
||||
For more information about summaries, refer to the
|
||||
[documentation](https://docs.docker.com/go/build-summary/).
|
||||
|
||||
## Customizing
|
||||
|
||||
### inputs
|
||||
|
||||
Following inputs can be used as `step.with` keys
|
||||
The following inputs can be used as `step.with` keys:
|
||||
|
||||
> `List` type is a newline-delimited string
|
||||
> ```yaml
|
||||
@@ -224,6 +234,7 @@ Following inputs can be used as `step.with` keys
|
||||
| `build-contexts` | List | List of additional [build contexts](https://docs.docker.com/engine/reference/commandline/buildx_build/#build-context) (e.g., `name=path`) |
|
||||
| `cache-from` | List | List of [external cache sources](https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-from) (e.g., `type=local,src=path/to/dir`) |
|
||||
| `cache-to` | List | List of [cache export destinations](https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-to) (e.g., `type=local,dest=path/to/dir`) |
|
||||
| `call` | String | Set [method for evaluating build](https://docs.docker.com/reference/cli/docker/buildx/build/#call) (e.g., `check`) |
|
||||
| `cgroup-parent` | String | Optional [parent cgroup](https://docs.docker.com/engine/reference/commandline/build/#use-a-custom-parent-cgroup---cgroup-parent) for the container used in the build |
|
||||
| `context` | String | Build's context is the set of files located in the specified [`PATH` or `URL`](https://docs.docker.com/engine/reference/commandline/build/) (default [Git context](#git-context)) |
|
||||
| `file` | String | Path to the Dockerfile. (default `{context}/Dockerfile`) |
|
||||
@@ -232,7 +243,7 @@ Following inputs can be used as `step.with` keys
|
||||
| `network` | String | Set the networking mode for the `RUN` instructions during build |
|
||||
| `no-cache` | Bool | Do not use cache when building the image (default `false`) |
|
||||
| `no-cache-filters` | List/CSV | Do not cache specified stages |
|
||||
| `outputs`¹ | List | List of [output destinations](https://docs.docker.com/engine/reference/commandline/buildx_build/#output) (format: `type=local,dest=path`) |
|
||||
| `outputs` | List | List of [output destinations](https://docs.docker.com/engine/reference/commandline/buildx_build/#output) (format: `type=local,dest=path`) |
|
||||
| `platforms` | List/CSV | List of [target platforms](https://docs.docker.com/engine/reference/commandline/buildx_build/#platform) for build |
|
||||
| `provenance` | Bool/String | Generate [provenance](https://docs.docker.com/build/attestations/slsa-provenance/) attestation for the build (shorthand for `--attest=type=provenance`) |
|
||||
| `pull` | Bool | Always attempt to pull all referenced images (default `false`) |
|
||||
@@ -248,10 +259,6 @@ Following inputs can be used as `step.with` keys
|
||||
| `ulimit` | List | [Ulimit](https://docs.docker.com/engine/reference/commandline/buildx_build/#ulimit) options (e.g., `nofile=1024:1024`) |
|
||||
| `github-token` | String | GitHub Token used to authenticate against a repository for [Git context](#git-context) (default `${{ github.token }}`) |
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> * ¹ multiple `outputs` are [not yet supported](https://github.com/moby/buildkit/issues/1555)
|
||||
|
||||
### outputs
|
||||
|
||||
The following outputs are available:
|
||||
@@ -262,6 +269,15 @@ The following outputs are available:
|
||||
| `digest` | String | Image digest |
|
||||
| `metadata` | JSON | Build result metadata |
|
||||
|
||||
### environment variables
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|--------------------------------------|--------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `DOCKER_BUILD_CHECKS_ANNOTATIONS` | Bool | `true` | If `false`, GitHub annotations are not generated for [build checks](https://docs.docker.com/build/checks/) |
|
||||
| `DOCKER_BUILD_SUMMARY` | Bool | `true` | If `false`, [build summary](https://docs.docker.com/build/ci/github-actions/build-summary/) generation is disabled |
|
||||
| `DOCKER_BUILD_RECORD_UPLOAD` | Bool | `true` | If `false`, build record upload as [GitHub artifact](https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts) is disabled |
|
||||
| `DOCKER_BUILD_RECORD_RETENTION_DAYS` | Number | | Duration after which build record artifact will expire in days. Defaults to repository/org [retention settings](https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#artifact-and-log-retention-policy) if unset or `0` |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
See [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
|
||||
|
||||
+4
-31
@@ -4,7 +4,6 @@
|
||||
* [BuildKit container logs](#buildkit-container-logs)
|
||||
* [With containerd](#with-containerd)
|
||||
* [`repository name must be lowercase`](#repository-name-must-be-lowercase)
|
||||
* [Image not loaded](#image-not-loaded)
|
||||
|
||||
## Cannot push to a registry
|
||||
|
||||
@@ -45,7 +44,7 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
@@ -59,7 +58,7 @@ jobs:
|
||||
uses: crazy-max/ghaction-setup-containerd@v2
|
||||
-
|
||||
name: Build Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
@@ -112,7 +111,7 @@ to generate sanitized tags:
|
||||
tags: latest
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
@@ -130,35 +129,9 @@ Or a dedicated step to sanitize the slug:
|
||||
script: return 'ghcr.io/${{ github.repository }}'.toLowerCase()
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.repo_slug.outputs.result }}:latest
|
||||
```
|
||||
|
||||
## Image not loaded
|
||||
|
||||
Sometimes when your workflows are heavy consumers of disk storage, it can happen that build-push-action declares that the built image is loaded, but then not found in the following workflow steps.
|
||||
|
||||
- You can use the following solution as workaround, to free space on disk before building docker image using the following workflow step
|
||||
|
||||
```yaml
|
||||
# Free disk space
|
||||
- name: Free Disk space
|
||||
shell: bash
|
||||
run: |
|
||||
sudo rm -rf /usr/local/lib/android # will release about 10 GB if you don't need Android
|
||||
sudo rm -rf /usr/share/dotnet # will release about 20GB if you don't need .NET
|
||||
```
|
||||
|
||||
- Another workaround can be to call `docker/setup-buildx-action` with docker driver
|
||||
|
||||
```yaml
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
driver: docker
|
||||
```
|
||||
|
||||
More details in the [related issue](https://github.com/docker/build-push-action/issues/321)
|
||||
@@ -1,207 +0,0 @@
|
||||
import {jest} from '@jest/globals';
|
||||
|
||||
export const context = {
|
||||
repo: {
|
||||
owner: 'docker',
|
||||
repo: 'build-push-action'
|
||||
},
|
||||
ref: 'refs/heads/master',
|
||||
runId: 123456789,
|
||||
payload: {
|
||||
after: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
base_ref: null,
|
||||
before: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
commits: [
|
||||
{
|
||||
author: {
|
||||
email: 'crazy-max@users.noreply.github.com',
|
||||
name: 'CrazyMax',
|
||||
username: 'crazy-max'
|
||||
},
|
||||
committer: {
|
||||
email: 'crazy-max@users.noreply.github.com',
|
||||
name: 'CrazyMax',
|
||||
username: 'crazy-max'
|
||||
},
|
||||
distinct: true,
|
||||
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
message: 'hello dev',
|
||||
timestamp: '2022-04-19T11:27:24+02:00',
|
||||
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
|
||||
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
|
||||
}
|
||||
],
|
||||
compare: 'https://github.com/docker/test-docker-action/compare/5f3331d7f704...860c1904a1ce',
|
||||
created: false,
|
||||
deleted: false,
|
||||
forced: false,
|
||||
head_commit: {
|
||||
author: {
|
||||
email: 'crazy-max@users.noreply.github.com',
|
||||
name: 'CrazyMax',
|
||||
username: 'crazy-max'
|
||||
},
|
||||
committer: {
|
||||
email: 'crazy-max@users.noreply.github.com',
|
||||
name: 'CrazyMax',
|
||||
username: 'crazy-max'
|
||||
},
|
||||
distinct: true,
|
||||
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
message: 'hello dev',
|
||||
timestamp: '2022-04-19T11:27:24+02:00',
|
||||
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
|
||||
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
|
||||
},
|
||||
organization: {
|
||||
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
|
||||
description: 'Docker helps developers bring their ideas to life by conquering the complexity of app development.',
|
||||
events_url: 'https://api.github.com/orgs/docker/events',
|
||||
hooks_url: 'https://api.github.com/orgs/docker/hooks',
|
||||
id: 5429470,
|
||||
issues_url: 'https://api.github.com/orgs/docker/issues',
|
||||
login: 'docker',
|
||||
members_url: 'https://api.github.com/orgs/docker/members{/member}',
|
||||
node_id: 'MDEyOk9yZ2FuaXphdGlvbjU0Mjk0NzA=',
|
||||
public_members_url: 'https://api.github.com/orgs/docker/public_members{/member}',
|
||||
repos_url: 'https://api.github.com/orgs/docker/repos',
|
||||
url: 'https://api.github.com/orgs/docker'
|
||||
},
|
||||
pusher: {
|
||||
email: 'github@crazymax.dev',
|
||||
name: 'crazy-max'
|
||||
},
|
||||
ref: 'refs/heads/dev',
|
||||
repository: {
|
||||
allow_forking: true,
|
||||
archive_url: 'https://api.github.com/repos/docker/test-docker-action/{archive_format}{/ref}',
|
||||
archived: false,
|
||||
assignees_url: 'https://api.github.com/repos/docker/test-docker-action/assignees{/user}',
|
||||
blobs_url: 'https://api.github.com/repos/docker/test-docker-action/git/blobs{/sha}',
|
||||
branches_url: 'https://api.github.com/repos/docker/test-docker-action/branches{/branch}',
|
||||
clone_url: 'https://github.com/docker/test-docker-action.git',
|
||||
collaborators_url: 'https://api.github.com/repos/docker/test-docker-action/collaborators{/collaborator}',
|
||||
comments_url: 'https://api.github.com/repos/docker/test-docker-action/comments{/number}',
|
||||
commits_url: 'https://api.github.com/repos/docker/test-docker-action/commits{/sha}',
|
||||
compare_url: 'https://api.github.com/repos/docker/test-docker-action/compare/{base}...{head}',
|
||||
contents_url: 'https://api.github.com/repos/docker/test-docker-action/contents/{+path}',
|
||||
contributors_url: 'https://api.github.com/repos/docker/test-docker-action/contributors',
|
||||
created_at: 1596792180,
|
||||
default_branch: 'master',
|
||||
deployments_url: 'https://api.github.com/repos/docker/test-docker-action/deployments',
|
||||
description: 'Test "Docker" Actions',
|
||||
disabled: false,
|
||||
downloads_url: 'https://api.github.com/repos/docker/test-docker-action/downloads',
|
||||
events_url: 'https://api.github.com/repos/docker/test-docker-action/events',
|
||||
fork: false,
|
||||
forks: 1,
|
||||
forks_count: 1,
|
||||
forks_url: 'https://api.github.com/repos/docker/test-docker-action/forks',
|
||||
full_name: 'docker/test-docker-action',
|
||||
git_commits_url: 'https://api.github.com/repos/docker/test-docker-action/git/commits{/sha}',
|
||||
git_refs_url: 'https://api.github.com/repos/docker/test-docker-action/git/refs{/sha}',
|
||||
git_tags_url: 'https://api.github.com/repos/docker/test-docker-action/git/tags{/sha}',
|
||||
git_url: 'git://github.com/docker/test-docker-action.git',
|
||||
has_downloads: true,
|
||||
has_issues: true,
|
||||
has_pages: false,
|
||||
has_projects: true,
|
||||
has_wiki: true,
|
||||
homepage: '',
|
||||
hooks_url: 'https://api.github.com/repos/docker/test-docker-action/hooks',
|
||||
html_url: 'https://github.com/docker/test-docker-action',
|
||||
id: 285789493,
|
||||
is_template: false,
|
||||
issue_comment_url: 'https://api.github.com/repos/docker/test-docker-action/issues/comments{/number}',
|
||||
issue_events_url: 'https://api.github.com/repos/docker/test-docker-action/issues/events{/number}',
|
||||
issues_url: 'https://api.github.com/repos/docker/test-docker-action/issues{/number}',
|
||||
keys_url: 'https://api.github.com/repos/docker/test-docker-action/keys{/key_id}',
|
||||
labels_url: 'https://api.github.com/repos/docker/test-docker-action/labels{/name}',
|
||||
language: 'JavaScript',
|
||||
languages_url: 'https://api.github.com/repos/docker/test-docker-action/languages',
|
||||
license: {
|
||||
key: 'mit',
|
||||
name: 'MIT License',
|
||||
node_id: 'MDc6TGljZW5zZTEz',
|
||||
spdx_id: 'MIT',
|
||||
url: 'https://api.github.com/licenses/mit'
|
||||
},
|
||||
master_branch: 'master',
|
||||
merges_url: 'https://api.github.com/repos/docker/test-docker-action/merges',
|
||||
milestones_url: 'https://api.github.com/repos/docker/test-docker-action/milestones{/number}',
|
||||
mirror_url: null,
|
||||
name: 'test-docker-action',
|
||||
node_id: 'MDEwOlJlcG9zaXRvcnkyODU3ODk0OTM=',
|
||||
notifications_url: 'https://api.github.com/repos/docker/test-docker-action/notifications{?since,all,participating}',
|
||||
open_issues: 6,
|
||||
open_issues_count: 6,
|
||||
organization: 'docker',
|
||||
owner: {
|
||||
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
|
||||
email: 'info@docker.com',
|
||||
events_url: 'https://api.github.com/users/docker/events{/privacy}',
|
||||
followers_url: 'https://api.github.com/users/docker/followers',
|
||||
following_url: 'https://api.github.com/users/docker/following{/other_user}',
|
||||
gists_url: 'https://api.github.com/users/docker/gists{/gist_id}',
|
||||
gravatar_id: '',
|
||||
html_url: 'https://github.com/docker',
|
||||
id: 5429470,
|
||||
login: 'docker',
|
||||
name: 'docker',
|
||||
node_id: 'MDEyOk9yZ2FuaXphdGlvbjU0Mjk0NzA=',
|
||||
organizations_url: 'https://api.github.com/users/docker/orgs',
|
||||
received_events_url: 'https://api.github.com/users/docker/received_events',
|
||||
repos_url: 'https://api.github.com/users/docker/repos',
|
||||
site_admin: false,
|
||||
starred_url: 'https://api.github.com/users/docker/starred{/owner}{/repo}',
|
||||
subscriptions_url: 'https://api.github.com/users/docker/subscriptions',
|
||||
type: 'Organization',
|
||||
url: 'https://api.github.com/users/docker'
|
||||
},
|
||||
private: true,
|
||||
pulls_url: 'https://api.github.com/repos/docker/test-docker-action/pulls{/number}',
|
||||
pushed_at: 1650360446,
|
||||
releases_url: 'https://api.github.com/repos/docker/test-docker-action/releases{/id}',
|
||||
size: 796,
|
||||
ssh_url: 'git@github.com:docker/test-docker-action.git',
|
||||
stargazers: 0,
|
||||
stargazers_count: 0,
|
||||
stargazers_url: 'https://api.github.com/repos/docker/test-docker-action/stargazers',
|
||||
statuses_url: 'https://api.github.com/repos/docker/test-docker-action/statuses/{sha}',
|
||||
subscribers_url: 'https://api.github.com/repos/docker/test-docker-action/subscribers',
|
||||
subscription_url: 'https://api.github.com/repos/docker/test-docker-action/subscription',
|
||||
svn_url: 'https://github.com/docker/test-docker-action',
|
||||
tags_url: 'https://api.github.com/repos/docker/test-docker-action/tags',
|
||||
teams_url: 'https://api.github.com/repos/docker/test-docker-action/teams',
|
||||
topics: [],
|
||||
trees_url: 'https://api.github.com/repos/docker/test-docker-action/git/trees{/sha}',
|
||||
updated_at: '2022-04-19T09:05:09Z',
|
||||
url: 'https://github.com/docker/test-docker-action',
|
||||
visibility: 'private',
|
||||
watchers: 0,
|
||||
watchers_count: 0
|
||||
},
|
||||
sender: {
|
||||
avatar_url: 'https://avatars.githubusercontent.com/u/1951866?v=4',
|
||||
events_url: 'https://api.github.com/users/crazy-max/events{/privacy}',
|
||||
followers_url: 'https://api.github.com/users/crazy-max/followers',
|
||||
following_url: 'https://api.github.com/users/crazy-max/following{/other_user}',
|
||||
gists_url: 'https://api.github.com/users/crazy-max/gists{/gist_id}',
|
||||
gravatar_id: '',
|
||||
html_url: 'https://github.com/crazy-max',
|
||||
id: 1951866,
|
||||
login: 'crazy-max',
|
||||
node_id: 'MDQ6VXNlcjE5NTE4NjY=',
|
||||
organizations_url: 'https://api.github.com/users/crazy-max/orgs',
|
||||
received_events_url: 'https://api.github.com/users/crazy-max/received_events',
|
||||
repos_url: 'https://api.github.com/users/crazy-max/repos',
|
||||
site_admin: false,
|
||||
starred_url: 'https://api.github.com/users/crazy-max/starred{/owner}{/repo}',
|
||||
subscriptions_url: 'https://api.github.com/users/crazy-max/subscriptions',
|
||||
type: 'User',
|
||||
url: 'https://api.github.com/users/crazy-max'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const getOctokit = jest.fn();
|
||||
+310
-123
@@ -1,60 +1,59 @@
|
||||
import {beforeEach, describe, expect, jest, test} from '@jest/globals';
|
||||
import {afterEach, beforeEach, describe, expect, test, vi} from 'vitest';
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
import {Builder} from '@docker/actions-toolkit/lib/buildx/builder';
|
||||
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx';
|
||||
import {Context} from '@docker/actions-toolkit/lib/context';
|
||||
import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
|
||||
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/builder';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github';
|
||||
|
||||
import * as context from '../src/context';
|
||||
import {Builder} from '@docker/actions-toolkit/lib/buildx/builder.js';
|
||||
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
|
||||
import {Build} from '@docker/actions-toolkit/lib/buildx/build.js';
|
||||
import {Context} from '@docker/actions-toolkit/lib/context.js';
|
||||
import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
|
||||
const tmpDir = path.join('/tmp', '.docker-build-push-jest');
|
||||
const tmpName = path.join(tmpDir, '.tmpname-jest');
|
||||
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder.js';
|
||||
|
||||
import repoFixture from './fixtures/github-repo.json';
|
||||
jest.spyOn(GitHub.prototype, 'repoData').mockImplementation((): Promise<GitHubRepo> => {
|
||||
return <Promise<GitHubRepo>>(repoFixture as unknown);
|
||||
});
|
||||
import * as context from '../src/context.js';
|
||||
|
||||
jest.spyOn(Context, 'tmpDir').mockImplementation((): string => {
|
||||
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'context-'));
|
||||
const tmpName = path.join(tmpDir, '.tmpname-vi');
|
||||
const fixturesDir = path.join(__dirname, 'fixtures');
|
||||
|
||||
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
|
||||
if (!fs.existsSync(tmpDir)) {
|
||||
fs.mkdirSync(tmpDir, {recursive: true});
|
||||
}
|
||||
return tmpDir;
|
||||
});
|
||||
|
||||
jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
|
||||
vi.spyOn(Context, 'tmpName').mockImplementation((): string => {
|
||||
return tmpName;
|
||||
});
|
||||
|
||||
jest.spyOn(Docker, 'isAvailable').mockImplementation(async (): Promise<boolean> => {
|
||||
vi.spyOn(Docker, 'isAvailable').mockImplementation(async (): Promise<boolean> => {
|
||||
return true;
|
||||
});
|
||||
|
||||
jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
|
||||
const metadataJson = path.join(tmpDir, 'metadata.json');
|
||||
vi.spyOn(Build.prototype, 'getMetadataFilePath').mockImplementation((): string => {
|
||||
return metadataJson;
|
||||
});
|
||||
|
||||
const imageIDFilePath = path.join(tmpDir, 'iidfile.txt');
|
||||
vi.spyOn(Build.prototype, 'getImageIDFilePath').mockImplementation((): string => {
|
||||
return imageIDFilePath;
|
||||
});
|
||||
|
||||
type BuilderInfoFixture = Omit<BuilderInfo, 'lastActivity'> & {lastActivity: string};
|
||||
const builderInfoFixture = <BuilderInfoFixture>JSON.parse(fs.readFileSync(path.join(fixturesDir, 'builder-info.json'), {encoding: 'utf-8'}).trim());
|
||||
vi.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<BuilderInfo> => {
|
||||
return {
|
||||
name: 'builder2',
|
||||
driver: 'docker-container',
|
||||
lastActivity: new Date('2023-01-16 09:45:23 +0000 UTC'),
|
||||
nodes: [
|
||||
{
|
||||
buildkit: 'v0.11.0',
|
||||
'buildkitd-flags': '--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
|
||||
'driver-opts': ['BUILDKIT_STEP_LOG_MAX_SIZE=10485760', 'BUILDKIT_STEP_LOG_MAX_SPEED=10485760', 'JAEGER_TRACE=localhost:6831', 'image=moby/buildkit:latest', 'network=host'],
|
||||
endpoint: 'unix:///var/run/docker.sock',
|
||||
name: 'builder20',
|
||||
platforms: 'linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6',
|
||||
status: 'running'
|
||||
}
|
||||
]
|
||||
...builderInfoFixture,
|
||||
lastActivity: new Date(builderInfoFixture.lastActivity)
|
||||
};
|
||||
});
|
||||
|
||||
describe('getArgs', () => {
|
||||
const originalEnv = process.env;
|
||||
beforeEach(() => {
|
||||
process.env = Object.keys(process.env).reduce((object, key) => {
|
||||
if (!key.startsWith('INPUT_')) {
|
||||
@@ -63,6 +62,9 @@ describe('getArgs', () => {
|
||||
return object;
|
||||
}, {});
|
||||
});
|
||||
afterEach(() => {
|
||||
process.env = originalEnv;
|
||||
});
|
||||
|
||||
// prettier-ignore
|
||||
test.each([
|
||||
@@ -78,9 +80,10 @@ describe('getArgs', () => {
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
1,
|
||||
@@ -101,9 +104,10 @@ ccc"`],
|
||||
'--build-arg', 'MY_ARG=val1,val2,val3',
|
||||
'--build-arg', 'ARG=val',
|
||||
'--build-arg', `MULTILINE=aaaa\nbbbb\nccc`,
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
2,
|
||||
@@ -117,11 +121,12 @@ ccc"`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--tag', 'name/app:7.4',
|
||||
'--tag', 'name/app:latest',
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
3,
|
||||
@@ -141,7 +146,8 @@ ccc"`],
|
||||
'--label', 'org.opencontainers.image.description=concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit',
|
||||
'--output', 'type=local,dest=./release-out',
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
4,
|
||||
@@ -158,7 +164,8 @@ ccc"`],
|
||||
'build',
|
||||
'--platform', 'linux/amd64,linux/arm64',
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
5,
|
||||
@@ -172,9 +179,10 @@ ccc"`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
6,
|
||||
@@ -189,10 +197,11 @@ ccc"`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--secret', `id=GIT_AUTH_TOKEN,src=${tmpName}`,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
7,
|
||||
@@ -208,9 +217,10 @@ ccc"`],
|
||||
[
|
||||
'build',
|
||||
'--output', '.',
|
||||
'--secret', `id=GIT_AUTH_TOKEN,src=${tmpName}`,
|
||||
'--secret', `id=GIT_AUTH_TOKEN.github.com,src=${tmpName}`,
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
8,
|
||||
@@ -230,13 +240,14 @@ ccc"`],
|
||||
[
|
||||
'build',
|
||||
'--file', './test/Dockerfile',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--platform', 'linux/amd64,linux/arm64',
|
||||
'--secret', `id=GIT_AUTH_TOKEN,src=${tmpName}`,
|
||||
'--builder', 'builder-git-context-2',
|
||||
'--push',
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
9,
|
||||
@@ -264,7 +275,7 @@ ccc"`],
|
||||
[
|
||||
'build',
|
||||
'--file', './test/Dockerfile',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--platform', 'linux/amd64,linux/arm64',
|
||||
'--secret', `id=GIT_AUTH_TOKEN,src=${tmpName}`,
|
||||
'--secret', `id=MYSECRET,src=${tmpName}`,
|
||||
@@ -273,7 +284,8 @@ ccc"`],
|
||||
'--builder', 'builder-git-context-2',
|
||||
'--push',
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
10,
|
||||
@@ -301,7 +313,7 @@ ccc`],
|
||||
[
|
||||
'build',
|
||||
'--file', './test/Dockerfile',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--platform', 'linux/amd64,linux/arm64',
|
||||
'--secret', `id=GIT_AUTH_TOKEN,src=${tmpName}`,
|
||||
'--secret', `id=MYSECRET,src=${tmpName}`,
|
||||
@@ -310,7 +322,8 @@ ccc`],
|
||||
'--builder', 'builder-git-context-2',
|
||||
'--push',
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
11,
|
||||
@@ -318,7 +331,7 @@ ccc`],
|
||||
new Map<string, string>([
|
||||
['context', 'https://github.com/docker/build-push-action.git#refs/heads/master'],
|
||||
['tag', 'localhost:5000/name/app:latest'],
|
||||
['secret-files', `MY_SECRET=${path.join(__dirname, 'fixtures', 'secret.txt')}`],
|
||||
['secret-files', `MY_SECRET=${path.join(fixturesDir, 'secret.txt')}`],
|
||||
['file', './test/Dockerfile'],
|
||||
['builder', 'builder-git-context-2'],
|
||||
['network', 'host'],
|
||||
@@ -330,13 +343,14 @@ ccc`],
|
||||
[
|
||||
'build',
|
||||
'--file', './test/Dockerfile',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--secret', `id=MY_SECRET,src=${tmpName}`,
|
||||
'--builder', 'builder-git-context-2',
|
||||
'--network', 'host',
|
||||
'--push',
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
12,
|
||||
@@ -356,7 +370,8 @@ ccc`],
|
||||
'--label', 'org.opencontainers.image.description=Reference implementation of operation "filter results (top-n)"',
|
||||
'--output', 'type=local,dest=./release-out',
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
13,
|
||||
@@ -377,12 +392,13 @@ ccc`],
|
||||
'--add-host', 'docker:10.180.0.1',
|
||||
'--add-host', 'foo:10.0.0.1',
|
||||
'--file', './test/Dockerfile',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--metadata-file', metadataJson,
|
||||
'--network', 'host',
|
||||
'--push',
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
14,
|
||||
@@ -406,13 +422,14 @@ nproc=3`],
|
||||
'--add-host', 'foo:10.0.0.1',
|
||||
'--cgroup-parent', 'foo',
|
||||
'--file', './test/Dockerfile',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--shm-size', '2g',
|
||||
'--ulimit', 'nofile=1024:1024',
|
||||
'--ulimit', 'nproc=3',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
15,
|
||||
@@ -426,10 +443,11 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--metadata-file', metadataJson,
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master:docker'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
16,
|
||||
@@ -444,11 +462,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--secret', `id=GIT_AUTH_TOKEN,src=${tmpName}`,
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--secret', `id=GIT_AUTH_TOKEN.github.com,src=${tmpName}`,
|
||||
'--metadata-file', metadataJson,
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master:subdir'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
17,
|
||||
@@ -463,10 +482,11 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
18,
|
||||
@@ -480,11 +500,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
"--provenance", `mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789`,
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
19,
|
||||
@@ -499,11 +520,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
"--provenance", `builder-id=https://github.com/docker/build-push-action/actions/runs/123456789`,
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
20,
|
||||
@@ -518,11 +540,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
"--provenance", `mode=max,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789`,
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,mode=max,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
21,
|
||||
@@ -537,11 +560,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
"--provenance", 'false',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', 'type=provenance,disabled=true',
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
22,
|
||||
@@ -556,11 +580,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
"--provenance", 'builder-id=foo',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', 'type=provenance,builder-id=foo',
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
23,
|
||||
@@ -575,11 +600,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
"--output", 'type=docker',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
24,
|
||||
@@ -593,11 +619,12 @@ nproc=3`],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--load',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
25,
|
||||
@@ -613,14 +640,15 @@ nproc=3`],
|
||||
[
|
||||
'build',
|
||||
'--build-arg', 'FOO=bar#baz',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--load',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
25,
|
||||
26,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
@@ -635,14 +663,15 @@ ANOTHER_SECRET=ANOTHER_SECRET_ENV`]
|
||||
'build',
|
||||
'--secret', 'id=MY_SECRET,env=MY_SECRET_ENV',
|
||||
'--secret', 'id=ANOTHER_SECRET,env=ANOTHER_SECRET_ENV',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--load',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
26,
|
||||
27,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
@@ -656,14 +685,15 @@ ANOTHER_SECRET=ANOTHER_SECRET_ENV`]
|
||||
'build',
|
||||
'--secret', 'id=MY_SECRET,env=MY_SECRET_ENV',
|
||||
'--secret', 'id=ANOTHER_SECRET,env=ANOTHER_SECRET_ENV',
|
||||
'--iidfile', path.join(tmpDir, 'iidfile'),
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--load',
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
27,
|
||||
28,
|
||||
'0.11.0',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
@@ -677,13 +707,14 @@ ANOTHER_SECRET=ANOTHER_SECRET_ENV`]
|
||||
[
|
||||
'build',
|
||||
'--output', 'type=local,dest=./release-out',
|
||||
"--provenance", `mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789`,
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--attest', `type=provenance,mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
28,
|
||||
29,
|
||||
'0.12.0',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
@@ -701,19 +732,175 @@ ANOTHER_SECRET=ANOTHER_SECRET_ENV`]
|
||||
'--annotation', 'manifest:example3=yyy',
|
||||
'--annotation', 'manifest-descriptor[linux/amd64]:example4=zzz',
|
||||
'--output', 'type=local,dest=./release-out',
|
||||
"--provenance", `mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789`,
|
||||
'--metadata-file', path.join(tmpDir, 'metadata-file'),
|
||||
'--attest', `type=provenance,mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
]
|
||||
]
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
30,
|
||||
'0.12.0',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
['outputs', `type=image,"name=localhost:5000/name/app:latest,localhost:5000/name/app:foo",push-by-digest=true,name-canonical=true,push=true`],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false'],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', imageIDFilePath,
|
||||
"--output", `type=image,"name=localhost:5000/name/app:latest,localhost:5000/name/app:foo",push-by-digest=true,name-canonical=true,push=true`,
|
||||
'--attest', `type=provenance,mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
31,
|
||||
'0.13.1',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false'],
|
||||
['provenance', 'mode=max'],
|
||||
['sbom', 'true'],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,mode=max,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--attest', `type=sbom,disabled=false`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
32,
|
||||
'0.13.1',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false'],
|
||||
['attests', 'type=provenance,mode=min'],
|
||||
['provenance', 'mode=max'],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,mode=max,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
33,
|
||||
'0.13.1',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false'],
|
||||
['attests', 'type=provenance,mode=min'],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,mode=min,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
],
|
||||
undefined
|
||||
],
|
||||
[
|
||||
34,
|
||||
'0.13.1',
|
||||
new Map<string, string>([
|
||||
['context', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false']
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--metadata-file', metadataJson,
|
||||
'.'
|
||||
],
|
||||
new Map<string, string>([
|
||||
['BUILDX_NO_DEFAULT_ATTESTATIONS', '1']
|
||||
])
|
||||
],
|
||||
[
|
||||
35,
|
||||
'0.13.1',
|
||||
new Map<string, string>([
|
||||
['github-token', 'abcdefghijklmno0123456789'],
|
||||
['context', '{{defaultContext}}'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false'],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,mode=min,inline-only=true,builder-id=http://10.0.0.5:22827/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--secret', `id=GIT_AUTH_TOKEN.10.0.0.5:22827,src=${tmpName}`,
|
||||
'--metadata-file', metadataJson,
|
||||
'http://10.0.0.5:22827/docker/build-push-action.git#refs/heads/master'
|
||||
],
|
||||
new Map<string, string>([
|
||||
['GITHUB_SERVER_URL', 'http://10.0.0.5:22827'],
|
||||
])
|
||||
],
|
||||
[
|
||||
36,
|
||||
'0.13.1',
|
||||
new Map<string, string>([
|
||||
['github-token', 'abcdefghijklmno0123456789'],
|
||||
['context', '{{defaultContext}}'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false'],
|
||||
]),
|
||||
[
|
||||
'build',
|
||||
'--iidfile', imageIDFilePath,
|
||||
'--attest', `type=provenance,mode=min,inline-only=true,builder-id=https://github.cds.internal.unity3d.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
'--secret', `id=GIT_AUTH_TOKEN.github.cds.internal.unity3d.com,src=${tmpName}`,
|
||||
'--metadata-file', metadataJson,
|
||||
'https://github.cds.internal.unity3d.com/docker/build-push-action.git#refs/heads/master'
|
||||
],
|
||||
new Map<string, string>([
|
||||
['GITHUB_SERVER_URL', 'https://github.cds.internal.unity3d.com'],
|
||||
])
|
||||
],
|
||||
])(
|
||||
'[%d] given %p with %p as inputs, returns %p',
|
||||
async (num: number, buildxVersion: string, inputs: Map<string, string>, expected: Array<string>) => {
|
||||
'[%d] given %o with %o as inputs, returns %o',
|
||||
async (num: number, buildxVersion: string, inputs: Map<string, string>, expected: Array<string>, envs: Map<string, string> | undefined) => {
|
||||
if (envs) {
|
||||
envs.forEach((value: string, name: string) => {
|
||||
process.env[name] = value;
|
||||
});
|
||||
}
|
||||
inputs.forEach((value: string, name: string) => {
|
||||
setInput(name, value);
|
||||
});
|
||||
const toolkit = new Toolkit();
|
||||
jest.spyOn(Buildx.prototype, 'version').mockImplementation(async (): Promise<string> => {
|
||||
vi.spyOn(Buildx.prototype, 'version').mockImplementation(async (): Promise<string> => {
|
||||
return buildxVersion;
|
||||
});
|
||||
const inp = await context.getInputs();
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "builder2",
|
||||
"driver": "docker-container",
|
||||
"lastActivity": "2023-01-16 09:45:23 +0000 UTC",
|
||||
"nodes": [
|
||||
{
|
||||
"buildkit": "v0.11.0",
|
||||
"buildkitd-flags": "--debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host",
|
||||
"driver-opts": [
|
||||
"BUILDKIT_STEP_LOG_MAX_SIZE=10485760",
|
||||
"BUILDKIT_STEP_LOG_MAX_SPEED=10485760",
|
||||
"JAEGER_TRACE=localhost:6831",
|
||||
"image=moby/buildkit:latest",
|
||||
"network=host"
|
||||
],
|
||||
"endpoint": "unix:///var/run/docker.sock",
|
||||
"name": "builder20",
|
||||
"platforms": "linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6",
|
||||
"status": "running"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,362 +0,0 @@
|
||||
{
|
||||
"id": 1296269,
|
||||
"node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
|
||||
"name": "Hello-World",
|
||||
"full_name": "octocat/Hello-World",
|
||||
"owner": {
|
||||
"login": "octocat",
|
||||
"id": 1,
|
||||
"node_id": "MDQ6VXNlcjE=",
|
||||
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/octocat",
|
||||
"html_url": "https://github.com/octocat",
|
||||
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/octocat/Hello-World",
|
||||
"description": "This your first repo!",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/octocat/Hello-World",
|
||||
"archive_url": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}",
|
||||
"assignees_url": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}",
|
||||
"blobs_url": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}",
|
||||
"branches_url": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}",
|
||||
"collaborators_url": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}",
|
||||
"comments_url": "http://api.github.com/repos/octocat/Hello-World/comments{/number}",
|
||||
"commits_url": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}",
|
||||
"compare_url": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}",
|
||||
"contents_url": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}",
|
||||
"contributors_url": "http://api.github.com/repos/octocat/Hello-World/contributors",
|
||||
"deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments",
|
||||
"downloads_url": "http://api.github.com/repos/octocat/Hello-World/downloads",
|
||||
"events_url": "http://api.github.com/repos/octocat/Hello-World/events",
|
||||
"forks_url": "http://api.github.com/repos/octocat/Hello-World/forks",
|
||||
"git_commits_url": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}",
|
||||
"git_refs_url": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}",
|
||||
"git_tags_url": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}",
|
||||
"git_url": "git:github.com/octocat/Hello-World.git",
|
||||
"issue_comment_url": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}",
|
||||
"issue_events_url": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}",
|
||||
"issues_url": "http://api.github.com/repos/octocat/Hello-World/issues{/number}",
|
||||
"keys_url": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}",
|
||||
"labels_url": "http://api.github.com/repos/octocat/Hello-World/labels{/name}",
|
||||
"languages_url": "http://api.github.com/repos/octocat/Hello-World/languages",
|
||||
"merges_url": "http://api.github.com/repos/octocat/Hello-World/merges",
|
||||
"milestones_url": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}",
|
||||
"notifications_url": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}",
|
||||
"pulls_url": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}",
|
||||
"releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}",
|
||||
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
||||
"stargazers_url": "http://api.github.com/repos/octocat/Hello-World/stargazers",
|
||||
"statuses_url": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}",
|
||||
"subscribers_url": "http://api.github.com/repos/octocat/Hello-World/subscribers",
|
||||
"subscription_url": "http://api.github.com/repos/octocat/Hello-World/subscription",
|
||||
"tags_url": "http://api.github.com/repos/octocat/Hello-World/tags",
|
||||
"teams_url": "http://api.github.com/repos/octocat/Hello-World/teams",
|
||||
"trees_url": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}",
|
||||
"clone_url": "https://github.com/octocat/Hello-World.git",
|
||||
"mirror_url": "git:git.example.com/octocat/Hello-World",
|
||||
"hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks",
|
||||
"svn_url": "https://svn.github.com/octocat/Hello-World",
|
||||
"homepage": "https://github.com",
|
||||
"language": null,
|
||||
"forks_count": 9,
|
||||
"stargazers_count": 80,
|
||||
"watchers_count": 80,
|
||||
"size": 108,
|
||||
"default_branch": "master",
|
||||
"open_issues_count": 0,
|
||||
"is_template": true,
|
||||
"topics": [
|
||||
"octocat",
|
||||
"atom",
|
||||
"electron",
|
||||
"api"
|
||||
],
|
||||
"has_issues": true,
|
||||
"has_projects": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"has_downloads": true,
|
||||
"archived": false,
|
||||
"disabled": false,
|
||||
"visibility": "public",
|
||||
"pushed_at": "2011-01-26T19:06:43Z",
|
||||
"created_at": "2011-01-26T19:01:12Z",
|
||||
"updated_at": "2011-01-26T19:14:43Z",
|
||||
"permissions": {
|
||||
"pull": true,
|
||||
"triage": true,
|
||||
"push": false,
|
||||
"maintain": false,
|
||||
"admin": false
|
||||
},
|
||||
"allow_rebase_merge": true,
|
||||
"template_repository": null,
|
||||
"temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O",
|
||||
"allow_squash_merge": true,
|
||||
"delete_branch_on_merge": true,
|
||||
"allow_merge_commit": true,
|
||||
"subscribers_count": 42,
|
||||
"network_count": 0,
|
||||
"license": {
|
||||
"key": "mit",
|
||||
"name": "MIT License",
|
||||
"spdx_id": "MIT",
|
||||
"url": "https://api.github.com/licenses/mit",
|
||||
"node_id": "MDc6TGljZW5zZW1pdA=="
|
||||
},
|
||||
"organization": {
|
||||
"login": "octocat",
|
||||
"id": 1,
|
||||
"node_id": "MDQ6VXNlcjE=",
|
||||
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/octocat",
|
||||
"html_url": "https://github.com/octocat",
|
||||
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||
"type": "Organization",
|
||||
"site_admin": false
|
||||
},
|
||||
"parent": {
|
||||
"id": 1296269,
|
||||
"node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
|
||||
"name": "Hello-World",
|
||||
"full_name": "octocat/Hello-World",
|
||||
"owner": {
|
||||
"login": "octocat",
|
||||
"id": 1,
|
||||
"node_id": "MDQ6VXNlcjE=",
|
||||
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/octocat",
|
||||
"html_url": "https://github.com/octocat",
|
||||
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/octocat/Hello-World",
|
||||
"description": "This your first repo!",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/octocat/Hello-World",
|
||||
"archive_url": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}",
|
||||
"assignees_url": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}",
|
||||
"blobs_url": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}",
|
||||
"branches_url": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}",
|
||||
"collaborators_url": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}",
|
||||
"comments_url": "http://api.github.com/repos/octocat/Hello-World/comments{/number}",
|
||||
"commits_url": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}",
|
||||
"compare_url": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}",
|
||||
"contents_url": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}",
|
||||
"contributors_url": "http://api.github.com/repos/octocat/Hello-World/contributors",
|
||||
"deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments",
|
||||
"downloads_url": "http://api.github.com/repos/octocat/Hello-World/downloads",
|
||||
"events_url": "http://api.github.com/repos/octocat/Hello-World/events",
|
||||
"forks_url": "http://api.github.com/repos/octocat/Hello-World/forks",
|
||||
"git_commits_url": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}",
|
||||
"git_refs_url": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}",
|
||||
"git_tags_url": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}",
|
||||
"git_url": "git:github.com/octocat/Hello-World.git",
|
||||
"issue_comment_url": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}",
|
||||
"issue_events_url": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}",
|
||||
"issues_url": "http://api.github.com/repos/octocat/Hello-World/issues{/number}",
|
||||
"keys_url": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}",
|
||||
"labels_url": "http://api.github.com/repos/octocat/Hello-World/labels{/name}",
|
||||
"languages_url": "http://api.github.com/repos/octocat/Hello-World/languages",
|
||||
"merges_url": "http://api.github.com/repos/octocat/Hello-World/merges",
|
||||
"milestones_url": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}",
|
||||
"notifications_url": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}",
|
||||
"pulls_url": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}",
|
||||
"releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}",
|
||||
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
||||
"stargazers_url": "http://api.github.com/repos/octocat/Hello-World/stargazers",
|
||||
"statuses_url": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}",
|
||||
"subscribers_url": "http://api.github.com/repos/octocat/Hello-World/subscribers",
|
||||
"subscription_url": "http://api.github.com/repos/octocat/Hello-World/subscription",
|
||||
"tags_url": "http://api.github.com/repos/octocat/Hello-World/tags",
|
||||
"teams_url": "http://api.github.com/repos/octocat/Hello-World/teams",
|
||||
"trees_url": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}",
|
||||
"clone_url": "https://github.com/octocat/Hello-World.git",
|
||||
"mirror_url": "git:git.example.com/octocat/Hello-World",
|
||||
"hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks",
|
||||
"svn_url": "https://svn.github.com/octocat/Hello-World",
|
||||
"homepage": "https://github.com",
|
||||
"language": null,
|
||||
"forks_count": 9,
|
||||
"stargazers_count": 80,
|
||||
"watchers_count": 80,
|
||||
"size": 108,
|
||||
"default_branch": "master",
|
||||
"open_issues_count": 0,
|
||||
"is_template": true,
|
||||
"topics": [
|
||||
"octocat",
|
||||
"atom",
|
||||
"electron",
|
||||
"api"
|
||||
],
|
||||
"has_issues": true,
|
||||
"has_projects": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"has_downloads": true,
|
||||
"archived": false,
|
||||
"disabled": false,
|
||||
"visibility": "public",
|
||||
"pushed_at": "2011-01-26T19:06:43Z",
|
||||
"created_at": "2011-01-26T19:01:12Z",
|
||||
"updated_at": "2011-01-26T19:14:43Z",
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"push": false,
|
||||
"pull": true
|
||||
},
|
||||
"allow_rebase_merge": true,
|
||||
"template_repository": null,
|
||||
"temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O",
|
||||
"allow_squash_merge": true,
|
||||
"delete_branch_on_merge": true,
|
||||
"allow_merge_commit": true,
|
||||
"subscribers_count": 42,
|
||||
"network_count": 0
|
||||
},
|
||||
"source": {
|
||||
"id": 1296269,
|
||||
"node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
|
||||
"name": "Hello-World",
|
||||
"full_name": "octocat/Hello-World",
|
||||
"owner": {
|
||||
"login": "octocat",
|
||||
"id": 1,
|
||||
"node_id": "MDQ6VXNlcjE=",
|
||||
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
||||
"gravatar_id": "",
|
||||
"url": "https://api.github.com/users/octocat",
|
||||
"html_url": "https://github.com/octocat",
|
||||
"followers_url": "https://api.github.com/users/octocat/followers",
|
||||
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
||||
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
||||
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
||||
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
||||
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
||||
"repos_url": "https://api.github.com/users/octocat/repos",
|
||||
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
||||
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
||||
"type": "User",
|
||||
"site_admin": false
|
||||
},
|
||||
"private": false,
|
||||
"html_url": "https://github.com/octocat/Hello-World",
|
||||
"description": "This your first repo!",
|
||||
"fork": false,
|
||||
"url": "https://api.github.com/repos/octocat/Hello-World",
|
||||
"archive_url": "http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}",
|
||||
"assignees_url": "http://api.github.com/repos/octocat/Hello-World/assignees{/user}",
|
||||
"blobs_url": "http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}",
|
||||
"branches_url": "http://api.github.com/repos/octocat/Hello-World/branches{/branch}",
|
||||
"collaborators_url": "http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}",
|
||||
"comments_url": "http://api.github.com/repos/octocat/Hello-World/comments{/number}",
|
||||
"commits_url": "http://api.github.com/repos/octocat/Hello-World/commits{/sha}",
|
||||
"compare_url": "http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}",
|
||||
"contents_url": "http://api.github.com/repos/octocat/Hello-World/contents/{+path}",
|
||||
"contributors_url": "http://api.github.com/repos/octocat/Hello-World/contributors",
|
||||
"deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments",
|
||||
"downloads_url": "http://api.github.com/repos/octocat/Hello-World/downloads",
|
||||
"events_url": "http://api.github.com/repos/octocat/Hello-World/events",
|
||||
"forks_url": "http://api.github.com/repos/octocat/Hello-World/forks",
|
||||
"git_commits_url": "http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}",
|
||||
"git_refs_url": "http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}",
|
||||
"git_tags_url": "http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}",
|
||||
"git_url": "git:github.com/octocat/Hello-World.git",
|
||||
"issue_comment_url": "http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}",
|
||||
"issue_events_url": "http://api.github.com/repos/octocat/Hello-World/issues/events{/number}",
|
||||
"issues_url": "http://api.github.com/repos/octocat/Hello-World/issues{/number}",
|
||||
"keys_url": "http://api.github.com/repos/octocat/Hello-World/keys{/key_id}",
|
||||
"labels_url": "http://api.github.com/repos/octocat/Hello-World/labels{/name}",
|
||||
"languages_url": "http://api.github.com/repos/octocat/Hello-World/languages",
|
||||
"merges_url": "http://api.github.com/repos/octocat/Hello-World/merges",
|
||||
"milestones_url": "http://api.github.com/repos/octocat/Hello-World/milestones{/number}",
|
||||
"notifications_url": "http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}",
|
||||
"pulls_url": "http://api.github.com/repos/octocat/Hello-World/pulls{/number}",
|
||||
"releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}",
|
||||
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
||||
"stargazers_url": "http://api.github.com/repos/octocat/Hello-World/stargazers",
|
||||
"statuses_url": "http://api.github.com/repos/octocat/Hello-World/statuses/{sha}",
|
||||
"subscribers_url": "http://api.github.com/repos/octocat/Hello-World/subscribers",
|
||||
"subscription_url": "http://api.github.com/repos/octocat/Hello-World/subscription",
|
||||
"tags_url": "http://api.github.com/repos/octocat/Hello-World/tags",
|
||||
"teams_url": "http://api.github.com/repos/octocat/Hello-World/teams",
|
||||
"trees_url": "http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}",
|
||||
"clone_url": "https://github.com/octocat/Hello-World.git",
|
||||
"mirror_url": "git:git.example.com/octocat/Hello-World",
|
||||
"hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks",
|
||||
"svn_url": "https://svn.github.com/octocat/Hello-World",
|
||||
"homepage": "https://github.com",
|
||||
"language": null,
|
||||
"forks_count": 9,
|
||||
"stargazers_count": 80,
|
||||
"watchers_count": 80,
|
||||
"size": 108,
|
||||
"default_branch": "master",
|
||||
"open_issues_count": 0,
|
||||
"is_template": true,
|
||||
"topics": [
|
||||
"octocat",
|
||||
"atom",
|
||||
"electron",
|
||||
"api"
|
||||
],
|
||||
"has_issues": true,
|
||||
"has_projects": true,
|
||||
"has_wiki": true,
|
||||
"has_pages": false,
|
||||
"has_downloads": true,
|
||||
"archived": false,
|
||||
"disabled": false,
|
||||
"visibility": "public",
|
||||
"pushed_at": "2011-01-26T19:06:43Z",
|
||||
"created_at": "2011-01-26T19:01:12Z",
|
||||
"updated_at": "2011-01-26T19:14:43Z",
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"push": false,
|
||||
"pull": true
|
||||
},
|
||||
"allow_rebase_merge": true,
|
||||
"template_repository": null,
|
||||
"temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O",
|
||||
"allow_squash_merge": true,
|
||||
"delete_branch_on_merge": true,
|
||||
"allow_merge_commit": true,
|
||||
"subscribers_count": 42,
|
||||
"network_count": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import {vi} from 'vitest';
|
||||
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-build-push-action-'));
|
||||
|
||||
const githubPayload = {
|
||||
repository: {
|
||||
private: true
|
||||
}
|
||||
};
|
||||
|
||||
const githubEventPath = path.join(tmpDir, 'github-event.json');
|
||||
fs.writeFileSync(githubEventPath, JSON.stringify(githubPayload));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/build-push-action',
|
||||
GITHUB_REF: 'refs/heads/master',
|
||||
GITHUB_RUN_ID: '123456789',
|
||||
GITHUB_RUN_ATTEMPT: '1',
|
||||
GITHUB_EVENT_PATH: githubEventPath,
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
});
|
||||
|
||||
vi.mock('@actions/github', () => ({
|
||||
context: {
|
||||
repo: {
|
||||
owner: 'docker',
|
||||
repo: 'build-push-action'
|
||||
},
|
||||
ref: 'refs/heads/master',
|
||||
runId: 123456789,
|
||||
payload: githubPayload
|
||||
},
|
||||
getOctokit: vi.fn()
|
||||
}));
|
||||
+4
-1
@@ -34,6 +34,9 @@ inputs:
|
||||
cache-to:
|
||||
description: "List of cache export destinations for buildx (e.g., user/app:cache, type=local,dest=path/to/dir)"
|
||||
required: false
|
||||
call:
|
||||
description: "Set method for evaluating build (e.g., check)"
|
||||
required: false
|
||||
cgroup-parent:
|
||||
description: "Optional parent cgroup for the container used in the build"
|
||||
required: false
|
||||
@@ -118,6 +121,6 @@ outputs:
|
||||
description: 'Build result metadata'
|
||||
|
||||
runs:
|
||||
using: 'node20'
|
||||
using: 'node24'
|
||||
main: 'dist/index.js'
|
||||
post: 'dist/index.js'
|
||||
+45
-25
@@ -1,13 +1,21 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
ARG NODE_VERSION=20
|
||||
ARG NODE_VERSION=24
|
||||
|
||||
FROM node:${NODE_VERSION}-alpine AS base
|
||||
RUN apk add --no-cache cpio findutils git
|
||||
RUN apk add --no-cache cpio findutils git rsync
|
||||
WORKDIR /src
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache <<EOT
|
||||
set -e
|
||||
corepack enable
|
||||
yarn --version
|
||||
yarn config set --home enableTelemetry 0
|
||||
EOT
|
||||
|
||||
FROM base AS deps
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn install && mkdir /vendor && cp yarn.lock /vendor
|
||||
|
||||
@@ -16,54 +24,66 @@ COPY --from=deps /vendor /
|
||||
|
||||
FROM deps AS vendor-validate
|
||||
RUN --mount=type=bind,target=.,rw <<EOT
|
||||
set -e
|
||||
git add -A
|
||||
cp -rf /vendor/* .
|
||||
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
|
||||
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor-update"'
|
||||
git status --porcelain -- yarn.lock
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
git add -A
|
||||
cp -rf /vendor/* .
|
||||
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
|
||||
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor"'
|
||||
git status --porcelain -- yarn.lock
|
||||
exit 1
|
||||
fi
|
||||
EOT
|
||||
|
||||
FROM deps AS build
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run build && mkdir /out && cp -Rf dist /out/
|
||||
RUN --mount=target=/context \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules <<EOT
|
||||
set -e
|
||||
rsync -a /context/. .
|
||||
rm -rf dist
|
||||
yarn run build
|
||||
mkdir /out
|
||||
cp -r dist /out
|
||||
EOT
|
||||
|
||||
FROM scratch AS build-update
|
||||
COPY --from=build /out /
|
||||
|
||||
FROM build AS build-validate
|
||||
RUN --mount=type=bind,target=.,rw <<EOT
|
||||
set -e
|
||||
git add -A
|
||||
cp -rf /out/* .
|
||||
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'
|
||||
git status --porcelain -- dist
|
||||
exit 1
|
||||
fi
|
||||
RUN --mount=target=/context \
|
||||
--mount=target=.,type=tmpfs <<EOT
|
||||
set -e
|
||||
rsync -a /context/. .
|
||||
git add -A
|
||||
rm -rf dist
|
||||
cp -rf /out/* .
|
||||
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'
|
||||
git status --porcelain -- dist
|
||||
exit 1
|
||||
fi
|
||||
EOT
|
||||
|
||||
FROM deps AS format
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run format \
|
||||
&& mkdir /out && find . -name '*.ts' -not -path './node_modules/*' | cpio -pdm /out
|
||||
yarn run format && mkdir /out && find . -name '*.ts' -not -path './node_modules/*' -not -path './.yarn/*' | cpio -pdm /out
|
||||
|
||||
FROM scratch AS format-update
|
||||
COPY --from=format /out /
|
||||
|
||||
FROM deps AS lint
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run lint
|
||||
|
||||
FROM deps AS test
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run test --coverage --coverageDirectory=/tmp/coverage
|
||||
yarn run test --coverage --coverage.reportsDirectory=/tmp/coverage
|
||||
|
||||
FROM scratch AS test-coverage
|
||||
COPY --from=test /tmp/coverage /
|
||||
+301
@@ -0,0 +1,301 @@
|
||||
export const id = 606;
|
||||
export const ids = [606];
|
||||
export const modules = {
|
||||
|
||||
/***/ 606:
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ pMap)
|
||||
/* harmony export */ });
|
||||
/* unused harmony exports pMapIterable, pMapSkip */
|
||||
async function pMap(
|
||||
iterable,
|
||||
mapper,
|
||||
{
|
||||
concurrency = Number.POSITIVE_INFINITY,
|
||||
stopOnError = true,
|
||||
signal,
|
||||
} = {},
|
||||
) {
|
||||
return new Promise((resolve_, reject_) => {
|
||||
if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) {
|
||||
throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`);
|
||||
}
|
||||
|
||||
if (typeof mapper !== 'function') {
|
||||
throw new TypeError('Mapper function is required');
|
||||
}
|
||||
|
||||
if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) {
|
||||
throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`);
|
||||
}
|
||||
|
||||
const result = [];
|
||||
const errors = [];
|
||||
const skippedIndexesMap = new Map();
|
||||
let isRejected = false;
|
||||
let isResolved = false;
|
||||
let isIterableDone = false;
|
||||
let resolvingCount = 0;
|
||||
let currentIndex = 0;
|
||||
const iterator = iterable[Symbol.iterator] === undefined ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();
|
||||
|
||||
const signalListener = () => {
|
||||
reject(signal.reason);
|
||||
};
|
||||
|
||||
const cleanup = () => {
|
||||
signal?.removeEventListener('abort', signalListener);
|
||||
};
|
||||
|
||||
const resolve = value => {
|
||||
resolve_(value);
|
||||
cleanup();
|
||||
};
|
||||
|
||||
const reject = reason => {
|
||||
isRejected = true;
|
||||
isResolved = true;
|
||||
reject_(reason);
|
||||
cleanup();
|
||||
};
|
||||
|
||||
if (signal) {
|
||||
if (signal.aborted) {
|
||||
reject(signal.reason);
|
||||
}
|
||||
|
||||
signal.addEventListener('abort', signalListener, {once: true});
|
||||
}
|
||||
|
||||
const next = async () => {
|
||||
if (isResolved) {
|
||||
return;
|
||||
}
|
||||
|
||||
const nextItem = await iterator.next();
|
||||
|
||||
const index = currentIndex;
|
||||
currentIndex++;
|
||||
|
||||
// Note: `iterator.next()` can be called many times in parallel.
|
||||
// This can cause multiple calls to this `next()` function to
|
||||
// receive a `nextItem` with `done === true`.
|
||||
// The shutdown logic that rejects/resolves must be protected
|
||||
// so it runs only one time as the `skippedIndex` logic is
|
||||
// non-idempotent.
|
||||
if (nextItem.done) {
|
||||
isIterableDone = true;
|
||||
|
||||
if (resolvingCount === 0 && !isResolved) {
|
||||
if (!stopOnError && errors.length > 0) {
|
||||
reject(new AggregateError(errors)); // eslint-disable-line unicorn/error-message
|
||||
return;
|
||||
}
|
||||
|
||||
isResolved = true;
|
||||
|
||||
if (skippedIndexesMap.size === 0) {
|
||||
resolve(result);
|
||||
return;
|
||||
}
|
||||
|
||||
const pureResult = [];
|
||||
|
||||
// Support multiple `pMapSkip`'s.
|
||||
for (const [index, value] of result.entries()) {
|
||||
if (skippedIndexesMap.get(index) === pMapSkip) {
|
||||
continue;
|
||||
}
|
||||
|
||||
pureResult.push(value);
|
||||
}
|
||||
|
||||
resolve(pureResult);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
resolvingCount++;
|
||||
|
||||
// Intentionally detached
|
||||
(async () => {
|
||||
try {
|
||||
const element = await nextItem.value;
|
||||
|
||||
if (isResolved) {
|
||||
return;
|
||||
}
|
||||
|
||||
const value = await mapper(element, index);
|
||||
|
||||
// Use Map to stage the index of the element.
|
||||
if (value === pMapSkip) {
|
||||
skippedIndexesMap.set(index, value);
|
||||
}
|
||||
|
||||
result[index] = value;
|
||||
|
||||
resolvingCount--;
|
||||
await next();
|
||||
} catch (error) {
|
||||
if (stopOnError) {
|
||||
reject(error);
|
||||
} else {
|
||||
errors.push(error);
|
||||
resolvingCount--;
|
||||
|
||||
// In that case we can't really continue regardless of `stopOnError` state
|
||||
// since an iterable is likely to continue throwing after it throws once.
|
||||
// If we continue calling `next()` indefinitely we will likely end up
|
||||
// in an infinite loop of failed iteration.
|
||||
try {
|
||||
await next();
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
};
|
||||
|
||||
// Create the concurrent runners in a detached (non-awaited)
|
||||
// promise. We need this so we can await the `next()` calls
|
||||
// to stop creating runners before hitting the concurrency limit
|
||||
// if the iterable has already been marked as done.
|
||||
// NOTE: We *must* do this for async iterators otherwise we'll spin up
|
||||
// infinite `next()` calls by default and never start the event loop.
|
||||
(async () => {
|
||||
for (let index = 0; index < concurrency; index++) {
|
||||
try {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await next();
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
break;
|
||||
}
|
||||
|
||||
if (isIterableDone || isRejected) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
})();
|
||||
});
|
||||
}
|
||||
|
||||
function pMapIterable(
|
||||
iterable,
|
||||
mapper,
|
||||
{
|
||||
concurrency = Number.POSITIVE_INFINITY,
|
||||
backpressure = concurrency,
|
||||
} = {},
|
||||
) {
|
||||
if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) {
|
||||
throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`);
|
||||
}
|
||||
|
||||
if (typeof mapper !== 'function') {
|
||||
throw new TypeError('Mapper function is required');
|
||||
}
|
||||
|
||||
if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) {
|
||||
throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`);
|
||||
}
|
||||
|
||||
if (!((Number.isSafeInteger(backpressure) && backpressure >= concurrency) || backpressure === Number.POSITIVE_INFINITY)) {
|
||||
throw new TypeError(`Expected \`backpressure\` to be an integer from \`concurrency\` (${concurrency}) and up or \`Infinity\`, got \`${backpressure}\` (${typeof backpressure})`);
|
||||
}
|
||||
|
||||
return {
|
||||
async * [Symbol.asyncIterator]() {
|
||||
const iterator = iterable[Symbol.asyncIterator] === undefined ? iterable[Symbol.iterator]() : iterable[Symbol.asyncIterator]();
|
||||
|
||||
const promises = [];
|
||||
let pendingPromisesCount = 0;
|
||||
let isDone = false;
|
||||
let index = 0;
|
||||
|
||||
function trySpawn() {
|
||||
if (isDone || !(pendingPromisesCount < concurrency && promises.length < backpressure)) {
|
||||
return;
|
||||
}
|
||||
|
||||
pendingPromisesCount++;
|
||||
|
||||
const promise = (async () => {
|
||||
const {done, value} = await iterator.next();
|
||||
|
||||
if (done) {
|
||||
pendingPromisesCount--;
|
||||
return {done: true};
|
||||
}
|
||||
|
||||
// Spawn if still below concurrency and backpressure limit
|
||||
trySpawn();
|
||||
|
||||
try {
|
||||
const returnValue = await mapper(await value, index++);
|
||||
|
||||
pendingPromisesCount--;
|
||||
|
||||
if (returnValue === pMapSkip) {
|
||||
const index = promises.indexOf(promise);
|
||||
|
||||
if (index > 0) {
|
||||
promises.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Spawn if still below backpressure limit and just dropped below concurrency limit
|
||||
trySpawn();
|
||||
|
||||
return {done: false, value: returnValue};
|
||||
} catch (error) {
|
||||
pendingPromisesCount--;
|
||||
isDone = true;
|
||||
return {error};
|
||||
}
|
||||
})();
|
||||
|
||||
promises.push(promise);
|
||||
}
|
||||
|
||||
trySpawn();
|
||||
|
||||
while (promises.length > 0) {
|
||||
const {error, done, value} = await promises[0]; // eslint-disable-line no-await-in-loop
|
||||
|
||||
promises.shift();
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
if (done) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Spawn if just dropped below backpressure limit and below the concurrency limit
|
||||
trySpawn();
|
||||
|
||||
if (value === pMapSkip) {
|
||||
continue;
|
||||
}
|
||||
|
||||
yield value;
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const pMapSkip = Symbol('skip');
|
||||
|
||||
|
||||
/***/ })
|
||||
|
||||
};
|
||||
|
||||
//# sourceMappingURL=606.index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"606.index.js","mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":[".././node_modules/p-map/index.js"],"sourcesContent":["export default async function pMap(\n\titerable,\n\tmapper,\n\t{\n\t\tconcurrency = Number.POSITIVE_INFINITY,\n\t\tstopOnError = true,\n\t\tsignal,\n\t} = {},\n) {\n\treturn new Promise((resolve_, reject_) => {\n\t\tif (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) {\n\t\t\tthrow new TypeError(`Expected \\`input\\` to be either an \\`Iterable\\` or \\`AsyncIterable\\`, got (${typeof iterable})`);\n\t\t}\n\n\t\tif (typeof mapper !== 'function') {\n\t\t\tthrow new TypeError('Mapper function is required');\n\t\t}\n\n\t\tif (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be an integer from 1 and up or \\`Infinity\\`, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t\t}\n\n\t\tconst result = [];\n\t\tconst errors = [];\n\t\tconst skippedIndexesMap = new Map();\n\t\tlet isRejected = false;\n\t\tlet isResolved = false;\n\t\tlet isIterableDone = false;\n\t\tlet resolvingCount = 0;\n\t\tlet currentIndex = 0;\n\t\tconst iterator = iterable[Symbol.iterator] === undefined ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();\n\n\t\tconst signalListener = () => {\n\t\t\treject(signal.reason);\n\t\t};\n\n\t\tconst cleanup = () => {\n\t\t\tsignal?.removeEventListener('abort', signalListener);\n\t\t};\n\n\t\tconst resolve = value => {\n\t\t\tresolve_(value);\n\t\t\tcleanup();\n\t\t};\n\n\t\tconst reject = reason => {\n\t\t\tisRejected = true;\n\t\t\tisResolved = true;\n\t\t\treject_(reason);\n\t\t\tcleanup();\n\t\t};\n\n\t\tif (signal) {\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(signal.reason);\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', signalListener, {once: true});\n\t\t}\n\n\t\tconst next = async () => {\n\t\t\tif (isResolved) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextItem = await iterator.next();\n\n\t\t\tconst index = currentIndex;\n\t\t\tcurrentIndex++;\n\n\t\t\t// Note: `iterator.next()` can be called many times in parallel.\n\t\t\t// This can cause multiple calls to this `next()` function to\n\t\t\t// receive a `nextItem` with `done === true`.\n\t\t\t// The shutdown logic that rejects/resolves must be protected\n\t\t\t// so it runs only one time as the `skippedIndex` logic is\n\t\t\t// non-idempotent.\n\t\t\tif (nextItem.done) {\n\t\t\t\tisIterableDone = true;\n\n\t\t\t\tif (resolvingCount === 0 && !isResolved) {\n\t\t\t\t\tif (!stopOnError && errors.length > 0) {\n\t\t\t\t\t\treject(new AggregateError(errors)); // eslint-disable-line unicorn/error-message\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tisResolved = true;\n\n\t\t\t\t\tif (skippedIndexesMap.size === 0) {\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst pureResult = [];\n\n\t\t\t\t\t// Support multiple `pMapSkip`'s.\n\t\t\t\t\tfor (const [index, value] of result.entries()) {\n\t\t\t\t\t\tif (skippedIndexesMap.get(index) === pMapSkip) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpureResult.push(value);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(pureResult);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolvingCount++;\n\n\t\t\t// Intentionally detached\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst element = await nextItem.value;\n\n\t\t\t\t\tif (isResolved) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst value = await mapper(element, index);\n\n\t\t\t\t\t// Use Map to stage the index of the elemeLine truncated
|
||||
+110
-19
@@ -1,32 +1,123 @@
|
||||
require('./sourcemap-register.js');(()=>{var __webpack_modules__={7799:function(e,t,r){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){if(i===undefined)i=r;var n=Object.getOwnPropertyDescriptor(t,r);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,i,n)}:function(e,t,r,i){if(i===undefined)i=r;e[i]=t[r]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.prototype.hasOwnProperty.call(e,r))i(t,e,r);n(t,e);return t};var a=this&&this.__awaiter||function(e,t,r,i){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,n){function fulfilled(e){try{step(i.next(e))}catch(e){n(e)}}function rejected(e){try{step(i["throw"](e))}catch(e){n(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.saveCache=t.restoreCache=t.isFeatureAvailable=t.ReserveCacheError=t.ValidationError=void 0;const o=s(r(2186));const l=s(r(1017));const c=s(r(1518));const p=s(r(8245));const d=r(3434);class ValidationError extends Error{constructor(e){super(e);this.name="ValidationError";Object.setPrototypeOf(this,ValidationError.prototype)}}t.ValidationError=ValidationError;class ReserveCacheError extends Error{constructor(e){super(e);this.name="ReserveCacheError";Object.setPrototypeOf(this,ReserveCacheError.prototype)}}t.ReserveCacheError=ReserveCacheError;function checkPaths(e){if(!e||e.length===0){throw new ValidationError(`Path Validation Error: At least one directory or file path is required`)}}function checkKey(e){if(e.length>512){throw new ValidationError(`Key Validation Error: ${e} cannot be larger than 512 characters.`)}const t=/^[^,]*$/;if(!t.test(e)){throw new ValidationError(`Key Validation Error: ${e} cannot contain commas.`)}}function isFeatureAvailable(){return!!process.env["ACTIONS_CACHE_URL"]}t.isFeatureAvailable=isFeatureAvailable;function restoreCache(e,t,r,i,n=false){return a(this,void 0,void 0,(function*(){checkPaths(e);r=r||[];const s=[t,...r];o.debug("Resolved Keys:");o.debug(JSON.stringify(s));if(s.length>10){throw new ValidationError(`Key Validation Error: Keys are limited to a maximum of 10.`)}for(const e of s){checkKey(e)}const a=yield c.getCompressionMethod();let A="";try{const t=yield p.getCacheEntry(s,e,{compressionMethod:a,enableCrossOsArchive:n});if(!(t===null||t===void 0?void 0:t.archiveLocation)){return undefined}if(i===null||i===void 0?void 0:i.lookupOnly){o.info("Lookup only - skipping download");return t.cacheKey}A=l.join(yield c.createTempDirectory(),c.getCacheFileName(a));o.debug(`Archive Path: ${A}`);yield p.downloadCache(t.archiveLocation,A,i);if(o.isDebug()){yield(0,d.listTar)(A,a)}const r=c.getArchiveFileSizeInBytes(A);o.info(`Cache Size: ~${Math.round(r/(1024*1024))} MB (${r} B)`);yield(0,d.extractTar)(A,a);o.info("Cache restored successfully");return t.cacheKey}catch(e){const t=e;if(t.name===ValidationError.name){throw e}else{o.warning(`Failed to restore: ${e.message}`)}}finally{try{yield c.unlinkFile(A)}catch(e){o.debug(`Failed to delete archive: ${e}`)}}return undefined}))}t.restoreCache=restoreCache;function saveCache(e,t,r,i=false){var n,s,A,u,m;return a(this,void 0,void 0,(function*(){checkPaths(e);checkKey(t);const a=yield c.getCompressionMethod();let h=-1;const g=yield c.resolvePaths(e);o.debug("Cache Paths:");o.debug(`${JSON.stringify(g)}`);if(g.length===0){throw new Error(`Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.`)}const E=yield c.createTempDirectory();const y=l.join(E,c.getCacheFileName(a));o.debug(`Archive Path: ${y}`);try{yield(0,d.createTar)(E,g,a);if(o.isDebug()){yield(0,d.listTar)(y,a)}const l=10*1024*1024*1024;const C=c.getArchiveFileSizeInBytes(y);o.debug(`File Size: ${C}`);if(C>l&&!c.isGhes()){throw new Error(`Cache size of ~${Math.round(C/(1024*1024))} MB (${C} B) is over the 10GB limit, not saving cache.`)}o.debug("Reserving Cache");const b=yield p.reserveCache(t,e,{compressionMethod:a,enableCrossOsArchive:i,cacheSize:C});if((n=b===null||b===void 0?void 0:b.result)===null||n===void 0?void 0:n.cacheId){h=(s=b===null||b===void 0?void 0:b.result)===null||s===void 0?void 0:s.cacheId}else if((b===null||b===void 0?void 0:b.statusCode)===400){throw new Error((u=(A=b===null||b===void 0?void 0:b.error)===null||A===void 0?void 0:A.message)!==null&&u!==void 0?u:`Cache size of ~${Math.round(C/(1024*1024))} MB (${C} B) is over the data cap limit, not saving cache.`)}else{throw new ReserveCacheError(`Unable to reserve cache with key ${t}, another job may be creating this cache. More details: ${(m=b===null||b===Line truncated
|
||||
/*!
|
||||
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
|
||||
import './sourcemap-register.cjs';import{createRequire as i}from"module";var u={23311:function(i,u){var p=this&&this.__awaiter||function(i,u,p,g){function adopt(i){return i instanceof p?i:new p((function(u){u(i)}))}return new(p||(p=Promise))((function(p,A){function fulfilled(i){try{step(g.next(i))}catch(i){A(i)}}function rejected(i){try{step(g["throw"](i))}catch(i){A(i)}}function step(i){i.done?p(i.value):adopt(i.value).then(fulfilled,rejected)}step((g=g.apply(i,u||[])).next())}))};Object.defineProperty(u,"__esModule",{value:true});u.ClientStreamingCall=void 0;class ClientStreamingCall{constructor(i,u,p,g,A,w,C){this.method=i;this.requestHeaders=u;this.requests=p;this.headers=g;this.response=A;this.status=w;this.trailers=C}then(i,u){return this.promiseFinished().then((u=>i?Promise.resolve(i(u)):u),(i=>u?Promise.resolve(u(i)):Promise.reject(i)))}promiseFinished(){return p(this,void 0,void 0,(function*(){let[i,u,p,g]=yield Promise.all([this.headers,this.response,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,headers:i,response:u,status:p,trailers:g}}))}}u.ClientStreamingCall=ClientStreamingCall},69499:(i,u)=>{Object.defineProperty(u,"__esModule",{value:true});u.Deferred=u.DeferredState=void 0;var p;(function(i){i[i["PENDING"]=0]="PENDING";i[i["REJECTED"]=1]="REJECTED";i[i["RESOLVED"]=2]="RESOLVED"})(p=u.DeferredState||(u.DeferredState={}));class Deferred{constructor(i=true){this._state=p.PENDING;this._promise=new Promise(((i,u)=>{this._resolve=i;this._reject=u}));if(i){this._promise.catch((i=>{}))}}get state(){return this._state}get promise(){return this._promise}resolve(i){if(this.state!==p.PENDING)throw new Error(`cannot resolve ${p[this.state].toLowerCase()}`);this._resolve(i);this._state=p.RESOLVED}reject(i){if(this.state!==p.PENDING)throw new Error(`cannot reject ${p[this.state].toLowerCase()}`);this._reject(i);this._state=p.REJECTED}resolvePending(i){if(this._state===p.PENDING)this.resolve(i)}rejectPending(i){if(this._state===p.PENDING)this.reject(i)}}u.Deferred=Deferred},40800:function(i,u){var p=this&&this.__awaiter||function(i,u,p,g){function adopt(i){return i instanceof p?i:new p((function(u){u(i)}))}return new(p||(p=Promise))((function(p,A){function fulfilled(i){try{step(g.next(i))}catch(i){A(i)}}function rejected(i){try{step(g["throw"](i))}catch(i){A(i)}}function step(i){i.done?p(i.value):adopt(i.value).then(fulfilled,rejected)}step((g=g.apply(i,u||[])).next())}))};Object.defineProperty(u,"__esModule",{value:true});u.DuplexStreamingCall=void 0;class DuplexStreamingCall{constructor(i,u,p,g,A,w,C){this.method=i;this.requestHeaders=u;this.requests=p;this.headers=g;this.responses=A;this.status=w;this.trailers=C}then(i,u){return this.promiseFinished().then((u=>i?Promise.resolve(i(u)):u),(i=>u?Promise.resolve(u(i)):Promise.reject(i)))}promiseFinished(){return p(this,void 0,void 0,(function*(){let[i,u,p]=yield Promise.all([this.headers,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,headers:i,status:u,trailers:p}}))}}u.DuplexStreamingCall=DuplexStreamingCall},76762:(i,u,p)=>{var g;g={value:true};var A=p(42554);Object.defineProperty(u,"C0",{enumerable:true,get:function(){return A.ServiceType}});var w=p(83402);g={enumerable:true,get:function(){return w.readMethodOptions}};g={enumerable:true,get:function(){return w.readMethodOption}};g={enumerable:true,get:function(){return w.readServiceOption}};var C=p(50422);g={enumerable:true,get:function(){return C.RpcError}};var S=p(63474);g={enumerable:true,get:function(){return S.mergeRpcOptions}};var v=p(58788);g={enumerable:true,get:function(){return v.RpcOutputStreamController}};var B=p(37816);g={enumerable:true,get:function(){return B.TestTransport}};var _=p(69499);g={enumerable:true,get:function(){return _.Deferred}};g={enumerable:true,get:function(){return _.DeferredState}};var T=p(40800);g={enumerable:true,get:function(){return T.DuplexStreamingCall}};var N=p(23311);g={enumerable:true,get:function(){return N.ClientStreamingCall}};var x=p(22715);g={enumerable:true,get:function(){return x.ServerStreamingCall}};var k=p(80738);g={enumerable:true,get:function(){return k.UnaryCall}};var O=p(84359);g={enumerable:true,get:function(){return O.stackIntercept}};g={enumerable:true,get:function(){return O.stackDuplexStreamingInterceptors}};g={enumerable:true,get:function(){return O.stackClientStreamingInterceptors}};g={enumerable:true,get:function(){return O.stackServerStreamingInterceptors}};g={enumerable:true,get:function(){return O.stackUnaryInterceptors}};var D=p(44626);g={enumerable:true,get:function(){return D.ServerCallContextController}}},83402:(i,u,p)=>{Object.defineProperty(u,"__esModule",{value:true});u.readServiceOption=u.readMethodOption=u.readMethodOptions=u.normalizeMethodInfo=void 0;const g=p(88372);function normalizeMethodInfo(i,u){var p,A,w;let C=i;C.service=u;C.localName=(p=C.localName)!==null&&p!==void 0?p:g.lowerCamelCase(C.name);C.serverStreaming=!!C.serverStreaming;C.Line truncated
|
||||
/**
|
||||
* Archiver Vending
|
||||
*
|
||||
* Copyright (c) 2014-2017, Jon Schlinkert.
|
||||
* Released under the MIT License.
|
||||
*/function isObject(e){return Object.prototype.toString.call(e)==="[object Object]"}function isPlainObject(e){var t,r;if(isObject(e)===false)return false;t=e.constructor;if(t===undefined)return true;r=t.prototype;if(isObject(r)===false)return false;if(r.hasOwnProperty("isPrototypeOf")===false){return false}return true}t.isPlainObject=isPlainObject},7426:(e,t,r)=>{
|
||||
/*!
|
||||
* mime-db
|
||||
* Copyright(c) 2014 Jonathan Ong
|
||||
* Copyright(c) 2015-2022 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
* @ignore
|
||||
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
|
||||
* @copyright (c) 2012-2014 Chris Talkington, contributors.
|
||||
*/
|
||||
e.exports=r(3765)},3583:(e,t,r)=>{"use strict";
|
||||
var g=p(50549);var A={};var vending=function(i,u){return vending.create(i,u)};vending.create=function(i,u){if(A[i]){var p=new g(i,u);p.setFormat(i);p.setModule(new A[i](u));return p}else{throw new Error("create("+i+"): format not registered")}};vending.registerFormat=function(i,u){if(A[i]){throw new Error("register("+i+"): format already registered")}if(typeof u!=="function"){throw new Error("register("+i+"): format module invalid")}if(typeof u.prototype.append!=="function"||typeof u.prototype.finalize!=="function"){throw new Error("register("+i+"): format module missing methods")}A[i]=u};vending.isRegisteredFormat=function(i){if(A[i]){return true}return false};vending.registerFormat("zip",p(22836));vending.registerFormat("tar",p(10396));vending.registerFormat("json",p(54693));i.exports=vending},50549:(i,u,p)=>{
|
||||
/**
|
||||
* Archiver Core
|
||||
*
|
||||
* @ignore
|
||||
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
|
||||
* @copyright (c) 2012-2014 Chris Talkington, contributors.
|
||||
*/
|
||||
var g=p(79896);var A=p(51364);var w=p(97329);var C=p(16928);var S=p(53296);var v=p(39023).inherits;var B=p(13110);var _=p(29963).Transform;var T=process.platform==="win32";var Archiver=function(i,u){if(!(this instanceof Archiver)){return new Archiver(i,u)}if(typeof i!=="string"){u=i;i="zip"}u=this.options=S.defaults(u,{highWaterMark:1024*1024,statConcurrency:4});_.call(this,u);this._format=false;this._module=false;this._pending=0;this._pointer=0;this._entriesCount=0;this._entriesProcessedCount=0;this._fsEntriesTotalBytes=0;this._fsEntriesProcessedBytes=0;this._queue=w.queue(this._onQueueTask.bind(this),1);this._queue.drain(this._onQueueDrain.bind(this));this._statQueue=w.queue(this._onStatQueueTask.bind(this),u.statConcurrency);this._statQueue.drain(this._onQueueDrain.bind(this));this._state={aborted:false,finalize:false,finalizing:false,finalized:false,modulePiped:false};this._streams=[]};v(Archiver,_);Archiver.prototype._abort=function(){this._state.aborted=true;this._queue.kill();this._statQueue.kill();if(this._queue.idle()){this._shutdown()}};Archiver.prototype._append=function(i,u){u=u||{};var p={source:null,filepath:i};if(!u.name){u.name=i}u.sourcePath=i;p.data=u;this._entriesCount++;if(u.stats&&u.stats instanceof g.Stats){p=this._updateQueueTaskWithStats(p,u.stats);if(p){if(u.stats.size){this._fsEntriesTotalBytes+=u.stats.size}this._queue.push(p)}}else{this._statQueue.push(p)}};Archiver.prototype._finalize=function(){if(this._state.finalizing||this._state.finalized||this._state.aborted){return}this._state.finalizing=true;this._moduleFinalize();this._state.finalizing=false;this._state.finalized=true};Archiver.prototype._maybeFinalize=function(){if(this._state.finalizing||this._state.finalized||this._state.aborted){return false}if(this._state.finalize&&this._pending===0&&this._queue.idle()&&this._statQueue.idle()){this._finalize();return true}return false};Archiver.prototype._moduleAppend=function(i,u,p){if(this._state.aborted){p();return}this._module.append(i,u,function(i){this._task=null;if(this._state.aborted){this._shutdown();return}if(i){this.emit("error",i);setImmediate(p);return}this.emit("entry",u);this._entriesProcessedCount++;if(u.stats&&u.stats.size){this._fsEntriesProcessedBytes+=u.stats.size}this.emit("progress",{entries:{total:this._entriesCount,processed:this._entriesProcessedCount},fs:{totalBytes:this._fsEntriesTotalBytes,processedBytes:this._fsEntriesProcessedBytes}});setImmediate(p)}.bind(this))};Archiver.prototype._moduleFinalize=function(){if(typeof this._module.finalize==="function"){this._module.finalize()}else if(typeof this._module.end==="function"){this._module.end()}else{this.emit("error",new B("NOENDMETHOD"))}};Archiver.prototype._modulePipe=function(){this._module.on("error",this._onModuleError.bind(this));this._module.pipe(this);this._state.modulePiped=true};Archiver.prototype._moduleSupports=function(i){if(!this._module.supports||!this._module.supports[i]){return false}return this._module.supports[i]};Archiver.prototype._moduleUnpipe=function(){this._module.unpipe(this);this._state.modulePiped=false};Archiver.prototype._normalizeEntryData=function(i,u){i=S.defaults(i,{type:"file",name:null,date:null,mode:null,prefix:null,sourcePath:null,stats:false});if(u&&i.stats===false){i.stats=u}var p=i.type==="directory";if(i.name){if(typeof i.prefix==="string"&&""!==i.prefix){i.name=i.prefix+"/"+i.name;i.prefix=null}i.name=S.sanitizePath(i.name);if(i.type!=="symlink"&&i.name.slice(-1)==="/"){p=true;i.type="directory"}else if(p){i.name+="/"}}if(typeof i.mode==="number"){if(T){i.mode&=511}else{i.mode&=4095}}else if(i.stats&&i.mode===null){if(T){i.mode=i.stats.mode&511}else{i.mode=i.stats.mode&4095}if(T&&p){i.mode=493}}else if(i.mode===null){i.mode=p?493:420}if(i.stats&&i.date===null){i.date=i.stats.mtime}else{i.date=S.dateify(i.date)}return i};Archiver.prototype._onModuleError=function(i){this.emit("error",i)};Archiver.prototype._onQueueDrain=function(){if(this._state.finalizing||this._state.finalized||this._state.aborted){return}if(this._state.finalize&&this._pending===0&&this._queue.idle()&&this._statQueue.idle()){this._finalize()}};Archiver.prototype._onQueueTask=function(i,u){var fullCallback=()=>{if(i.data.callback){i.data.callback()}u()};if(this._state.finalizing||this._state.finalized||this._state.aborted){fullCallback();return}this._task=i;this._moduleAppend(i.source,i.data,fullCallback)};Archiver.prototype._onStatQueueTask=function(i,u){if(this._state.finalizing||this._state.finalized||this._state.aborted){u();return}g.lstat(i.filepath,function(p,g){if(this._state.aborted){setImmediate(u);return}if(p){this._entriesCount--;this.emit("warning",p);setImmediate(u);return}i=this._updateQueueTaskWithStats(i,g);if(i){if(g.size){this._fsEntriesTotalBytes+=g.size}this._queue.push(i)}setImmediate(u)}.bind(this))};Archiver.prototype._shutdown=function(){this._moduleUnpipe();this.end()};Archiver.prototype._transform=function(i,u,p){if(i){this._pointer+=i.length}p(null,i)};Archiver.prototLine truncated
|
||||
/**
|
||||
* Archiver Core
|
||||
*
|
||||
* @ignore
|
||||
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
|
||||
* @copyright (c) 2012-2014 Chris Talkington, contributors.
|
||||
*/
|
||||
var g=p(39023);const A={ABORTED:"archive was aborted",DIRECTORYDIRPATHREQUIRED:"diretory dirpath argument must be a non-empty string value",DIRECTORYFUNCTIONINVALIDDATA:"invalid data returned by directory custom data function",ENTRYNAMEREQUIRED:"entry name must be a non-empty string value",FILEFILEPATHREQUIRED:"file filepath argument must be a non-empty string value",FINALIZING:"archive already finalizing",QUEUECLOSED:"queue closed",NOENDMETHOD:"no suitable finalize/end method defined by module",DIRECTORYNOTSUPPORTED:"support for directory entries not defined by module",FORMATSET:"archive format already set",INPUTSTEAMBUFFERREQUIRED:"input source must be valid Stream or Buffer instance",MODULESET:"module already set",SYMLINKNOTSUPPORTED:"support for symlink entries not defined by module",SYMLINKFILEPATHREQUIRED:"symlink filepath argument must be a non-empty string value",SYMLINKTARGETREQUIRED:"symlink target argument must be a non-empty string value",ENTRYNOTSUPPORTED:"entry not supported"};function ArchiverError(i,u){Error.captureStackTrace(this,this.constructor);this.message=A[i]||i;this.code=i;this.data=u}g.inherits(ArchiverError,Error);u=i.exports=ArchiverError},54693:(i,u,p)=>{
|
||||
/**
|
||||
* JSON Format Plugin
|
||||
*
|
||||
* @module plugins/json
|
||||
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
|
||||
* @copyright (c) 2012-2014 Chris Talkington, contributors.
|
||||
*/
|
||||
var g=p(39023).inherits;var A=p(29963).Transform;var w=p(84928);var C=p(53296);var Json=function(i){if(!(this instanceof Json)){return new Json(i)}i=this.options=C.defaults(i,{});A.call(this,i);this.supports={directory:true,symlink:true};this.files=[]};g(Json,A);Json.prototype._transform=function(i,u,p){p(null,i)};Json.prototype._writeStringified=function(){var i=JSON.stringify(this.files);this.write(i)};Json.prototype.append=function(i,u,p){var g=this;u.crc32=0;function onend(i,A){if(i){p(i);return}u.size=A.length||0;u.crc32=w.unsigned(A);g.files.push(u);p(null,u)}if(u.sourceType==="buffer"){onend(null,i)}else if(u.sourceType==="stream"){C.collectStream(i,onend)}};Json.prototype.finalize=function(){this._writeStringified();this.end()};i.exports=Json},10396:(i,u,p)=>{
|
||||
/**
|
||||
* TAR Format Plugin
|
||||
*
|
||||
* @module plugins/tar
|
||||
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
|
||||
* @copyright (c) 2012-2014 Chris Talkington, contributors.
|
||||
*/
|
||||
var g=p(43106);var A=p(56118);var w=p(53296);var Tar=function(i){if(!(this instanceof Tar)){return new Tar(i)}i=this.options=w.defaults(i,{gzip:false});if(typeof i.gzipOptions!=="object"){i.gzipOptions={}}this.supports={directory:true,symlink:true};this.engine=A.pack(i);this.compressor=false;if(i.gzip){this.compressor=g.createGzip(i.gzipOptions);this.compressor.on("error",this._onCompressorError.bind(this))}};Tar.prototype._onCompressorError=function(i){this.engine.emit("error",i)};Tar.prototype.append=function(i,u,p){var g=this;u.mtime=u.date;function append(i,A){if(i){p(i);return}g.engine.entry(u,A,(function(i){p(i,u)}))}if(u.sourceType==="buffer"){append(null,i)}else if(u.sourceType==="stream"&&u.stats){u.size=u.stats.size;var A=g.engine.entry(u,(function(i){p(i,u)}));i.pipe(A)}else if(u.sourceType==="stream"){w.collectStream(i,append)}};Tar.prototype.finalize=function(){this.engine.finalize()};Tar.prototype.on=function(){return this.engine.on.apply(this.engine,arguments)};Tar.prototype.pipe=function(i,u){if(this.compressor){return this.engine.pipe.apply(this.engine,[this.compressor]).pipe(i,u)}else{return this.engine.pipe.apply(this.engine,arguments)}};Tar.prototype.unpipe=function(){if(this.compressor){return this.compressor.unpipe.apply(this.compressor,arguments)}else{return this.engine.unpipe.apply(this.engine,arguments)}};i.exports=Tar},22836:(i,u,p)=>{
|
||||
/**
|
||||
* ZIP Format Plugin
|
||||
*
|
||||
* @module plugins/zip
|
||||
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
|
||||
* @copyright (c) 2012-2014 Chris Talkington, contributors.
|
||||
*/
|
||||
var g=p(41622);var A=p(53296);var Zip=function(i){if(!(this instanceof Zip)){return new Zip(i)}i=this.options=A.defaults(i,{comment:"",forceUTC:false,namePrependSlash:false,store:false});this.supports={directory:true,symlink:true};this.engine=new g(i)};Zip.prototype.append=function(i,u,p){this.engine.entry(i,u,p)};Zip.prototype.finalize=function(){this.engine.finalize()};Zip.prototype.on=function(){return this.engine.on.apply(this.engine,arguments)};Zip.prototype.pipe=function(){return this.engine.pipe.apply(this.engine,arguments)};Zip.prototype.unpipe=function(){return this.engine.unpipe.apply(this.engine,arguments)};i.exports=Zip},97329:function(i,u){(function(i,p){true?p(u):0})(this,(function(i){"use strict";function apply(i,...u){return(...p)=>i(...u,...p)}function initialParams(i){return function(...u){var p=u.pop();return i.call(this,u,p)}}var u=typeof queueMicrotask==="function"&&queueMicrotask;var p=typeof setImmediate==="function"&&setImmediate;var g=typeof process==="object"&&typeof process.nextTick==="function";function fallback(i){setTimeout(i,0)}function wrap(i){return(u,...p)=>i((()=>u(...p)))}var A;if(u){A=queueMicrotask}else if(p){A=setImmediate}else if(g){A=process.nextTick}else{A=fallback}var w=wrap(A);function asyncify(i){if(isAsync(i)){return function(...u){const p=u.pop();const g=i.apply(this,u);return handlePromise(g,p)}}return initialParams((function(u,p){var g;try{g=i.apply(this,u)}catch(i){return p(i)}if(g&&typeof g.then==="function"){return handlePromise(g,p)}else{p(null,g)}}))}function handlePromise(i,u){return i.then((i=>{invokeCallback(u,null,i)}),(i=>{invokeCallback(u,i&&(i instanceof Error||i.message)?i:new Error(i))}))}function invokeCallback(i,u,p){try{i(u,p)}catch(i){w((i=>{throw i}),i)}}function isAsync(i){return i[Symbol.toStringTag]==="AsyncFunction"}function isAsyncGenerator(i){return i[Symbol.toStringTag]==="AsyncGenerator"}function isAsyncIterable(i){return typeof i[Symbol.asyncIterator]==="function"}function wrapAsync(i){if(typeof i!=="function")throw new Error("expected a function");return isAsync(i)?asyncify(i):i}function awaitify(i,u){if(!u)u=i.length;if(!u)throw new Error("arity is undefined");function awaitable(...p){if(typeof p[u-1]==="function"){return i.apply(this,p)}return new Promise(((g,A)=>{p[u-1]=(i,...u)=>{if(i)return A(i);g(u.length>1?u:u[0])};i.apply(this,p)}))}return awaitable}function applyEach$1(i){return function applyEach(u,...p){const g=awaitify((function(g){var A=this;return i(u,((i,u)=>{wrapAsync(i).apply(A,p.concat(u))}),g)}));return g}}function _asyncMap(i,u,p,g){u=u||[];var A=[];var w=0;var C=wrapAsync(p);return i(u,((i,u,p)=>{var g=w++;C(i,((i,u)=>{A[g]=u;p(i)}))}),(i=>{g(i,A)}))}function isArrayLike(i){return i&&typeof i.length==="number"&&i.length>=0&&i.length%1===0}const C={};var S=C;function once(i){function wrapper(...u){if(i===null)return;var p=i;i=null;p.apply(this,u)}Object.assign(wrapper,i);return wrapper}function getIterator(i){return i[Symbol.iterator]&&i[Symbol.iterator]()}function createArrayIterator(i){var u=-1;var p=i.length;return function next(){return++u<p?{value:i[u],key:u}:null}}function createES2015Iterator(i){var u=-1;return function next(){var p=i.next();if(p.done)return null;u++;return{value:p.value,key:u}}}function createObjectIterator(i){var u=i?Object.keys(i):[];var p=-1;var g=u.length;return function next(){var A=u[++p];if(A==="__proto__"){return next()}return p<g?{value:i[A],key:A}:null}}function createIterator(i){if(isArrayLike(i)){return createArrayIterator(i)}var u=getIterator(i);return u?createES2015Iterator(u):createObjectIterator(i)}function onlyOnce(i){return function(...u){if(i===null)throw new Error("Callback was already called.");var p=i;i=null;p.apply(this,u)}}function asyncEachOfLimit(i,u,p,g){let A=false;let w=false;let C=false;let v=0;let B=0;function replenish(){if(v>=u||C||A)return;C=true;i.next().then((({value:i,done:u})=>{if(w||A)return;C=false;if(u){A=true;if(v<=0){g(null)}return}v++;p(i,B,iterateeCallback);B++;replenish()})).catch(handleError)}function iterateeCallback(i,u){v-=1;if(w)return;if(i)return handleError(i);if(i===false){A=true;w=true;return}if(u===S||A&&v<=0){A=true;return g(null)}replenish()}function handleError(i){if(w)return;C=false;A=true;g(i)}replenish()}var eachOfLimit$2=i=>(u,p,g)=>{g=once(g);if(i<=0){throw new RangeError("concurrency limit cannot be less than 1")}if(!u){return g(null)}if(isAsyncGenerator(u)){return asyncEachOfLimit(u,i,p,g)}if(isAsyncIterable(u)){return asyncEachOfLimit(u[Symbol.asyncIterator](),i,p,g)}var A=createIterator(u);var w=false;var C=false;var v=0;var B=false;function iterateeCallback(i,u){if(C)return;v-=1;if(i){w=true;g(i)}else if(i===false){w=true;C=true}else if(u===S||w&&v<=0){w=true;return g(null)}else if(!B){replenish()}}function replenish(){B=true;while(v<i&&!w){var u=A();if(u===null){w=true;if(v<=0){g(null)}return}v+=1;p(u.value,u.key,onlyOnce(iterateeCallback))}B=false}replenish()};function eachOfLimit(i,u,p,g){return eachOfLimit$2(u)(i,Line truncated
|
||||
/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
|
||||
var p;(function(i){if(typeof DO_NOT_EXPORT_CRC==="undefined"){if(true){i(u)}else{}}else{i(p={})}})((function(i){i.version="1.2.2";function signed_crc_table(){var i=0,u=new Array(256);for(var p=0;p!=256;++p){i=p;i=i&1?-306674912^i>>>1:i>>>1;i=i&1?-306674912^i>>>1:i>>>1;i=i&1?-306674912^i>>>1:i>>>1;i=i&1?-306674912^i>>>1:i>>>1;i=i&1?-306674912^i>>>1:i>>>1;i=i&1?-306674912^i>>>1:i>>>1;i=i&1?-306674912^i>>>1:i>>>1;i=i&1?-306674912^i>>>1:i>>>1;u[p]=i}return typeof Int32Array!=="undefined"?new Int32Array(u):u}var u=signed_crc_table();function slice_by_16_tables(i){var u=0,p=0,g=0,A=typeof Int32Array!=="undefined"?new Int32Array(4096):new Array(4096);for(g=0;g!=256;++g)A[g]=i[g];for(g=0;g!=256;++g){p=i[g];for(u=256+g;u<4096;u+=256)p=A[u]=p>>>8^i[p&255]}var w=[];for(g=1;g!=16;++g)w[g-1]=typeof Int32Array!=="undefined"?A.subarray(g*256,g*256+256):A.slice(g*256,g*256+256);return w}var p=slice_by_16_tables(u);var g=p[0],A=p[1],w=p[2],C=p[3],S=p[4];var v=p[5],B=p[6],_=p[7],T=p[8],N=p[9];var x=p[10],k=p[11],O=p[12],D=p[13],Q=p[14];function crc32_bstr(i,p){var g=p^-1;for(var A=0,w=i.length;A<w;)g=g>>>8^u[(g^i.charCodeAt(A++))&255];return~g}function crc32_buf(i,p){var P=p^-1,L=i.length-15,U=0;for(;U<L;)P=Q[i[U++]^P&255]^D[i[U++]^P>>8&255]^O[i[U++]^P>>16&255]^k[i[U++]^P>>>24]^x[i[U++]]^N[i[U++]]^T[i[U++]]^_[i[U++]]^B[i[U++]]^v[i[U++]]^S[i[U++]]^C[i[U++]]^w[i[U++]]^A[i[U++]]^g[i[U++]]^u[i[U++]];L+=15;while(U<L)P=P>>>8^u[(P^i[U++])&255];return~P}function crc32_str(i,p){var g=p^-1;for(var A=0,w=i.length,C=0,S=0;A<w;){C=i.charCodeAt(A++);if(C<128){g=g>>>8^u[(g^C)&255]}else if(C<2048){g=g>>>8^u[(g^(192|C>>6&31))&255];g=g>>>8^u[(g^(128|C&63))&255]}else if(C>=55296&&C<57344){C=(C&1023)+64;S=i.charCodeAt(A++)&1023;g=g>>>8^u[(g^(240|C>>8&7))&255];g=g>>>8^u[(g^(128|C>>2&63))&255];g=g>>>8^u[(g^(128|S>>6&15|(C&3)<<4))&255];g=g>>>8^u[(g^(128|S&63))&255]}else{g=g>>>8^u[(g^(224|C>>12&15))&255];g=g>>>8^u[(g^(128|C>>6&63))&255];g=g>>>8^u[(g^(128|C&63))&255]}}return~g}i.table=u;i.bstr=crc32_bstr;i.buf=crc32_buf;i.str=crc32_str}))},3662:(i,u,p)=>{const{Transform:g}=p(29963);const A=p(84891);class CRC32Stream extends g{constructor(i){super(i);this.checksum=Buffer.allocUnsafe(4);this.checksum.writeInt32BE(0,0);this.rawSize=0}_transform(i,u,p){if(i){this.checksum=A.buf(i,this.checksum)>>>0;this.rawSize+=i.length}p(null,i)}digest(i){const u=Buffer.allocUnsafe(4);u.writeUInt32BE(this.checksum>>>0,0);return i?u.toString(i):u}hex(){return this.digest("hex").toUpperCase()}size(){return this.rawSize}}i.exports=CRC32Stream},76252:(i,u,p)=>{const{DeflateRaw:g}=p(43106);const A=p(84891);class DeflateCRC32Stream extends g{constructor(i){super(i);this.checksum=Buffer.allocUnsafe(4);this.checksum.writeInt32BE(0,0);this.rawSize=0;this.compressedSize=0}push(i,u){if(i){this.compressedSize+=i.length}return super.push(i,u)}_transform(i,u,p){if(i){this.checksum=A.buf(i,this.checksum)>>>0;this.rawSize+=i.length}super._transform(i,u,p)}digest(i){const u=Buffer.allocUnsafe(4);u.writeUInt32BE(this.checksum>>>0,0);return i?u.toString(i):u}hex(){return this.digest("hex").toUpperCase()}size(i=false){if(i){return this.compressedSize}else{return this.rawSize}}}i.exports=DeflateCRC32Stream},82770:(i,u,p)=>{i.exports={CRC32Stream:p(3662),DeflateCRC32Stream:p(76252)}},6110:(i,u,p)=>{u.formatArgs=formatArgs;u.save=save;u.load=load;u.useColors=useColors;u.storage=localstorage();u.destroy=(()=>{let i=false;return()=>{if(!i){i=true;console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}}})();u.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window!=="undefined"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)){return true}if(typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)){return false}return typeof document!=="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!=="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/Line truncated
|
||||
/**
|
||||
* @author Toru Nagashima <https://github.com/mysticatea>
|
||||
* @copyright 2015 Toru Nagashima. All rights reserved.
|
||||
* See LICENSE file in root directory for full license.
|
||||
*/
|
||||
Object.defineProperty(u,"__esModule",{value:true});const p=new WeakMap;const g=new WeakMap;function pd(i){const u=p.get(i);console.assert(u!=null,"'this' is expected an Event object, but got",i);return u}function setCancelFlag(i){if(i.passiveListener!=null){if(typeof console!=="undefined"&&typeof console.error==="function"){console.error("Unable to preventDefault inside passive event listener invocation.",i.passiveListener)}return}if(!i.event.cancelable){return}i.canceled=true;if(typeof i.event.preventDefault==="function"){i.event.preventDefault()}}function Event(i,u){p.set(this,{eventTarget:i,event:u,eventPhase:2,currentTarget:i,canceled:false,stopped:false,immediateStopped:false,passiveListener:null,timeStamp:u.timeStamp||Date.now()});Object.defineProperty(this,"isTrusted",{value:false,enumerable:true});const g=Object.keys(u);for(let i=0;i<g.length;++i){const u=g[i];if(!(u in this)){Object.defineProperty(this,u,defineRedirectDescriptor(u))}}}Event.prototype={get type(){return pd(this).event.type},get target(){return pd(this).eventTarget},get currentTarget(){return pd(this).currentTarget},composedPath(){const i=pd(this).currentTarget;if(i==null){return[]}return[i]},get NONE(){return 0},get CAPTURING_PHASE(){return 1},get AT_TARGET(){return 2},get BUBBLING_PHASE(){return 3},get eventPhase(){return pd(this).eventPhase},stopPropagation(){const i=pd(this);i.stopped=true;if(typeof i.event.stopPropagation==="function"){i.event.stopPropagation()}},stopImmediatePropagation(){const i=pd(this);i.stopped=true;i.immediateStopped=true;if(typeof i.event.stopImmediatePropagation==="function"){i.event.stopImmediatePropagation()}},get bubbles(){return Boolean(pd(this).event.bubbles)},get cancelable(){return Boolean(pd(this).event.cancelable)},preventDefault(){setCancelFlag(pd(this))},get defaultPrevented(){return pd(this).canceled},get composed(){return Boolean(pd(this).event.composed)},get timeStamp(){return pd(this).timeStamp},get srcElement(){return pd(this).eventTarget},get cancelBubble(){return pd(this).stopped},set cancelBubble(i){if(!i){return}const u=pd(this);u.stopped=true;if(typeof u.event.cancelBubble==="boolean"){u.event.cancelBubble=true}},get returnValue(){return!pd(this).canceled},set returnValue(i){if(!i){setCancelFlag(pd(this))}},initEvent(){}};Object.defineProperty(Event.prototype,"constructor",{value:Event,configurable:true,writable:true});if(typeof window!=="undefined"&&typeof window.Event!=="undefined"){Object.setPrototypeOf(Event.prototype,window.Event.prototype);g.set(window.Event.prototype,Event)}function defineRedirectDescriptor(i){return{get(){return pd(this).event[i]},set(u){pd(this).event[i]=u},configurable:true,enumerable:true}}function defineCallDescriptor(i){return{value(){const u=pd(this).event;return u[i].apply(u,arguments)},configurable:true,enumerable:true}}function defineWrapper(i,u){const p=Object.keys(u);if(p.length===0){return i}function CustomEvent(u,p){i.call(this,u,p)}CustomEvent.prototype=Object.create(i.prototype,{constructor:{value:CustomEvent,configurable:true,writable:true}});for(let g=0;g<p.length;++g){const A=p[g];if(!(A in i.prototype)){const i=Object.getOwnPropertyDescriptor(u,A);const p=typeof i.value==="function";Object.defineProperty(CustomEvent.prototype,A,p?defineCallDescriptor(A):defineRedirectDescriptor(A))}}return CustomEvent}function getWrapper(i){if(i==null||i===Object.prototype){return Event}let u=g.get(i);if(u==null){u=defineWrapper(getWrapper(Object.getPrototypeOf(i)),i);g.set(i,u)}return u}function wrapEvent(i,u){const p=getWrapper(Object.getPrototypeOf(u));return new p(i,u)}function isStopped(i){return pd(i).immediateStopped}function setEventPhase(i,u){pd(i).eventPhase=u}function setCurrentTarget(i,u){pd(i).currentTarget=u}function setPassiveListener(i,u){pd(i).passiveListener=u}const A=new WeakMap;const w=1;const C=2;const S=3;function isObject(i){return i!==null&&typeof i==="object"}function getListeners(i){const u=A.get(i);if(u==null){throw new TypeError("'this' is expected an EventTarget object, but got another value.")}return u}function defineEventAttributeDescriptor(i){return{get(){const u=getListeners(this);let p=u.get(i);while(p!=null){if(p.listenerType===S){return p.listener}p=p.next}return null},set(u){if(typeof u!=="function"&&!isObject(u)){u=null}const p=getListeners(this);let g=null;let A=p.get(i);while(A!=null){if(A.listenerType===S){if(g!==null){g.next=A.next}else if(A.next!==null){p.set(i,A.next)}else{p.delete(i)}}else{g=A}A=A.next}if(u!==null){const A={listener:u,listenerType:S,passive:false,once:false,next:null};if(g===null){p.set(i,A)}else{g.next=A}}},configurable:true,enumerable:true}}function defineEventAttribute(i,u){Object.defineProperty(i,`on${u}`,defineEventAttributeDescriptor(u))}function defineCustomEventTarget(i){function CustomEventTarget(){EventTarget.call(this)}CustomEventTarget.prototype=Object.create(EventTarget.prototype,{constructor:{value:CustomEventTarget,configurable:true,writable:true}});for(let u=0;u<i.length;++u){defLine truncated
|
||||
/*! https://mths.be/he v1.2.0 by @mathias | MIT license */(function(p){var g=true&&u;var A=true&&i&&i.exports==g&&i;var w=typeof global=="object"&&global;if(w.global===w||w.window===w){p=w}var C=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;var S=/[\x01-\x7F]/g;var v=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;var B=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;var _={"":"shy","":"zwnj","":"zwj","":"lrm","":"ic","":"it","":"af","":"rlm","":"ZeroWidthSpace","":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp"," ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprimeLine truncated
|
||||
/**
|
||||
* @preserve
|
||||
* JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)
|
||||
*
|
||||
* @author <a href="mailto:jensyt@gmail.com">Jens Taylor</a>
|
||||
* @see http://github.com/homebrewing/brauhaus-diff
|
||||
* @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
|
||||
* @see http://github.com/garycourt/murmurhash-js
|
||||
* @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
|
||||
* @see http://sites.google.com/site/murmurhash/
|
||||
*/
|
||||
(function(){var u;function MurmurHash3(i,p){var g=this instanceof MurmurHash3?this:u;g.reset(p);if(typeof i==="string"&&i.length>0){g.hash(i)}if(g!==this){return g}}MurmurHash3.prototype.hash=function(i){var u,p,g,A,w;w=i.length;this.len+=w;p=this.k1;g=0;switch(this.rem){case 0:p^=w>g?i.charCodeAt(g++)&65535:0;case 1:p^=w>g?(i.charCodeAt(g++)&65535)<<8:0;case 2:p^=w>g?(i.charCodeAt(g++)&65535)<<16:0;case 3:p^=w>g?(i.charCodeAt(g)&255)<<24:0;p^=w>g?(i.charCodeAt(g++)&65280)>>8:0}this.rem=w+this.rem&3;w-=this.rem;if(w>0){u=this.h1;while(1){p=p*11601+(p&65535)*3432906752&4294967295;p=p<<15|p>>>17;p=p*13715+(p&65535)*461832192&4294967295;u^=p;u=u<<13|u>>>19;u=u*5+3864292196&4294967295;if(g>=w){break}p=i.charCodeAt(g++)&65535^(i.charCodeAt(g++)&65535)<<8^(i.charCodeAt(g++)&65535)<<16;A=i.charCodeAt(g++);p^=(A&255)<<24^(A&65280)>>8}p=0;switch(this.rem){case 3:p^=(i.charCodeAt(g+2)&65535)<<16;case 2:p^=(i.charCodeAt(g+1)&65535)<<8;case 1:p^=i.charCodeAt(g)&65535}this.h1=u}this.k1=p;return this};MurmurHash3.prototype.result=function(){var i,u;i=this.k1;u=this.h1;if(i>0){i=i*11601+(i&65535)*3432906752&4294967295;i=i<<15|i>>>17;i=i*13715+(i&65535)*461832192&4294967295;u^=i}u^=this.len;u^=u>>>16;u=u*51819+(u&65535)*2246770688&4294967295;u^=u>>>13;u=u*44597+(u&65535)*3266445312&4294967295;u^=u>>>16;return u>>>0};MurmurHash3.prototype.reset=function(i){this.h1=typeof i==="number"?i:0;this.rem=this.k1=this.len=0;return this};u=new MurmurHash3;if(true){i.exports=MurmurHash3}else{}})()},39598:(i,u,p)=>{try{var g=p(39023);if(typeof g.inherits!=="function")throw"";i.exports=g.inherits}catch(u){i.exports=p(26589)}},26589:i=>{if(typeof Object.create==="function"){i.exports=function inherits(i,u){if(u){i.super_=u;i.prototype=Object.create(u.prototype,{constructor:{value:i,enumerable:false,writable:true,configurable:true}})}}}else{i.exports=function inherits(i,u){if(u){i.super_=u;var TempCtor=function(){};TempCtor.prototype=u.prototype;i.prototype=new TempCtor;i.prototype.constructor=i}}}},68850:(i,u)=>{Object.defineProperty(u,"__esModule",{value:true});u.AddressError=void 0;class AddressError extends Error{constructor(i,u){super(i);this.name="AddressError";if(u!==null){this.parseMessage=u}}}u.AddressError=AddressError},45864:(i,u)=>{Object.defineProperty(u,"__esModule",{value:true});u.isCorrect=u.isInSubnet=void 0;function isInSubnet(i){if(this.subnetMask<i.subnetMask){return false}if(this.mask(i.subnetMask)===i.mask()){return true}return false}u.isInSubnet=isInSubnet;function isCorrect(i){return function(){if(this.addressMinusSuffix!==this.correctForm()){return false}if(this.subnetMask===i&&!this.parsedSubnet){return true}return this.parsedSubnet===String(this.subnetMask)}}u.isCorrect=isCorrect},79253:function(i,u,p){var g=this&&this.__createBinding||(Object.create?function(i,u,p,g){if(g===undefined)g=p;var A=Object.getOwnPropertyDescriptor(u,p);if(!A||("get"in A?!u.__esModule:A.writable||A.configurable)){A={enumerable:true,get:function(){return u[p]}}}Object.defineProperty(i,g,A)}:function(i,u,p,g){if(g===undefined)g=p;i[g]=u[p]});var A=this&&this.__setModuleDefault||(Object.create?function(i,u){Object.defineProperty(i,"default",{enumerable:true,value:u})}:function(i,u){i["default"]=u});var w=this&&this.__importStar||function(i){if(i&&i.__esModule)return i;var u={};if(i!=null)for(var p in i)if(p!=="default"&&Object.prototype.hasOwnProperty.call(i,p))g(u,i,p);A(u,i);return u};Object.defineProperty(u,"__esModule",{value:true});u.v6=u.AddressError=u.Address6=u.Address4=void 0;const C=p(17946);Object.defineProperty(u,"Address4",{enumerable:true,get:function(){return C.Address4}});const S=p(38096);Object.defineProperty(u,"Address6",{enumerable:true,get:function(){return S.Address6}});const v=p(68850);Object.defineProperty(u,"AddressError",{enumerable:true,get:function(){return v.AddressError}});const B=w(p(20339));u.v6={helpers:B}},17946:function(i,u,p){var g=this&&this.__createBinding||(Object.create?function(i,u,p,g){if(g===undefined)g=p;var A=Object.getOwnPropertyDescriptor(u,p);if(!A||("get"in A?!u.__esModule:A.writable||A.configurable)){A={enumerable:true,get:function(){return u[p]}}}Object.defineProperty(i,g,A)}:function(i,u,p,g){if(g===undefined)g=p;i[g]=u[p]});var A=this&&this.__setModuleDefault||(Object.create?function(i,u){Object.defineProperty(i,"default",{enumerable:true,value:u})}:function(i,u){i["default"]=u});var w=this&&this.__importStar||function(i){if(i&&i.__esModule)return i;var u={};if(i!=null)for(var p in i)if(p!=="default"&&Object.prototype.hasOwnProperty.call(i,p))g(u,i,p);A(u,i);return u};Object.defineProperty(u,"__esModule",{value:true});u.Address4=void 0;const C=w(p(45864));const S=w(p(66437));const v=p(68850);const B=p(95947);const _=p(19973);class Address4{constructor(i){this.groups=S.GROUPS;this.parsedAddress=[];this.parsedSubnet="";this.subnet="/32";this.subnetMask=32;this.v4=true;this.isCorrect=C.isCorrect(S.BITS);this.isInSubnet=C.isInSubnet;this.address=i;const u=S.RE_SUBNET_STRING.exec(i);if(u){tLine truncated
|
||||
/**
|
||||
* @license
|
||||
* Copyright (c) 2010-2012 Mikeal Rogers
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an "AS
|
||||
* IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/if(new C.URL(i.url).hostname!==S.hostname){i.headers.delete("authorization");i.headers.delete("cookie")}if(u.status===303||i.method==="POST"&&[301,302].includes(u.status)){g.method="GET";g.body=null;i.headers.delete("content-length")}g.headers={};i.headers.forEach(((i,u)=>{g.headers[u]=i}));g.counter=++i.counter;const v=new A(C.format(S),g);return{request:v,options:g}};const fetch=async(i,u)=>{const p=S.storable(i,u)?await v(i,u):await B(i,u);if(!["GET","HEAD"].includes(i.method)&&p.status>=200&&p.status<=399){await v.invalidate(i,u)}if(!canFollowRedirect(i,p,u)){return p}const g=getRedirect(i,p,u);return fetch(g.request,g.options)};i.exports=fetch},39310:(i,u,p)=>{const{FetchError:g,Headers:A,Request:w,Response:C}=p(88483);const S=p(99824);const v=p(67242);const makeFetchHappen=(i,u)=>{const p=S(u);const g=new w(i,p);return v(g,p)};makeFetchHappen.defaults=(i,u={},p=makeFetchHappen)=>{if(typeof i==="object"){u=i;i=null}const defaultedFetch=(g,A={})=>{const w=g||i;const C={...u,...A,headers:{...u.headers,...A.headers}};return p(w,C)};defaultedFetch.defaults=(i,u={})=>makeFetchHappen.defaults(i,u,defaultedFetch);return defaultedFetch};i.exports=makeFetchHappen;i.exports.FetchError=g;i.exports.Headers=A;i.exports.Request=w;i.exports.Response=C},99824:(i,u,p)=>{const g=p(72250);const A=["if-modified-since","if-none-match","if-unmodified-since","if-match","if-range"];const configureOptions=i=>{const{strictSSL:u,...p}={...i};p.method=p.method?p.method.toUpperCase():"GET";if(u===undefined||u===null){p.rejectUnauthorized=process.env.NODE_TLS_REJECT_UNAUTHORIZED!=="0"}else{p.rejectUnauthorized=u!==false}if(!p.retry){p.retry={retries:0}}else if(typeof p.retry==="string"){const i=parseInt(p.retry,10);if(isFinite(i)){p.retry={retries:i}}else{p.retry={retries:0}}}else if(typeof p.retry==="number"){p.retry={retries:p.retry}}else{p.retry={retries:0,...p.retry}}p.dns={ttl:5*60*1e3,lookup:g.lookup,...p.dns};p.cache=p.cache||"default";if(p.cache==="default"){const i=Object.keys(p.headers||{}).some((i=>A.includes(i.toLowerCase())));if(i){p.cache="no-store"}}p.cacheAdditionalHeaders=p.cacheAdditionalHeaders||[];if(p.cacheManager&&!p.cachePath){p.cachePath=p.cacheManager}return p};i.exports=configureOptions},22314:(i,u,p)=>{const g=p(52899);class CachingMinipassPipeline extends g{#a=[];#c=new Map;constructor(i,...u){super();this.#a=i.events;if(u.length){this.push(...u)}}on(i,u){if(this.#a.includes(i)&&this.#c.has(i)){return u(...this.#c.get(i))}return super.on(i,u)}emit(i,...u){if(this.#a.includes(i)){this.#c.set(i,u)}return super.emit(i,...u)}}i.exports=CachingMinipassPipeline},20766:(i,u,p)=>{const{Minipass:g}=p(78275);const A=p(88483);const{promiseRetry:w}=p(49498);const C=p(68951);const{log:S}=p(26687);const v=p(22314);const{getAgent:B}=p(57995);const _=p(96734);const T=`${_.name}/${_.version} (+https://npm.im/${_.name})`;const N=["ECONNRESET","ECONNREFUSED","EADDRINUSE","ETIMEDOUT","ECONNECTIONTIMEOUT","EIDLETIMEOUT","ERESPONSETIMEOUT","ETRANSFERTIMEOUT"];const x=["request-timeout"];const remoteFetch=(i,u)=>{const p=B(i.url,{...u,signal:undefined});if(!i.headers.has("connection")){i.headers.set("connection",p?"keep-alive":"close")}if(!i.headers.has("user-agent")){i.headers.set("user-agent",T)}const _={...u,agent:p,redirect:"manual"};return w((async(p,w)=>{const B=new A.Request(i,_);try{let i=await A(B,_);if(_.integrity&&i.status===200){const u=C.integrityStream({algorithms:_.algorithms,integrity:_.integrity,size:_.size});const p=new v({events:["integrity","size"]},i.body,u);u.on("integrity",(i=>p.emit("integrity",i)));u.on("size",(i=>p.emit("size",i)));i=new A.Response(p,i);i.body.hasIntegrityEmitter=true}i.headers.set("x-fetch-attempts",w);const T=g.isStream(B.body);const N=B.method!=="POST"&&!T&&([408,420,429].includes(i.status)||i.status>=500);if(N){if(typeof u.onRetry==="function"){u.onRetry(i)}S.http("fetch",`${B.method} ${B.url} attempt ${w} failed with ${i.status}`);return p(i)}return i}catch(i){const g=i.code==="EPROMISERETRY"?i.retried.code:i.code;const C=i.retried instanceof A.Response||N.includes(g)&&x.includes(i.type);if(B.method==="POST"||C){throw i}if(typeof u.onRetry==="function"){u.onRetry(i)}S.http("fetch",`${B.method} ${B.url} attempt ${w} failed with ${i.code}`);return p(i)}}),u.retry).catch((i=>{if(i.status>=400&&i.type!=="system"){return i}throw i}))};i.exports=remoteFetch},43772:(i,u,p)=>{i.exports=minimatch;minimatch.Minimatch=Minimatch;var g=function(){try{return p(16928)}catch(i){}}()||{sep:"/"};minimatch.sep=g.sep;var A=minimatch.GLOBSTAR=Minimatch.GLOBSTAR={};var w=p(73783);var C={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}};var S="[^/]";var v=S+"*?";var B="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";var _="(?:(?!(?:\\/|^)\\.).)*?";var T=charSet("().*{}+?[]^$\\!");function charSet(i){return i.split("").reduce((function(i,u){i[u]=true;return i}),{})}var N=/\/+/;minimatch.filter=filter;fu
Line truncated
|
||||
/*!
|
||||
* mime-types
|
||||
* Copyright(c) 2014 Jonathan Ong
|
||||
* negotiator
|
||||
* Copyright(c) 2012 Federico Romero
|
||||
* Copyright(c) 2012-2014 Isaac Z. Schlueter
|
||||
* Copyright(c) 2015 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/var i=r(7426);var n=r(1017).extname;var s=/^\s*([^;\s]*)(?:;|\s|$)/;var a=/^text\//i;t.charset=charset;t.charsets={lookup:charset};t.contentType=contentType;t.extension=extension;t.extensions=Object.create(null);t.lookup=lookup;t.types=Object.create(null);populateMaps(t.extensions,t.types);function charset(e){if(!e||typeof e!=="string"){return false}var t=s.exec(e);var r=t&&i[t[1].toLowerCase()];if(r&&r.charset){return r.charset}if(t&&a.test(t[1])){return"UTF-8"}return false}function contentType(e){if(!e||typeof e!=="string"){return false}var r=e.indexOf("/")===-1?t.lookup(e):e;if(!r){return false}if(r.indexOf("charset")===-1){var i=t.charset(r);if(i)r+="; charset="+i.toLowerCase()}return r}function extension(e){if(!e||typeof e!=="string"){return false}var r=s.exec(e);var i=r&&t.extensions[r[1].toLowerCase()];if(!i||!i.length){return false}return i[0]}function lookup(e){if(!e||typeof e!=="string"){return false}var r=n("x."+e).toLowerCase().substr(1);if(!r){return false}return t.types[r]||false}function populateMaps(e,t){var r=["nginx","apache",undefined,"iana"];Object.keys(i).forEach((function forEachMimeType(n){var s=i[n];var a=s.extensions;if(!a||!a.length){return}e[n]=a;for(var o=0;o<a.length;o++){var l=a[o];if(t[l]){var c=r.indexOf(i[t[l]].source);var p=r.indexOf(s.source);if(t[l]!=="application/octet-stream"&&(c>p||c===p&&t[l].substr(0,12)==="application/")){continue}}t[l]=n}}))}},3973:(e,t,r)=>{e.exports=minimatch;minimatch.Minimatch=Minimatch;var i=function(){try{return r(1017)}catch(e){}}()||{sep:"/"};minimatch.sep=i.sep;var n=minimatch.GLOBSTAR=Minimatch.GLOBSTAR={};var s=r(3717);var a={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}};var o="[^/]";var l=o+"*?";var c="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";var p="(?:(?!(?:\\/|^)\\.).)*?";var d=charSet("().*{}+?[]^$\\!");function charSet(e){return e.split("").reduce((function(e,t){e[t]=true;return e}),{})}var A=/\/+/;minimatch.filter=filter;function filter(e,t){t=t||{};return function(r,i,n){return minimatch(r,e,t)}}function ext(e,t){t=t||{};var r={};Object.keys(e).forEach((function(t){r[t]=e[t]}));Object.keys(t).forEach((function(e){r[e]=t[e]}));return r}minimatch.defaults=function(e){if(!e||typeof e!=="object"||!Object.keys(e).length){return minimatch}var t=minimatch;var r=function minimatch(r,i,n){return t(r,i,ext(e,n))};r.Minimatch=function Minimatch(r,i){return new t.Minimatch(r,ext(e,i))};r.Minimatch.defaults=function defaults(r){return t.defaults(ext(e,r)).Minimatch};r.filter=function filter(r,i){return t.filter(r,ext(e,i))};r.defaults=function defaults(r){return t.defaults(ext(e,r))};r.makeRe=function makeRe(r,i){return t.makeRe(r,ext(e,i))};r.braceExpand=function braceExpand(r,i){return t.braceExpand(r,ext(e,i))};r.match=function(r,i,n){return t.match(r,i,ext(e,n))};return r};Minimatch.defaults=function(e){return minimatch.defaults(e).Minimatch};function minimatch(e,t,r){assertValidPattern(t);if(!r)r={};if(!r.nocomment&&t.charAt(0)==="#"){return false}return new Minimatch(t,r).match(e)}function Minimatch(e,t){if(!(this instanceof Minimatch)){return new Minimatch(e,t)}assertValidPattern(e);if(!t)t={};e=e.trim();if(!t.allowWindowsEscape&&i.sep!=="/"){e=e.split(i.sep).join("/")}this.options=t;this.set=[];this.pattern=e;this.regexp=null;this.negate=false;this.comment=false;this.empty=false;this.partial=!!t.partial;this.make()}Minimatch.prototype.debug=function(){};Minimatch.prototype.make=make;function make(){var e=this.pattern;var t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=true;return}if(!e){this.empty=true;return}this.parseNegate();var r=this.globSet=this.braceExpand();if(t.debug)this.debug=function debug(){console.error.apply(console,arguments)};this.debug(this.pattern,r);r=this.globParts=r.map((function(e){return e.split(A)}));this.debug(this.pattern,r);r=r.map((function(e,t,r){return e.map(this.parse,this)}),this);this.debug(this.pattern,r);r=r.filter((function(e){return e.indexOf(false)===-1}));this.debug(this.pattern,r);this.set=r}Minimatch.prototype.parseNegate=parseNegate;function parseNegate(){var e=this.pattern;var t=false;var r=this.options;var i=0;if(r.nonegate)return;for(var n=0,s=e.length;n<s&&e.charAt(n)==="!";n++){t=!t;i++}if(i)this.pattern=e.substr(i);this.negate=t}minimatch.braceExpand=function(e,t){return braceExpand(e,t)};Minimatch.prototype.braceExpand=braceExpand;function braceExpand(e,t){if(!t){if(this instanceof Minimatch){t=this.options}else{t={}}}e=typeof e==="undefined"?this.pattern:e;assertValidPattern(e);if(t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)){return[e]}return s(e)}var u=1024*64;var assertValidPattern=function(e){if(typeof e!=="string"){throw new TypeError("invalid pattern")}if(e.length>u){throw new TypeError("pattern is too long")}};Minimatch.prototype.parse=parse;var m={};function parse(e,t){assertValidPattern(e);var r=this.options;if(e==="**"){if(!r.noglobstar)return n;else e="*"}iLine truncated
|
||||
/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */if(!String.fromCodePoint){(function(){var e=String.fromCharCode;var t=Math.floor;var fromCodePoint=function(){var r=16384;var i=[];var n;var s;var a=-1;var o=arguments.length;if(!o){return""}var l="";while(++a<o){var c=Number(arguments[a]);if(!isFinite(c)||c<0||c>1114111||t(c)!==c){throw RangeError("Invalid code point: "+c)}if(c<=65535){i.push(c)}else{c-=65536;n=(c>>10)+55296;s=c%1024+56320;i.push(n,s)}if(a+1===o||i.length>r){l+=e.apply(null,i);i.length=0}}return l};if(Object.defineProperty){Object.defineProperty(String,"fromCodePoint",{value:fromCodePoint,configurable:true,writable:true})}else{String.fromCodePoint=fromCodePoint}})()}})(false?0:t)},5911:(e,t)=>{t=e.exports=SemVer;var r;if(typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)){r=function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER");console.log.apply(console,e)}}else{r=function(){}}t.SEMVER_SPEC_VERSION="2.0.0";var i=256;var n=Number.MAX_SAFE_INTEGER||9007199254740991;var s=16;var a=i-6;var o=t.re=[];var l=t.safeRe=[];var c=t.src=[];var p=t.tokens={};var d=0;function tok(e){p[e]=d++}var A="[a-zA-Z0-9-]";var u=[["\\s",1],["\\d",i],[A,a]];function makeSafeRe(e){for(var t=0;t<u.length;t++){var r=u[t][0];var i=u[t][1];e=e.split(r+"*").join(r+"{0,"+i+"}").split(r+"+").join(r+"{1,"+i+"}")}return e}tok("NUMERICIDENTIFIER");c[p.NUMERICIDENTIFIER]="0|[1-9]\\d*";tok("NUMERICIDENTIFIERLOOSE");c[p.NUMERICIDENTIFIERLOOSE]="\\d+";tok("NONNUMERICIDENTIFIER");c[p.NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-]"+A+"*";tok("MAINVERSION");c[p.MAINVERSION]="("+c[p.NUMERICIDENTIFIER]+")\\."+"("+c[p.NUMERICIDENTIFIER]+")\\."+"("+c[p.NUMERICIDENTIFIER]+")";tok("MAINVERSIONLOOSE");c[p.MAINVERSIONLOOSE]="("+c[p.NUMERICIDENTIFIERLOOSE]+")\\."+"("+c[p.NUMERICIDENTIFIERLOOSE]+")\\."+"("+c[p.NUMERICIDENTIFIERLOOSE]+")";tok("PRERELEASEIDENTIFIER");c[p.PRERELEASEIDENTIFIER]="(?:"+c[p.NUMERICIDENTIFIER]+"|"+c[p.NONNUMERICIDENTIFIER]+")";tok("PRERELEASEIDENTIFIERLOOSE");c[p.PRERELEASEIDENTIFIERLOOSE]="(?:"+c[p.NUMERICIDENTIFIERLOOSE]+"|"+c[p.NONNUMERICIDENTIFIER]+")";tok("PRERELEASE");c[p.PRERELEASE]="(?:-("+c[p.PRERELEASEIDENTIFIER]+"(?:\\."+c[p.PRERELEASEIDENTIFIER]+")*))";tok("PRERELEASELOOSE");c[p.PRERELEASELOOSE]="(?:-?("+c[p.PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+c[p.PRERELEASEIDENTIFIERLOOSE]+")*))";tok("BUILDIDENTIFIER");c[p.BUILDIDENTIFIER]=A+"+";tok("BUILD");c[p.BUILD]="(?:\\+("+c[p.BUILDIDENTIFIER]+"(?:\\."+c[p.BUILDIDENTIFIER]+")*))";tok("FULL");tok("FULLPLAIN");c[p.FULLPLAIN]="v?"+c[p.MAINVERSION]+c[p.PRERELEASE]+"?"+c[p.BUILD]+"?";c[p.FULL]="^"+c[p.FULLPLAIN]+"$";tok("LOOSEPLAIN");c[p.LOOSEPLAIN]="[v=\\s]*"+c[p.MAINVERSIONLOOSE]+c[p.PRERELEASELOOSE]+"?"+c[p.BUILD]+"?";tok("LOOSE");c[p.LOOSE]="^"+c[p.LOOSEPLAIN]+"$";tok("GTLT");c[p.GTLT]="((?:<|>)?=?)";tok("XRANGEIDENTIFIERLOOSE");c[p.XRANGEIDENTIFIERLOOSE]=c[p.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*";tok("XRANGEIDENTIFIER");c[p.XRANGEIDENTIFIER]=c[p.NUMERICIDENTIFIER]+"|x|X|\\*";tok("XRANGEPLAIN");c[p.XRANGEPLAIN]="[v=\\s]*("+c[p.XRANGEIDENTIFIER]+")"+"(?:\\.("+c[p.XRANGEIDENTIFIER]+")"+"(?:\\.("+c[p.XRANGEIDENTIFIER]+")"+"(?:"+c[p.PRERELEASE]+")?"+c[p.BUILD]+"?"+")?)?";tok("XRANGEPLAINLOOSE");c[p.XRANGEPLAINLOOSE]="[v=\\s]*("+c[p.XRANGEIDENTIFIERLOOSE]+")"+"(?:\\.("+c[p.XRANGEIDENTIFIERLOOSE]+")"+"(?:\\.("+c[p.XRANGEIDENTIFIERLOOSE]+")"+"(?:"+c[p.PRERELEASELOOSE]+")?"+c[p.BUILD]+"?"+")?)?";tok("XRANGE");c[p.XRANGE]="^"+c[p.GTLT]+"\\s*"+c[p.XRANGEPLAIN]+"$";tok("XRANGELOOSE");c[p.XRANGELOOSE]="^"+c[p.GTLT]+"\\s*"+c[p.XRANGEPLAINLOOSE]+"$";tok("COERCE");c[p.COERCE]="(^|[^\\d])"+"(\\d{1,"+s+"})"+"(?:\\.(\\d{1,"+s+"}))?"+"(?:\\.(\\d{1,"+s+"}))?"+"(?:$|[^\\d])";tok("COERCERTL");o[p.COERCERTL]=new RegExp(c[p.COERCE],"g");l[p.COERCERTL]=new RegExp(makeSafeRe(c[p.COERCE]),"g");tok("LONETILDE");c[p.LONETILDE]="(?:~>?)";tok("TILDETRIM");c[p.TILDETRIM]="(\\s*)"+c[p.LONETILDE]+"\\s+";o[p.TILDETRIM]=new RegExp(c[p.TILDETRIM],"g");l[p.TILDETRIM]=new RegExp(makeSafeRe(c[p.TILDETRIM]),"g");var m="$1~";tok("TILDE");c[p.TILDE]="^"+c[p.LONETILDE]+c[p.XRANGEPLAIN]+"$";tok("TILDELOOSE");c[p.TILDELOOSE]="^"+c[p.LONETILDE]+c[p.XRANGEPLAINLOOSE]+"$";tok("LONECARET");c[p.LONECARET]="(?:\\^)";tok("CARETTRIM");c[p.CARETTRIM]="(\\s*)"+c[p.LONECARET]+"\\s+";o[p.CARETTRIM]=new RegExp(c[p.CARETTRIM],"g");l[p.CARETTRIM]=new RegExp(makeSafeRe(c[p.CARETTRIM]),"g");var h="$1^";tok("CARET");c[p.CARET]="^"+c[p.LONECARET]+c[p.XRANGEPLAIN]+"$";tok("CARETLOOSE");c[p.CARETLOOSE]="^"+c[p.LONECARET]+c[p.XRANGEPLAINLOOSE]+"$";tok("COMPARATORLOOSE");c[p.COMPARATORLOOSE]="^"+c[p.GTLT]+"\\s*("+c[p.LOOSEPLAIN]+")$|^$";tok("COMPARATOR");c[p.COMPARATOR]="^"+c[p.GTLT]+"\\s*("+c[p.FULLPLAIN]+")$|^$";tok("COMPARATORTRIM");c[p.COMPARATORTRIM]="(\\s*)"+c[p.GTLT]+"\\s*("+c[p.LOOSEPLAIN]+"|"+c[p.XRANGEPLAIN]+")";o[p.COMPARATORTRIM]=new RegExp(c[p.COMPARATORTRIM],"g");l[p.COMPARATORTRIM]=new RegExp(makeSafeRe(c[p.COMPARATORTRIM]),"g");var g="$1$2$3";tok("HYPLine truncated
|
||||
*/
|
||||
var g=p(79168);var A=p(25111);var w=p(56008);var C=p(53672);i.exports=Negotiator;i.exports.Negotiator=Negotiator;function Negotiator(i){if(!(this instanceof Negotiator)){return new Negotiator(i)}this.request=i}Negotiator.prototype.charset=function charset(i){var u=this.charsets(i);return u&&u[0]};Negotiator.prototype.charsets=function charsets(i){return g(this.request.headers["accept-charset"],i)};Negotiator.prototype.encoding=function encoding(i,u){var p=this.encodings(i,u);return p&&p[0]};Negotiator.prototype.encodings=function encodings(i,u){var p=u||{};return A(this.request.headers["accept-encoding"],i,p.preferred)};Negotiator.prototype.language=function language(i){var u=this.languages(i);return u&&u[0]};Negotiator.prototype.languages=function languages(i){return w(this.request.headers["accept-language"],i)};Negotiator.prototype.mediaType=function mediaType(i){var u=this.mediaTypes(i);return u&&u[0]};Negotiator.prototype.mediaTypes=function mediaTypes(i){return C(this.request.headers.accept,i)};Negotiator.prototype.preferredCharset=Negotiator.prototype.charset;Negotiator.prototype.preferredCharsets=Negotiator.prototype.charsets;Negotiator.prototype.preferredEncoding=Negotiator.prototype.encoding;Negotiator.prototype.preferredEncodings=Negotiator.prototype.encodings;Negotiator.prototype.preferredLanguage=Negotiator.prototype.language;Negotiator.prototype.preferredLanguages=Negotiator.prototype.languages;Negotiator.prototype.preferredMediaType=Negotiator.prototype.mediaType;Negotiator.prototype.preferredMediaTypes=Negotiator.prototype.mediaTypes},79168:i=>{i.exports=preferredCharsets;i.exports.preferredCharsets=preferredCharsets;var u=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function parseAcceptCharset(i){var u=i.split(",");for(var p=0,g=0;p<u.length;p++){var A=parseCharset(u[p].trim(),p);if(A){u[g++]=A}}u.length=g;return u}function parseCharset(i,p){var g=u.exec(i);if(!g)return null;var A=g[1];var w=1;if(g[2]){var C=g[2].split(";");for(var S=0;S<C.length;S++){var v=C[S].trim().split("=");if(v[0]==="q"){w=parseFloat(v[1]);break}}}return{charset:A,q:w,i:p}}function getCharsetPriority(i,u,p){var g={o:-1,q:0,s:0};for(var A=0;A<u.length;A++){var w=specify(i,u[A],p);if(w&&(g.s-w.s||g.q-w.q||g.o-w.o)<0){g=w}}return g}function specify(i,u,p){var g=0;if(u.charset.toLowerCase()===i.toLowerCase()){g|=1}else if(u.charset!=="*"){return null}return{i:p,o:u.i,q:u.q,s:g}}function preferredCharsets(i,u){var p=parseAcceptCharset(i===undefined?"*":i||"");if(!u){return p.filter(isQuality).sort(compareSpecs).map(getFullCharset)}var g=u.map((function getPriority(i,u){return getCharsetPriority(i,p,u)}));return g.filter(isQuality).sort(compareSpecs).map((function getCharset(i){return u[g.indexOf(i)]}))}function compareSpecs(i,u){return u.q-i.q||u.s-i.s||i.o-u.o||i.i-u.i||0}function getFullCharset(i){return i.charset}function isQuality(i){return i.q>0}},25111:i=>{i.exports=preferredEncodings;i.exports.preferredEncodings=preferredEncodings;var u=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function parseAcceptEncoding(i){var u=i.split(",");var p=false;var g=1;for(var A=0,w=0;A<u.length;A++){var C=parseEncoding(u[A].trim(),A);if(C){u[w++]=C;p=p||specify("identity",C);g=Math.min(g,C.q||1)}}if(!p){u[w++]={encoding:"identity",q:g,i:A}}u.length=w;return u}function parseEncoding(i,p){var g=u.exec(i);if(!g)return null;var A=g[1];var w=1;if(g[2]){var C=g[2].split(";");for(var S=0;S<C.length;S++){var v=C[S].trim().split("=");if(v[0]==="q"){w=parseFloat(v[1]);break}}}return{encoding:A,q:w,i:p}}function getEncodingPriority(i,u,p){var g={encoding:i,o:-1,q:0,s:0};for(var A=0;A<u.length;A++){var w=specify(i,u[A],p);if(w&&(g.s-w.s||g.q-w.q||g.o-w.o)<0){g=w}}return g}function specify(i,u,p){var g=0;if(u.encoding.toLowerCase()===i.toLowerCase()){g|=1}else if(u.encoding!=="*"){return null}return{encoding:i,i:p,o:u.i,q:u.q,s:g}}function preferredEncodings(i,u,p){var g=parseAcceptEncoding(i||"");var A=p?function comparator(i,u){if(i.q!==u.q){return u.q-i.q}var g=p.indexOf(i.encoding);var A=p.indexOf(u.encoding);if(g===-1&&A===-1){return u.s-i.s||i.o-u.o||i.i-u.i}if(g!==-1&&A!==-1){return g-A}return g===-1?1:-1}:compareSpecs;if(!u){return g.filter(isQuality).sort(A).map(getFullEncoding)}var w=u.map((function getPriority(i,u){return getEncodingPriority(i,g,u)}));return w.filter(isQuality).sort(A).map((function getEncoding(i){return u[w.indexOf(i)]}))}function compareSpecs(i,u){return u.q-i.q||u.s-i.s||i.o-u.o||i.i-u.i}function getFullEncoding(i){return i.encoding}function isQuality(i){return i.q>0}},56008:i=>{i.exports=preferredLanguages;i.exports.preferredLanguages=preferredLanguages;var u=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function parseAcceptLanguage(i){var u=i.split(",");for(var p=0,g=0;p<u.length;p++){var A=parseLanguage(u[p].trim(),p);if(A){u[g++]=A}}u.length=g;return u}function parseLanguage(i,p){var g=u.exec(i);if(!g)return null;var A=g[1];var w=g[2];var C=A;if(w)C+="-"+w;var S=1;if(g[3]){var v=g[3].split(";");for(var B=0;B<v.length;B++){var _=v[B].split(Line truncated
|
||||
/*!
|
||||
* normalize-path <https://github.com/jonschlinkert/normalize-path>
|
||||
*
|
||||
* Copyright (c) 2014-2018, Jon Schlinkert.
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
i.exports=function(i,u){if(typeof i!=="string"){throw new TypeError("expected path to be a string")}if(i==="\\"||i==="/")return"/";var p=i.length;if(p<=1)return i;var g="";if(p>4&&i[3]==="\\"){var A=i[2];if((A==="?"||A===".")&&i.slice(0,2)==="\\\\"){i=i.slice(2);g="//"}}var w=i.split(/[/\\]+/);if(u!==false&&w[w.length-1]===""){w.pop()}return g+w.join("/")}},26687:i=>{const u=Symbol("proc-log.meta");i.exports={META:u,output:{LEVELS:["standard","error","buffer","flush"],KEYS:{standard:"standard",error:"error",buffer:"buffer",flush:"flush"},standard:function(...i){return process.emit("output","standard",...i)},error:function(...i){return process.emit("output","error",...i)},buffer:function(...i){return process.emit("output","buffer",...i)},flush:function(...i){return process.emit("output","flush",...i)}},log:{LEVELS:["notice","error","warn","info","verbose","http","silly","timing","pause","resume"],KEYS:{notice:"notice",error:"error",warn:"warn",info:"info",verbose:"verbose",http:"http",silly:"silly",timing:"timing",pause:"pause",resume:"resume"},error:function(...i){return process.emit("log","error",...i)},notice:function(...i){return process.emit("log","notice",...i)},warn:function(...i){return process.emit("log","warn",...i)},info:function(...i){return process.emit("log","info",...i)},verbose:function(...i){return process.emit("log","verbose",...i)},http:function(...i){return process.emit("log","http",...i)},silly:function(...i){return process.emit("log","silly",...i)},timing:function(...i){return process.emit("log","timing",...i)},pause:function(){return process.emit("log","pause")},resume:function(){return process.emit("log","resume")}},time:{LEVELS:["start","end"],KEYS:{start:"start",end:"end"},start:function(i,u){process.emit("time","start",i);function end(){return process.emit("time","end",i)}if(typeof u==="function"){const i=u();if(i&&i.finally){return i.finally(end)}end();return i}return end},end:function(i){return process.emit("time","end",i)}},input:{LEVELS:["start","end","read"],KEYS:{start:"start",end:"end",read:"read"},start:function(...i){let u;if(typeof i[0]==="function"){u=i.shift()}process.emit("input","start",...i);function end(){return process.emit("input","end",...i)}if(typeof u==="function"){const i=u();if(i&&i.finally){return i.finally(end)}end();return i}return end},end:function(...i){return process.emit("input","end",...i)},read:function(...i){let u,p;const g=new Promise(((i,g)=>{u=i;p=g}));process.emit("input","read",u,p,...i);return g}}}},41564:i=>{if(typeof process==="undefined"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){i.exports={nextTick:nextTick}}else{i.exports=process}function nextTick(i,u,p,g){if(typeof i!=="function"){throw new TypeError('"callback" argument must be a function')}var A=arguments.length;var w,C;switch(A){case 0:case 1:return process.nextTick(i);case 2:return process.nextTick((function afterTickOne(){i.call(null,u)}));case 3:return process.nextTick((function afterTickTwo(){i.call(null,u,p)}));case 4:return process.nextTick((function afterTickThree(){i.call(null,u,p,g)}));default:w=new Array(A-1);C=0;while(C<w.length){w[C++]=arguments[C]}return process.nextTick((function afterTick(){i.apply(null,w)}))}}},7945:i=>{i.exports=global.process},90390:(i,u,p)=>{var g=p(14339);var A=p(8464);var w=Object.prototype.hasOwnProperty;function isRetryError(i){return i&&i.code==="EPROMISERETRY"&&w.call(i,"retried")}function promiseRetry(i,u){var p;var w;if(typeof i==="object"&&typeof u==="function"){p=u;u=i;i=p}w=A.operation(u);return new Promise((function(u,p){w.attempt((function(A){Promise.resolve().then((function(){return i((function(i){if(isRetryError(i)){i=i.retried}throw g(new Error("Retrying"),"EPROMISERETRY",{retried:i})}),A)})).then(u,(function(i){if(isRetryError(i)){i=i.retried;if(w.retry(i||new Error)){return}}p(i)}))}))}))}i.exports=promiseRetry},8464:(i,u,p)=>{i.exports=p(32462)},32462:(i,u,p)=>{var g=p(31440);u.operation=function(i){var p=u.timeouts(i);return new g(p,{forever:i&&i.forever,unref:i&&i.unref,maxRetryTime:i&&i.maxRetryTime})};u.timeouts=function(i){if(i instanceof Array){return[].concat(i)}var u={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:Infinity,randomize:false};for(var p in i){u[p]=i[p]}if(u.minTimeout>u.maxTimeout){throw new Error("minTimeout is greater than maxTimeout")}var g=[];for(var A=0;A<u.retries;A++){g.push(this.createTimeout(A,u))}if(i&&i.forever&&!g.length){g.push(this.createTimeout(A,u))}g.sort((function(i,u){return i-u}));return g};u.createTimeout=function(i,u){var p=u.randomize?Math.random()+1:1;var g=Math.round(p*u.minTimeout*Math.pow(u.factor,i));g=Math.min(g,u.maxTimeout);return g};u.wrap=function(i,p,g){if(p instanceof Array){g=p;p=null}if(!g){g=[];for(var A in i){if(typeof i[A]==="function"){g.push(A)}}}for(var w=0;w<g.length;w++){var C=g[w];var S=i[C];i[C]=function retryWrapper(g){var A=u.operation(p);var w=Array.prototype.slice.call(arguLine truncated
|
||||
/*!
|
||||
* Tmp
|
||||
*
|
||||
* Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>
|
||||
*
|
||||
* MIT Licensed
|
||||
*/const A=p(79896);const w=p(70857);const C=p(16928);const S=p(76982);const v={fs:A.constants,os:w.constants};const B="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",_=/XXXXXX/,T=3,N=(v.O_CREAT||v.fs.O_CREAT)|(v.O_EXCL||v.fs.O_EXCL)|(v.O_RDWR||v.fs.O_RDWR),x=w.platform()==="win32",k=v.EBADF||v.os.errno.EBADF,O=v.ENOENT||v.os.errno.ENOENT,D=448,Q=384,P="exit",L=[],U=A.rmdirSync.bind(A);let H=false;function rimraf(i,u){return A.rm(i,{recursive:true},u)}function FN_RIMRAF_SYNC(i){return A.rmSync(i,{recursive:true})}function tmpName(i,u){const p=_parseArguments(i,u),g=p[0],w=p[1];_assertAndSanitizeOptions(g,(function(i,u){if(i)return w(i);let p=u.tries;(function _getUniqueName(){try{const i=_generateTmpName(u);A.stat(i,(function(u){if(!u){if(p-- >0)return _getUniqueName();return w(new Error("Could not get a unique tmp filename, max tries reached "+i))}w(null,i)}))}catch(i){w(i)}})()}))}function tmpNameSync(i){const u=_parseArguments(i),p=u[0];const g=_assertAndSanitizeOptionsSync(p);let w=g.tries;do{const i=_generateTmpName(g);try{A.statSync(i)}catch(u){return i}}while(w-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function file(i,u){const p=_parseArguments(i,u),g=p[0],w=p[1];tmpName(g,(function _tmpNameCreated(i,u){if(i)return w(i);A.open(u,N,g.mode||Q,(function _fileCreated(i,p){if(i)return w(i);if(g.discardDescriptor){return A.close(p,(function _discardCallback(i){return w(i,u,undefined,_prepareTmpFileRemoveCallback(u,-1,g,false))}))}else{const i=g.discardDescriptor||g.detachDescriptor;w(null,u,p,_prepareTmpFileRemoveCallback(u,i?-1:p,g,false))}}))}))}function fileSync(i){const u=_parseArguments(i),p=u[0];const g=p.discardDescriptor||p.detachDescriptor;const w=tmpNameSync(p);let C=A.openSync(w,N,p.mode||Q);if(p.discardDescriptor){A.closeSync(C);C=undefined}return{name:w,fd:C,removeCallback:_prepareTmpFileRemoveCallback(w,g?-1:C,p,true)}}function dir(i,u){const p=_parseArguments(i,u),g=p[0],w=p[1];tmpName(g,(function _tmpNameCreated(i,u){if(i)return w(i);A.mkdir(u,g.mode||D,(function _dirCreated(i){if(i)return w(i);w(null,u,_prepareTmpDirRemoveCallback(u,g,false))}))}))}function dirSync(i){const u=_parseArguments(i),p=u[0];const g=tmpNameSync(p);A.mkdirSync(g,p.mode||D);return{name:g,removeCallback:_prepareTmpDirRemoveCallback(g,p,true)}}function _removeFileAsync(i,u){const _handler=function(i){if(i&&!_isENOENT(i)){return u(i)}u()};if(0<=i[0])A.close(i[0],(function(){A.unlink(i[1],_handler)}));else A.unlink(i[1],_handler)}function _removeFileSync(i){let u=null;try{if(0<=i[0])A.closeSync(i[0])}catch(i){if(!_isEBADF(i)&&!_isENOENT(i))throw i}finally{try{A.unlinkSync(i[1])}catch(i){if(!_isENOENT(i))u=i}}if(u!==null){throw u}}function _prepareTmpFileRemoveCallback(i,u,p,g){const A=_prepareRemoveCallback(_removeFileSync,[u,i],g);const w=_prepareRemoveCallback(_removeFileAsync,[u,i],g,A);if(!p.keep)L.unshift(A);return g?A:w}function _prepareTmpDirRemoveCallback(i,u,p){const g=u.unsafeCleanup?rimraf:A.rmdir.bind(A);const w=u.unsafeCleanup?FN_RIMRAF_SYNC:U;const C=_prepareRemoveCallback(w,i,p);const S=_prepareRemoveCallback(g,i,p,C);if(!u.keep)L.unshift(C);return p?C:S}function _prepareRemoveCallback(i,u,p,g){let A=false;return function _cleanupCallback(w){if(!A){const C=g||_cleanupCallback;const S=L.indexOf(C);if(S>=0)L.splice(S,1);A=true;if(p||i===U||i===FN_RIMRAF_SYNC){return i(u)}else{return i(u,w||function(){})}}}}function _garbageCollector(){if(!H)return;while(L.length){try{L[0]()}catch(i){}}}function _randomChars(i){let u=[],p=null;try{p=S.randomBytes(i)}catch(u){p=S.pseudoRandomBytes(i)}for(let g=0;g<i;g++){u.push(B[p[g]%B.length])}return u.join("")}function _isUndefined(i){return typeof i==="undefined"}function _parseArguments(i,u){if(typeof i==="function"){return[{},i]}if(_isUndefined(i)){return[{},u]}const p={};for(const u of Object.getOwnPropertyNames(i)){p[u]=i[u]}return[p,u]}function _resolvePath(i,u,p){const g=C.isAbsolute(i)?i:C.join(u,i);A.stat(g,(function(i){if(i){A.realpath(C.dirname(g),(function(i,u){if(i)return p(i);p(null,C.join(u,C.basename(g)))}))}else{A.realpath(g,p)}}))}function _resolvePathSync(i,u){const p=C.isAbsolute(i)?i:C.join(u,i);try{A.statSync(p);return A.realpathSync(p)}catch(i){const u=A.realpathSync(C.dirname(p));return C.join(u,C.basename(p))}}function _generateTmpName(i){const u=i.tmpdir;if(!_isUndefined(i.name)){return C.join(u,i.dir,i.name)}if(!_isUndefined(i.template)){return C.join(u,i.dir,i.template).replace(_,_randomChars(6))}const p=[i.prefix?i.prefix:"tmp","-",process.pid,"-",_randomChars(12),i.postfix?"-"+i.postfix:""].join("");return C.join(u,i.dir,p)}function _assertOptionsBase(i){if(!_isUndefined(i.name)){const u=i.name;if(C.isAbsolute(u))throw new Error(`name option must not contain an absolute path, found "${u}".`);const p=C.basename(u);if(p===".."||p==="."||p!==u)throw new Error(`name option must not contain a path, found "${u}".`)}if(!_isUndefined(i.template)&&!i.template.match(_)){throw new Error(`Invalid teLine truncated
|
||||
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */;const escape=i=>i.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=i=>i.replace(/\r?\n|\r/g,"\r\n");const g=[];const A=new Uint8Array([13,10]);_=0;let w=false;for(const[u,C]of i){if(typeof C==="string"){const i=q.encode(p+`; name="${escape(normalizeLinefeeds(u))}"`+`\r\n\r\n${normalizeLinefeeds(C)}\r\n`);g.push(i);_+=i.byteLength}else{const i=q.encode(`${p}; name="${escape(normalizeLinefeeds(u))}"`+(C.name?`; filename="${escape(C.name)}"`:"")+"\r\n"+`Content-Type: ${C.type||"application/octet-stream"}\r\n\r\n`);g.push(i,C,A);if(typeof C.size==="number"){_+=i.byteLength+C.size+A.byteLength}else{w=true}}}const C=q.encode(`--${u}--\r\n`);g.push(C);_+=C.byteLength;if(w){_=null}B=i;v=async function*(){for(const i of g){if(i.stream){yield*i.stream()}else{yield i}}};T=`multipart/form-data; boundary=${u}`}else if(w(i)){B=i;_=i.size;if(i.type){T=i.type}}else if(typeof i[Symbol.asyncIterator]==="function"){if(u){throw new TypeError("keepalive")}if(g.isDisturbed(i)||i.locked){throw new TypeError("Response body object should not be disturbed or locked")}p=i instanceof ReadableStream?i:A(i)}if(typeof B==="string"||g.isBuffer(B)){_=Buffer.byteLength(B)}if(v!=null){let u;p=new ReadableStream({async start(){u=v(i)[Symbol.asyncIterator]()},async pull(i){const{value:g,done:A}=await u.next();if(A){queueMicrotask((()=>{i.close();i.byobRequest?.respond(0)}))}else{if(!Q(p)){const u=new Uint8Array(g);if(u.byteLength){i.enqueue(u)}}}return i.desiredSize>0},async cancel(i){await u.return()},type:"bytes"})}const N={stream:p,source:B,length:_};return[N,T]}function safelyExtractBody(i,u=false){if(i instanceof ReadableStream){D(!g.isDisturbed(i),"The body has already been consumed.");D(!i.locked,"The stream is locked.")}return extractBody(i,u)}function cloneBody(i,u){const[p,g]=u.stream.tee();u.stream=p;return{stream:g,length:u.length,source:u.source}}function throwIfAborted(i){if(i.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(i){const u={blob(){return consumeBody(this,(i=>{let u=bodyMimeType(this);if(u===null){u=""}else if(u){u=U(u)}return new O([i],{type:u})}),i)},arrayBuffer(){return consumeBody(this,(i=>new Uint8Array(i).buffer),i)},text(){return consumeBody(this,T,i)},json(){return consumeBody(this,parseJSONFromBytes,i)},formData(){return consumeBody(this,(i=>{const u=bodyMimeType(this);if(u!==null){switch(u.essence){case"multipart/form-data":{const p=H(i,u);if(p==="failure"){throw new TypeError("Failed to parse body as FormData.")}const g=new N;g[x]=p;return g}case"application/x-www-form-urlencoded":{const u=new URLSearchParams(i.toString());const p=new N;for(const[i,g]of u){p.append(i,g)}return p}}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')}),i)},bytes(){return consumeBody(this,(i=>new Uint8Array(i)),i)}};return u}function mixinBody(i){Object.assign(i.prototype,bodyMixinMethods(i))}async function consumeBody(i,u,p){k.brandCheck(i,p);if(bodyUnusable(i)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(i[x]);const g=v();const errorSteps=i=>g.reject(i);const successSteps=i=>{try{g.resolve(u(i))}catch(i){errorSteps(i)}};if(i[x].body==null){successSteps(Buffer.allocUnsafe(0));return g.promise}await B(i[x].body,successSteps,errorSteps);return g.promise}function bodyUnusable(i){const u=i[x].body;return u!=null&&(u.stream.locked||g.isDisturbed(u.stream))}function parseJSONFromBytes(i){return JSON.parse(T(i))}function bodyMimeType(i){const u=i[x].headersList;const p=_(u);if(p==="failure"){return null}return p}i.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:$,hasFinalizationRegistry:z,bodyUnusable:bodyUnusable}},4495:i=>{const u=["GET","HEAD","POST"];const p=new Set(u);const g=[101,204,205,304];const A=[301,302,303,307,308];const w=new Set(A);const C=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"];const S=new Set(C);const v=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const B=new Set(v);const _=["follow","manual","error"];const T=["GET","HEAD","OPTIONS","TRACE"];const N=new Set(T);const x=["navigate","same-origin","no-cors","cors"];const k=["omit","same-origin","include"];const O=["default","no-store","reload","no-cache","force-cLine truncated
|
||||
/*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */S[C-4]=p[0];S[C-3]=p[1];S[C-2]=p[2];S[C-1]=p[3];S[1]=w;if(w===126){S.writeUInt16BE(A,2)}else if(w===127){S[2]=S[3]=0;S.writeUIntBE(A,4,6)}S[1]|=128;for(let i=0;i<A;++i){S[C+i]=u[i]^p[i&3]}return S}}i.exports={WebsocketFrameSend:WebsocketFrameSend}},19469:(i,u,p)=>{const{createInflateRaw:g,Z_DEFAULT_WINDOWBITS:A}=p(38522);const{isValidClientWindowBits:w}=p(98625);const C=Buffer.from([0,0,255,255]);const S=Symbol("kBuffer");const v=Symbol("kLength");class PerMessageDeflate{#ce;#e={};constructor(i){this.#e.serverNoContextTakeover=i.has("server_no_context_takeover");this.#e.serverMaxWindowBits=i.get("server_max_window_bits")}decompress(i,u,p){if(!this.#ce){let i=A;if(this.#e.serverMaxWindowBits){if(!w(this.#e.serverMaxWindowBits)){p(new Error("Invalid server_max_window_bits"));return}i=Number.parseInt(this.#e.serverMaxWindowBits)}this.#ce=g({windowBits:i});this.#ce[S]=[];this.#ce[v]=0;this.#ce.on("data",(i=>{this.#ce[S].push(i);this.#ce[v]+=i.length}));this.#ce.on("error",(i=>{this.#ce=null;p(i)}))}this.#ce.write(i);if(u){this.#ce.write(C)}this.#ce.flush((()=>{const i=Buffer.concat(this.#ce[S],this.#ce[v]);this.#ce[S].length=0;this.#ce[v]=0;p(null,i)}))}}i.exports={PerMessageDeflate:PerMessageDeflate}},81652:(i,u,p)=>{const{Writable:g}=p(57075);const A=p(34589);const{parserStates:w,opcodes:C,states:S,emptyBuffer:v,sentCloseFrameState:B}=p(20736);const{kReadyState:_,kSentClose:T,kResponse:N,kReceivedClose:x}=p(61216);const{channels:k}=p(42414);const{isValidStatusCode:O,isValidOpcode:D,failWebsocketConnection:Q,websocketMessageReceived:P,utf8Decode:L,isControlFrame:U,isTextBinaryFrame:H,isContinuationFrame:j}=p(98625);const{WebsocketFrameSend:q}=p(3264);const{closeWebSocketConnection:z}=p(86897);const{PerMessageDeflate:$}=p(19469);class ByteParser extends g{#le=[];#ue=0;#de=false;#O=w.INFO;#he={};#fe=[];#pe;constructor(i,u){super();this.ws=i;this.#pe=u==null?new Map:u;if(this.#pe.has("permessage-deflate")){this.#pe.set("permessage-deflate",new $(u))}}_write(i,u,p){this.#le.push(i);this.#ue+=i.length;this.#de=true;this.run(p)}run(i){while(this.#de){if(this.#O===w.INFO){if(this.#ue<2){return i()}const u=this.consume(2);const p=(u[0]&128)!==0;const g=u[0]&15;const A=(u[1]&128)===128;const S=!p&&g!==C.CONTINUATION;const v=u[1]&127;const B=u[0]&64;const _=u[0]&32;const T=u[0]&16;if(!D(g)){Q(this.ws,"Invalid opcode received");return i()}if(A){Q(this.ws,"Frame cannot be masked");return i()}if(B!==0&&!this.#pe.has("permessage-deflate")){Q(this.ws,"Expected RSV1 to be clear.");return}if(_!==0||T!==0){Q(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(S&&!H(g)){Q(this.ws,"Invalid frame type was fragmented.");return}if(H(g)&&this.#fe.length>0){Q(this.ws,"Expected continuation frame");return}if(this.#he.fragmented&&S){Q(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((v>125||S)&&U(g)){Q(this.ws,"Control frame either too large or fragmented");return}if(j(g)&&this.#fe.length===0&&!this.#he.compressed){Q(this.ws,"Unexpected continuation frame");return}if(v<=125){this.#he.payloadLength=v;this.#O=w.READ_DATA}else if(v===126){this.#O=w.PAYLOADLENGTH_16}else if(v===127){this.#O=w.PAYLOADLENGTH_64}if(H(g)){this.#he.binaryType=g;this.#he.compressed=B!==0}this.#he.opcode=g;this.#he.masked=A;this.#he.fin=p;this.#he.fragmented=S}else if(this.#O===w.PAYLOADLENGTH_16){if(this.#ue<2){return i()}const u=this.consume(2);this.#he.payloadLength=u.readUInt16BE(0);this.#O=w.READ_DATA}else if(this.#O===w.PAYLOADLENGTH_64){if(this.#ue<8){return i()}const u=this.consume(8);const p=u.readUInt32BE(0);if(p>2**31-1){Q(this.ws,"Received payload length > 2^31 bytes.");return}const g=u.readUInt32BE(4);this.#he.payloadLength=(p<<8)+g;this.#O=w.READ_DATA}else if(this.#O===w.READ_DATA){if(this.#ue<this.#he.payloadLength){return i()}const u=this.consume(this.#he.payloadLength);if(U(this.#he.opcode)){this.#de=this.parseControlFrame(u);this.#O=w.INFO}else{if(!this.#he.compressed){this.#fe.push(u);if(!this.#he.fragmented&&this.#he.fin){const i=Buffer.concat(this.#fe);P(this.ws,this.#he.binaryType,i);this.#fe.length=0}this.#O=w.INFO}else{this.#pe.get("permessage-deflate").decompress(u,this.#he.fin,((u,p)=>{if(u){z(this.ws,1007,u.message,u.message.length);return}this.#fe.push(p);if(!this.#he.fin){this.#O=w.INFO;this.#de=true;this.run(i);return}P(this.ws,this.#he.binaryType,Buffer.concat(this.#fe));this.#de=true;this.#O=w.INFO;this.#fe.length=0;this.run(i)}));this.#de=false;break}}}}}consume(i){if(i>this.#ue){throw new Error("Called consume() before buffers satiated.")}else if(i===0){return v}if(this.#le[0].length===i){this.#ue-=this.#le[0].length;return this.#le.shift()}const u=Buffer.allocUnsafe(i);let p=0;while(p!==i){const g=this.#le[0];const{length:A}=g;if(A+p===i){u.set(this.#le.shift(),p);break}else if(A+p>i){u.set(g.subarray(0,i-p),p);this.#le[0]=g.subarray(i-p);break}else{u.set(this.#le.shift(),p);p+=g.length}}this.#ue-=i;return u}parseCloseBody(i){A(i.length!==1);let u;if(i.lengtLine truncated
|
||||
/**
|
||||
* ZipStream
|
||||
*
|
||||
* @ignore
|
||||
* @license [MIT]{@link https://github.com/archiverjs/node-zip-stream/blob/master/LICENSE}
|
||||
* @copyright (c) 2014 Chris Talkington, contributors.
|
||||
*/
|
||||
const i=r(7147);const n=r(2037);const s=r(1017);const a=r(6113);const o={fs:i.constants,os:n.constants};const l=r(4959);const c="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",p=/XXXXXX/,d=3,A=(o.O_CREAT||o.fs.O_CREAT)|(o.O_EXCL||o.fs.O_EXCL)|(o.O_RDWR||o.fs.O_RDWR),u=n.platform()==="win32",m=o.EBADF||o.os.errno.EBADF,h=o.ENOENT||o.os.errno.ENOENT,g=448,E=384,y="exit",C=[],b=i.rmdirSync.bind(i),v=l.sync;let I=false;function tmpName(e,t){const r=_parseArguments(e,t),n=r[0],s=r[1];try{_assertAndSanitizeOptions(n)}catch(e){return s(e)}let a=n.tries;(function _getUniqueName(){try{const e=_generateTmpName(n);i.stat(e,(function(t){if(!t){if(a-- >0)return _getUniqueName();return s(new Error("Could not get a unique tmp filename, max tries reached "+e))}s(null,e)}))}catch(e){s(e)}})()}function tmpNameSync(e){const t=_parseArguments(e),r=t[0];_assertAndSanitizeOptions(r);let n=r.tries;do{const e=_generateTmpName(r);try{i.statSync(e)}catch(t){return e}}while(n-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function file(e,t){const r=_parseArguments(e,t),n=r[0],s=r[1];tmpName(n,(function _tmpNameCreated(e,t){if(e)return s(e);i.open(t,A,n.mode||E,(function _fileCreated(e,r){if(e)return s(e);if(n.discardDescriptor){return i.close(r,(function _discardCallback(e){return s(e,t,undefined,_prepareTmpFileRemoveCallback(t,-1,n,false))}))}else{const e=n.discardDescriptor||n.detachDescriptor;s(null,t,r,_prepareTmpFileRemoveCallback(t,e?-1:r,n,false))}}))}))}function fileSync(e){const t=_parseArguments(e),r=t[0];const n=r.discardDescriptor||r.detachDescriptor;const s=tmpNameSync(r);var a=i.openSync(s,A,r.mode||E);if(r.discardDescriptor){i.closeSync(a);a=undefined}return{name:s,fd:a,removeCallback:_prepareTmpFileRemoveCallback(s,n?-1:a,r,true)}}function dir(e,t){const r=_parseArguments(e,t),n=r[0],s=r[1];tmpName(n,(function _tmpNameCreated(e,t){if(e)return s(e);i.mkdir(t,n.mode||g,(function _dirCreated(e){if(e)return s(e);s(null,t,_prepareTmpDirRemoveCallback(t,n,false))}))}))}function dirSync(e){const t=_parseArguments(e),r=t[0];const n=tmpNameSync(r);i.mkdirSync(n,r.mode||g);return{name:n,removeCallback:_prepareTmpDirRemoveCallback(n,r,true)}}function _removeFileAsync(e,t){const _handler=function(e){if(e&&!_isENOENT(e)){return t(e)}t()};if(0<=e[0])i.close(e[0],(function(){i.unlink(e[1],_handler)}));else i.unlink(e[1],_handler)}function _removeFileSync(e){let t=null;try{if(0<=e[0])i.closeSync(e[0])}catch(e){if(!_isEBADF(e)&&!_isENOENT(e))throw e}finally{try{i.unlinkSync(e[1])}catch(e){if(!_isENOENT(e))t=e}}if(t!==null){throw t}}function _prepareTmpFileRemoveCallback(e,t,r,i){const n=_prepareRemoveCallback(_removeFileSync,[t,e],i);const s=_prepareRemoveCallback(_removeFileAsync,[t,e],i,n);if(!r.keep)C.unshift(n);return i?n:s}function _prepareTmpDirRemoveCallback(e,t,r){const n=t.unsafeCleanup?l:i.rmdir.bind(i);const s=t.unsafeCleanup?v:b;const a=_prepareRemoveCallback(s,e,r);const o=_prepareRemoveCallback(n,e,r,a);if(!t.keep)C.unshift(a);return r?a:o}function _prepareRemoveCallback(e,t,r,i){let n=false;return function _cleanupCallback(s){if(!n){const a=i||_cleanupCallback;const o=C.indexOf(a);if(o>=0)C.splice(o,1);n=true;if(r||e===b||e===v){return e(t)}else{return e(t,s||function(){})}}}}function _garbageCollector(){if(!I)return;while(C.length){try{C[0]()}catch(e){}}}function _randomChars(e){let t=[],r=null;try{r=a.randomBytes(e)}catch(t){r=a.pseudoRandomBytes(e)}for(var i=0;i<e;i++){t.push(c[r[i]%c.length])}return t.join("")}function _isBlank(e){return e===null||_isUndefined(e)||!e.trim()}function _isUndefined(e){return typeof e==="undefined"}function _parseArguments(e,t){if(typeof e==="function"){return[{},e]}if(_isUndefined(e)){return[{},t]}const r={};for(const t of Object.getOwnPropertyNames(e)){r[t]=e[t]}return[r,t]}function _generateTmpName(e){const t=e.tmpdir;if(!_isUndefined(e.name))return s.join(t,e.dir,e.name);if(!_isUndefined(e.template))return s.join(t,e.dir,e.template).replace(p,_randomChars(6));const r=[e.prefix?e.prefix:"tmp","-",process.pid,"-",_randomChars(12),e.postfix?"-"+e.postfix:""].join("");return s.join(t,e.dir,r)}function _assertAndSanitizeOptions(e){e.tmpdir=_getTmpDir(e);const t=e.tmpdir;if(!_isUndefined(e.name))_assertIsRelative(e.name,"name",t);if(!_isUndefined(e.dir))_assertIsRelative(e.dir,"dir",t);if(!_isUndefined(e.template)){_assertIsRelative(e.template,"template",t);if(!e.template.match(p))throw new Error(`Invalid template, found "${e.template}".`)}if(!_isUndefined(e.tries)&&isNaN(e.tries)||e.tries<0)throw new Error(`Invalid tries, found "${e.tries}".`);e.tries=_isUndefined(e.name)?e.tries||d:1;e.keep=!!e.keep;e.detachDescriptor=!!e.detachDescriptor;e.discardDescriptor=!!e.discardDescriptor;e.unsafeCleanup=!!e.unsafeCleanup;e.dir=_isUndefined(e.dir)?"":s.relative(t,_resolvePath(e.dir,t));e.template=_isUndefined(e.template)?undefined:s.relative(t,_resolvePath(e.template,t));e.template=_isBlank(e.template)?undefined:s.relative(e.dir,e.template);e.naLine truncated
|
||||
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */;const escape=e=>e.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=e=>e.replace(/\r?\n|\r/g,"\r\n");const i=new TextEncoder;const n=[];const s=new Uint8Array([13,10]);d=0;let a=false;for(const[t,o]of e){if(typeof o==="string"){const e=i.encode(r+`; name="${escape(normalizeLinefeeds(t))}"`+`\r\n\r\n${normalizeLinefeeds(o)}\r\n`);n.push(e);d+=e.byteLength}else{const e=i.encode(`${r}; name="${escape(normalizeLinefeeds(t))}"`+(o.name?`; filename="${escape(o.name)}"`:"")+"\r\n"+`Content-Type: ${o.type||"application/octet-stream"}\r\n\r\n`);n.push(e,o,s);if(typeof o.size==="number"){d+=e.byteLength+o.size+s.byteLength}else{a=true}}}const o=i.encode(`--${t}--`);n.push(o);d+=o.byteLength;if(a){d=null}p=e;c=async function*(){for(const e of n){if(e.stream){yield*e.stream()}else{yield e}}};A="multipart/form-data; boundary="+t}else if(a(e)){p=e;d=e.size;if(e.type){A=e.type}}else if(typeof e[Symbol.asyncIterator]==="function"){if(t){throw new TypeError("keepalive")}if(n.isDisturbed(e)||e.locked){throw new TypeError("Response body object should not be disturbed or locked")}i=e instanceof S?e:s(e)}if(typeof p==="string"||n.isBuffer(p)){d=Buffer.byteLength(p)}if(c!=null){let t;i=new S({async start(){t=c(e)[Symbol.asyncIterator]()},async pull(e){const{value:r,done:n}=await t.next();if(n){queueMicrotask((()=>{e.close()}))}else{if(!b(i)){e.enqueue(new Uint8Array(r))}}return e.desiredSize>0},async cancel(e){await t.return()},type:undefined})}const u={stream:i,source:p,length:d};return[u,A]}function safelyExtractBody(e,t=false){if(!S){S=r(5356).ReadableStream}if(e instanceof S){C(!n.isDisturbed(e),"The body has already been consumed.");C(!e.locked,"The stream is locked.")}return extractBody(e,t)}function cloneBody(e){const[t,r]=e.stream.tee();const i=h(r,{transfer:[r]});const[,n]=i.tee();e.stream=t;return{stream:n,length:e.length,source:e.source}}async function*consumeBody(e){if(e){if(v(e)){yield e}else{const t=e.stream;if(n.isDisturbed(t)){throw new TypeError("The body has already been consumed.")}if(t.locked){throw new TypeError("The stream is locked.")}t[y]=true;yield*t}}}function throwIfAborted(e){if(e.aborted){throw new m("The operation was aborted.","AbortError")}}function bodyMixinMethods(e){const t={blob(){return specConsumeBody(this,(e=>{let t=bodyMimeType(this);if(t==="failure"){t=""}else if(t){t=w(t)}return new g([e],{type:t})}),e)},arrayBuffer(){return specConsumeBody(this,(e=>new Uint8Array(e).buffer),e)},text(){return specConsumeBody(this,utf8DecodeBytes,e)},json(){return specConsumeBody(this,parseJSONFromBytes,e)},async formData(){u.brandCheck(this,e);throwIfAborted(this[A]);const t=this.headers.get("Content-Type");if(/multipart\/form-data/.test(t)){const e={};for(const[t,r]of this.headers)e[t.toLowerCase()]=r;const t=new d;let r;try{r=new i({headers:e,preservePath:true})}catch(e){throw new m(`${e}`,"AbortError")}r.on("field",((e,r)=>{t.append(e,r)}));r.on("file",((e,r,i,n,s)=>{const a=[];if(n==="base64"||n.toLowerCase()==="base64"){let n="";r.on("data",(e=>{n+=e.toString().replace(/[\r\n]/gm,"");const t=n.length-n.length%4;a.push(Buffer.from(n.slice(0,t),"base64"));n=n.slice(t)}));r.on("end",(()=>{a.push(Buffer.from(n,"base64"));t.append(e,new x(a,i,{type:s}))}))}else{r.on("data",(e=>{a.push(e)}));r.on("end",(()=>{t.append(e,new x(a,i,{type:s}))}))}}));const n=new Promise(((e,t)=>{r.on("finish",e);r.on("error",(e=>t(new TypeError(e))))}));if(this.body!==null)for await(const e of consumeBody(this[A].body))r.write(e);r.end();await n;return t}else if(/application\/x-www-form-urlencoded/.test(t)){let e;try{let t="";const r=new TextDecoder("utf-8",{ignoreBOM:true});for await(const e of consumeBody(this[A].body)){if(!v(e)){throw new TypeError("Expected Uint8Array chunk")}t+=r.decode(e,{stream:true})}t+=r.decode();e=new URLSearchParams(t)}catch(e){throw Object.assign(new TypeError,{cause:e})}const t=new d;for(const[r,i]of e){t.append(r,i)}return t}else{await Promise.resolve();throwIfAborted(this[A]);throw u.errors.exception({header:`${e.name}.formData`,message:"Could not parse content as FormData."})}}};return t}function mixinBody(e){Object.assign(e.prototype,bodyMixinMethods(e))}async function specConsumeBody(e,t,r){u.brandCheck(e,r);throwIfAborted(e[A]);if(bodyUnusable(e[A].body)){throw new TypeError("Body is unusable")}const i=c();const errorSteps=e=>i.reject(e);const successSteps=e=>{try{i.resolve(t(e))}catch(e){errorSteps(e)}};if(e[A].body==null){successSteps(new Uint8Array);return i.promise}await p(e[A].body,successSteps,errorSteps);return i.promise}function bodyUnusable(e){return e!=null&&(e.stream.locked||n.isDisturbed(e.stream))}function utf8DecodeBytes(e){if(e.length===0){return""}if(e[0]===239&&e[1]===187&&e[2]===191){e=e.subarray(3)}const t=(new TextDecoder).decode(e);return t}function parseJSONFromBytes(e){return JSON.parse(utf8DecodeBytes(e))}function bodyMimeType(e){const{heaLine truncated
|
||||
/*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */s[n-4]=this.maskKey[0];s[n-3]=this.maskKey[1];s[n-2]=this.maskKey[2];s[n-1]=this.maskKey[3];s[1]=r;if(r===126){s.writeUInt16BE(t,2)}else if(r===127){s[2]=s[3]=0;s.writeUIntBE(t,4,6)}s[1]|=128;for(let e=0;e<t;e++){s[n+e]=this.frameData[e]^this.maskKey[e%4]}return s}}e.exports={WebsocketFrameSend:WebsocketFrameSend}},1688:(e,t,r)=>{"use strict";const{Writable:i}=r(2781);const n=r(7643);const{parserStates:s,opcodes:a,states:o,emptyBuffer:l}=r(9188);const{kReadyState:c,kSentClose:p,kResponse:d,kReceivedClose:A}=r(7578);const{isValidStatusCode:u,failWebsocketConnection:m,websocketMessageReceived:h}=r(5515);const{WebsocketFrameSend:g}=r(5444);const E={};E.ping=n.channel("undici:websocket:ping");E.pong=n.channel("undici:websocket:pong");class ByteParser extends i{#a=[];#o=0;#l=s.INFO;#c={};#p=[];constructor(e){super();this.ws=e}_write(e,t,r){this.#a.push(e);this.#o+=e.length;this.run(r)}run(e){while(true){if(this.#l===s.INFO){if(this.#o<2){return e()}const t=this.consume(2);this.#c.fin=(t[0]&128)!==0;this.#c.opcode=t[0]&15;this.#c.originalOpcode??=this.#c.opcode;this.#c.fragmented=!this.#c.fin&&this.#c.opcode!==a.CONTINUATION;if(this.#c.fragmented&&this.#c.opcode!==a.BINARY&&this.#c.opcode!==a.TEXT){m(this.ws,"Invalid frame type was fragmented.");return}const r=t[1]&127;if(r<=125){this.#c.payloadLength=r;this.#l=s.READ_DATA}else if(r===126){this.#l=s.PAYLOADLENGTH_16}else if(r===127){this.#l=s.PAYLOADLENGTH_64}if(this.#c.fragmented&&r>125){m(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((this.#c.opcode===a.PING||this.#c.opcode===a.PONG||this.#c.opcode===a.CLOSE)&&r>125){m(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(this.#c.opcode===a.CLOSE){if(r===1){m(this.ws,"Received close frame with a 1-byte body.");return}const e=this.consume(r);this.#c.closeInfo=this.parseCloseBody(false,e);if(!this.ws[p]){const e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#c.closeInfo.code,0);const t=new g(e);this.ws[d].socket.write(t.createFrame(a.CLOSE),(e=>{if(!e){this.ws[p]=true}}))}this.ws[c]=o.CLOSING;this.ws[A]=true;this.end();return}else if(this.#c.opcode===a.PING){const t=this.consume(r);if(!this.ws[A]){const e=new g(t);this.ws[d].socket.write(e.createFrame(a.PONG));if(E.ping.hasSubscribers){E.ping.publish({payload:t})}}this.#l=s.INFO;if(this.#o>0){continue}else{e();return}}else if(this.#c.opcode===a.PONG){const t=this.consume(r);if(E.pong.hasSubscribers){E.pong.publish({payload:t})}if(this.#o>0){continue}else{e();return}}}else if(this.#l===s.PAYLOADLENGTH_16){if(this.#o<2){return e()}const t=this.consume(2);this.#c.payloadLength=t.readUInt16BE(0);this.#l=s.READ_DATA}else if(this.#l===s.PAYLOADLENGTH_64){if(this.#o<8){return e()}const t=this.consume(8);const r=t.readUInt32BE(0);if(r>2**31-1){m(this.ws,"Received payload length > 2^31 bytes.");return}const i=t.readUInt32BE(4);this.#c.payloadLength=(r<<8)+i;this.#l=s.READ_DATA}else if(this.#l===s.READ_DATA){if(this.#o<this.#c.payloadLength){return e()}else if(this.#o>=this.#c.payloadLength){const e=this.consume(this.#c.payloadLength);this.#p.push(e);if(!this.#c.fragmented||this.#c.fin&&this.#c.opcode===a.CONTINUATION){const e=Buffer.concat(this.#p);h(this.ws,this.#c.originalOpcode,e);this.#c={};this.#p.length=0}this.#l=s.INFO}}if(this.#o>0){continue}else{e();break}}}consume(e){if(e>this.#o){return null}else if(e===0){return l}if(this.#a[0].length===e){this.#o-=this.#a[0].length;return this.#a.shift()}const t=Buffer.allocUnsafe(e);let r=0;while(r!==e){const i=this.#a[0];const{length:n}=i;if(n+r===e){t.set(this.#a.shift(),r);break}else if(n+r>e){t.set(i.subarray(0,e-r),r);this.#a[0]=i.subarray(e-r);break}else{t.set(this.#a.shift(),r);r+=i.length}}this.#o-=e;return t}parseCloseBody(e,t){let r;if(t.length>=2){r=t.readUInt16BE(0)}if(e){if(!u(r)){return null}return{code:r}}let i=t.subarray(2);if(i[0]===239&&i[1]===187&&i[2]===191){i=i.subarray(3)}if(r!==undefined&&!u(r)){return null}try{i=new TextDecoder("utf-8",{fatal:true}).decode(i)}catch{return null}return{code:r,reason:i}}get closingInfo(){return this.#c.closeInfo}}e.exports={ByteParser:ByteParser}},7578:e=>{"use strict";e.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}},5515:(e,t,r)=>{"use strict";const{kReadyState:i,kController:n,kResponse:s,kBinaryType:a,kWebSocketURL:o}=r(7578);const{states:l,opcodes:c}=r(9188);const{MessageEvent:p,ErrorEvent:d}=r(2611);function isEstablished(e){return e[i]===l.OPEN}function isClosing(e){return e[i]===l.CLOSING}function isClosed(e){return e[i]===l.CLOSED}function fireEvent(e,t,r=Event,i){const n=new r(e,i);t.dispatchEvent(n)}function websocketMessageReceived(e,t,r){if(e[i]!==l.OPEN){return}let n;if(t===c.TEXT){try{n=new TextDecoder("utf-8",{fatal:true}).decode(r)Line truncated
|
||||
var g=p(39023).inherits;var A=p(47544).ZipArchiveOutputStream;var w=p(47544).ZipArchiveEntry;var C=p(53296);var S=i.exports=function(i){if(!(this instanceof S)){return new S(i)}i=this.options=i||{};i.zlib=i.zlib||{};A.call(this,i);if(typeof i.level==="number"&&i.level>=0){i.zlib.level=i.level;delete i.level}if(!i.forceZip64&&typeof i.zlib.level==="number"&&i.zlib.level===0){i.store=true}i.namePrependSlash=i.namePrependSlash||false;if(i.comment&&i.comment.length>0){this.setComment(i.comment)}};g(S,A);S.prototype._normalizeFileData=function(i){i=C.defaults(i,{type:"file",name:null,namePrependSlash:this.options.namePrependSlash,linkname:null,date:null,mode:null,store:this.options.store,comment:""});var u=i.type==="directory";var p=i.type==="symlink";if(i.name){i.name=C.sanitizePath(i.name);if(!p&&i.name.slice(-1)==="/"){u=true;i.type="directory"}else if(u){i.name+="/"}}if(u||p){i.store=true}i.date=C.dateify(i.date);return i};S.prototype.entry=function(i,u,p){if(typeof p!=="function"){p=this._emitErrorCallback.bind(this)}u=this._normalizeFileData(u);if(u.type!=="file"&&u.type!=="directory"&&u.type!=="symlink"){p(new Error(u.type+" entries not currently supported"));return}if(typeof u.name!=="string"||u.name.length===0){p(new Error("entry name must be a non-empty string value"));return}if(u.type==="symlink"&&typeof u.linkname!=="string"){p(new Error("entry linkname must be a non-empty string value when type equals symlink"));return}var g=new w(u.name);g.setTime(u.date,this.options.forceLocalTime);if(u.namePrependSlash){g.setName(u.name,true)}if(u.store){g.setMethod(0)}if(u.comment.length>0){g.setComment(u.comment)}if(u.type==="symlink"&&typeof u.mode!=="number"){u.mode=40960}if(typeof u.mode==="number"){if(u.type==="symlink"){u.mode|=40960}g.setUnixMode(u.mode)}if(u.type==="symlink"&&typeof u.linkname==="string"){i=Buffer.from(u.linkname)}return A.prototype.entry.call(this,g,i,p)};S.prototype.finalize=function(){this.finish()}},42613:u=>{u.exports=i(import.meta.url)("assert")},20181:u=>{u.exports=i(import.meta.url)("buffer")},49140:u=>{u.exports=i(import.meta.url)("constants")},76982:u=>{u.exports=i(import.meta.url)("crypto")},72250:u=>{u.exports=i(import.meta.url)("dns")},24434:u=>{u.exports=i(import.meta.url)("events")},79896:u=>{u.exports=i(import.meta.url)("fs")},91943:u=>{u.exports=i(import.meta.url)("fs/promises")},58611:u=>{u.exports=i(import.meta.url)("http")},85675:u=>{u.exports=i(import.meta.url)("http2")},65692:u=>{u.exports=i(import.meta.url)("https")},69278:u=>{u.exports=i(import.meta.url)("net")},34589:u=>{u.exports=i(import.meta.url)("node:assert")},16698:u=>{u.exports=i(import.meta.url)("node:async_hooks")},4573:u=>{u.exports=i(import.meta.url)("node:buffer")},37540:u=>{u.exports=i(import.meta.url)("node:console")},77598:u=>{u.exports=i(import.meta.url)("node:crypto")},53053:u=>{u.exports=i(import.meta.url)("node:diagnostics_channel")},40610:u=>{u.exports=i(import.meta.url)("node:dns")},78474:u=>{u.exports=i(import.meta.url)("node:events")},73024:u=>{u.exports=i(import.meta.url)("node:fs")},51455:u=>{u.exports=i(import.meta.url)("node:fs/promises")},37067:u=>{u.exports=i(import.meta.url)("node:http")},32467:u=>{u.exports=i(import.meta.url)("node:http2")},77030:u=>{u.exports=i(import.meta.url)("node:net")},76760:u=>{u.exports=i(import.meta.url)("node:path")},643:u=>{u.exports=i(import.meta.url)("node:perf_hooks")},41792:u=>{u.exports=i(import.meta.url)("node:querystring")},57075:u=>{u.exports=i(import.meta.url)("node:stream")},46193:u=>{u.exports=i(import.meta.url)("node:string_decoder")},41692:u=>{u.exports=i(import.meta.url)("node:tls")},73136:u=>{u.exports=i(import.meta.url)("node:url")},57975:u=>{u.exports=i(import.meta.url)("node:util")},73429:u=>{u.exports=i(import.meta.url)("node:util/types")},75919:u=>{u.exports=i(import.meta.url)("node:worker_threads")},38522:u=>{u.exports=i(import.meta.url)("node:zlib")},70857:u=>{u.exports=i(import.meta.url)("os")},16928:u=>{u.exports=i(import.meta.url)("path")},2203:u=>{u.exports=i(import.meta.url)("stream")},13193:u=>{u.exports=i(import.meta.url)("string_decoder")},16460:u=>{u.exports=i(import.meta.url)("timers/promises")},64756:u=>{u.exports=i(import.meta.url)("tls")},52018:u=>{u.exports=i(import.meta.url)("tty")},87016:u=>{u.exports=i(import.meta.url)("url")},39023:u=>{u.exports=i(import.meta.url)("util")},43106:u=>{u.exports=i(import.meta.url)("zlib")},33345:(i,u)=>{var p;p={value:true};u.w=void 0;u.w={operationRequestMap:new WeakMap}},38914:(i,u)=>{var p;p={value:true};u.w=void 0;u.w={instrumenterImplementation:undefined}},49498:(i,u,p)=>{const g=p(5546);const isRetryError=i=>i?.code==="EPROMISERETRY"&&Object.hasOwn(i,"retried");async function promiseRetry(i,u={}){const p=g.operation(u);return new Promise((function(u,g){p.attempt((async A=>{try{const g=await i((i=>{throw Object.assign(new Error("Retrying"),{code:"EPROMISERETRY",retried:i})}),A,p);return u(g)}catch(i){if(isRetryError(i)){if(p.retry(i.retried||new Error)){return}return g(i.retried)Line truncated
|
||||
/* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist */if("response"in p){this.response=p.response}const g=Object.assign({},p.request);if(p.request.headers.authorization){g.headers=Object.assign({},p.request.headers,{authorization:p.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})}g.url=g.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]");this.request=g}}var Wg="10.0.8";var Jg={headers:{"user-agent":`octokit-request.js/${Wg} ${getUserAgent()}`}};function dist_bundle_isPlainObject(i){if(typeof i!=="object"||i===null)return false;if(Object.prototype.toString.call(i)!=="[object Object]")return false;const u=Object.getPrototypeOf(i);if(u===null)return true;const p=Object.prototype.hasOwnProperty.call(u,"constructor")&&u.constructor;return typeof p==="function"&&p instanceof p&&Function.prototype.call(p)===Function.prototype.call(i)}var noop=()=>"";async function fetchWrapper(i){const u=i.request?.fetch||globalThis.fetch;if(!u){throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing")}const p=i.request?.log||console;const g=i.request?.parseSuccessResponseBody!==false;const A=dist_bundle_isPlainObject(i.body)||Array.isArray(i.body)?JSONStringify(i.body):i.body;const w=Object.fromEntries(Object.entries(i.headers).map((([i,u])=>[i,String(u)])));let C;try{C=await u(i.url,{method:i.method,body:A,redirect:i.request?.redirect,headers:w,signal:i.request?.signal,...i.body&&{duplex:"half"}})}catch(u){let p="Unknown Error";if(u instanceof Error){if(u.name==="AbortError"){u.status=500;throw u}p=u.message;if(u.name==="TypeError"&&"cause"in u){if(u.cause instanceof Error){p=u.cause.message}else if(typeof u.cause==="string"){p=u.cause}}}const g=new RequestError(p,500,{request:i});g.cause=u;throw g}const S=C.status;const v=C.url;const B={};for(const[i,u]of C.headers){B[i]=u}const _={url:v,status:S,headers:B,data:""};if("deprecation"in B){const u=B.link&&B.link.match(/<([^<>]+)>; rel="deprecation"/);const g=u&&u.pop();p.warn(`[@octokit/request] "${i.method} ${i.url}" is deprecated. It is scheduled to be removed on ${B.sunset}${g?`. See ${g}`:""}`)}if(S===204||S===205){return _}if(i.method==="HEAD"){if(S<400){return _}throw new RequestError(C.statusText,S,{response:_,request:i})}if(S===304){_.data=await getResponseData(C);throw new RequestError("Not modified",S,{response:_,request:i})}if(S>=400){_.data=await getResponseData(C);throw new RequestError(toErrorMessage(_.data),S,{response:_,request:i})}_.data=g?await getResponseData(C):C.body;return _}async function getResponseData(i){const u=i.headers.get("content-type");if(!u){return i.text().catch(noop)}const p=(0,Pg.xL)(u);if(isJSONResponse(p)){let u="";try{u=await i.text();return JSONParse(u)}catch(i){return u}}else if(p.type.startsWith("text/")||p.parameters.charset?.toLowerCase()==="utf-8"){return i.text().catch(noop)}else{return i.arrayBuffer().catch((
|
||||
/* v8 ignore next -- @preserve */
|
||||
()=>new ArrayBuffer(0)))}}function isJSONResponse(i){return i.type==="application/json"||i.type==="application/scim+json"}function toErrorMessage(i){if(typeof i==="string"){return i}if(i instanceof ArrayBuffer){return"Unknown error"}if("message"in i){const u="documentation_url"in i?` - ${i.documentation_url}`:"";return Array.isArray(i.errors)?`${i.message}: ${i.errors.map((i=>JSON.stringify(i))).join(", ")}${u}`:`${i.message}${u}`}return`Unknown error: ${JSON.stringify(i)}`}function dist_bundle_withDefaults(i,u){const p=i.defaults(u);const newApi=function(i,u){const g=p.merge(i,u);if(!g.request||!g.request.hook){return fetchWrapper(p.parse(g))}const request2=(i,u)=>fetchWrapper(p.parse(p.merge(i,u)));Object.assign(request2,{endpoint:p,defaults:dist_bundle_withDefaults.bind(null,p)});return g.request.hook(request2,g)};return Object.assign(newApi,{endpoint:p,defaults:dist_bundle_withDefaults.bind(null,p)})}var Yg=dist_bundle_withDefaults(Qg,Jg);
|
||||
/* v8 ignore next -- @preserve */
|
||||
/* v8 ignore else -- @preserve */var Kg="0.0.0-development";function _buildMessageForResponseErrors(i){return`Request failed due to following response errors:\n`+i.errors.map((i=>` - ${i.message}`)).join("\n")}var Zg=class extends Error{constructor(i,u,p){super(_buildMessageForResponseErrors(p));this.request=i;this.headers=u;this.response=p;this.errors=p.errors;this.data=p.data;if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}}name="GraphqlResponseError";errors;data};var Xg=["method","baseUrl","url","headers","request","query","mediaType","operationName"];var em=["query","method","url"];var tm=/\/api\/v3\/?$/;function graphql(i,u,p){if(p){if(typeof u==="string"&&"query"in p){return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`))}for(const i in p){if(!em.includes(i))continue;return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}}const g=typeof u==="string"?Object.assign({query:u},p):u;const A=Object.keys(g).reduce(((i,u)=>{if(Xg.includes(u)){i[u]=g[u];return i}if(!i.variables){i.variables={}}i.variables[u]=g[u];return i}),{});const w=g.baseUrl||i.endpoint.DEFAULTS.baseUrl;if(tm.test(w)){A.url=w.replace(tm,"/api/graphql")}return i(A).then((i=>{if(i.data.errors){const u={};for(const p of Object.keys(i.headers)){u[p]=i.headers[p]}throw new Zg(A,u,i.data)}return i.data.data}))}function graphql_dist_bundle_withDefaults(i,u){const p=i.defaults(u);const newApi=(i,u)=>graphql(p,i,u);return Object.assign(newApi,{defaults:graphql_dist_bundle_withDefaults.bind(null,p),endpoint:p.endpoint})}var nm=graphql_dist_bundle_withDefaults(Yg,{headers:{"user-agent":`octokit-graphql.js/${Kg} ${getUserAgent()}`},method:"POST",url:"/graphql"});function withCustomRequest(i){return graphql_dist_bundle_withDefaults(i,{method:"POST",url:"/graphql"})}var im="(?:[a-zA-Z0-9_-]+)";var sm="\\.";var om=new RegExp(`^${im}${sm}${im}${sm}${im}$`);var am=om.test.bind(om);async function auth(i){const u=am(i);const p=i.startsWith("v1.")||i.startsWith("ghs_");const g=i.startsWith("ghu_");const A=u?"app":p?"installation":g?"user-to-server":"oauth";return{type:"token",token:i,tokenType:A}}function withAuthorizationPrefix(i){if(i.split(/\./).length===3){return`bearer ${i}`}return`token ${i}`}async function hook(i,u,p,g){const A=u.endpoint.merge(p,g);A.headers.authorization=withAuthorizationPrefix(i);return u(A)}var cm=function createTokenAuth2(i){if(!i){throw new Error("[@octokit/auth-token] No token passed to createTokenAuth")}if(typeof i!=="string"){throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string")}i=i.replace(/^(token|bearer) +/i,"");return Object.assign(auth.bind(null,i),{hook:hook.bind(null,i)})};const lm="7.0.6";const dist_src_noop=()=>{};const um=console.warn.bind(console);const dm=console.error.bind(console);function createLogger(i={}){if(typeof i.debug!=="function"){i.debug=dist_src_noop}if(typeof i.info!=="function"){i.info=dist_src_noop}if(typeof i.warn!=="function"){i.warn=um}if(typeof i.error!=="function"){i.error=dm}return i}const hm=`octokit-core.js/${lm} ${getUserAgent()}`;class Octokit{static VERSION=lm;static defaults(i){const u=class extends(this){constructor(...u){const p=u[0]||{};if(typeof i==="function"){super(i(p));return}super(Object.assign({},i,p,p.userAgent&&i.userAgent?{userAgent:`${p.userAgent} ${i.userAgent}`}:null))}};return u}static plugins=[];static plugin(...i){const u=this.plugins;const p=class extends(this){static plugins=u.concat(i.filter((i=>!u.includes(i))))};return p}constructor(i={}){const u=new Ng.Collection;const p={baseUrl:Yg.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},i.request,{hook:u.bind(null,"request")}),mediaType:{previews:[],format:""}};p.headers["user-agent"]=i.userAgent?`${i.userAgent} ${hm}`:hm;if(i.baseUrl){p.baseUrl=i.baseUrl}if(i.previews){p.mediaType.previews=i.previews}if(i.timeZone){p.headers["time-zone"]=i.timeZone}this.request=Yg.defaults(p);this.graphql=withCustomRequest(this.request).defaults(p);this.log=createLogger(i.log);this.hook=u;if(!i.authStrategy){if(!i.auth){this.auth=async()=>({type:"unauthenticated"})}else{const p=cm(i.auth);u.wrap("request",p.hook);this.auth=p}}else{const{authStrategy:p,...g}=i;const A=p(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:g},i.auth));u.wrap("request",A.hook);this.auth=A}const g=this.constructor;for(let u=0;u<g.plugins.length;++u){Object.assign(this,g.plugins[u](this,i))}}request;graphql;log;hook;auth}const fm="17.0.0";const gm={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repositoLine truncated
|
||||
/*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */
|
||||
function isNothing(i){return typeof i==="undefined"||i===null}function js_yaml_isObject(i){return typeof i==="object"&&i!==null}function toArray(i){if(Array.isArray(i))return i;else if(isNothing(i))return[];return[i]}function js_yaml_extend(i,u){var p,g,A,w;if(u){w=Object.keys(u);for(p=0,g=w.length;p<g;p+=1){A=w[p];i[A]=u[A]}}return i}function repeat(i,u){var p="",g;for(g=0;g<u;g+=1){p+=i}return p}function isNegativeZero(i){return i===0&&Number.NEGATIVE_INFINITY===1/i}var MA=isNothing;var FA=js_yaml_isObject;var UA=toArray;var HA=repeat;var GA=isNegativeZero;var jA=js_yaml_extend;var VA={isNothing:MA,isObject:FA,toArray:UA,repeat:HA,isNegativeZero:GA,extend:jA};function formatError(i,u){var p="",g=i.reason||"(unknown reason)";if(!i.mark)return g;if(i.mark.name){p+='in "'+i.mark.name+'" '}p+="("+(i.mark.line+1)+":"+(i.mark.column+1)+")";if(!u&&i.mark.snippet){p+="\n\n"+i.mark.snippet}return g+" "+p}function YAMLException$1(i,u){Error.call(this);this.name="YAMLException";this.reason=i;this.mark=u;this.message=formatError(this,false);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}else{this.stack=(new Error).stack||""}}YAMLException$1.prototype=Object.create(Error.prototype);YAMLException$1.prototype.constructor=YAMLException$1;YAMLException$1.prototype.toString=function toString(i){return this.name+": "+formatError(this,i)};var qA=YAMLException$1;function getLine(i,u,p,g,A){var w="";var C="";var S=Math.floor(A/2)-1;if(g-u>S){w=" ... ";u=g-S+w.length}if(p-g>S){C=" ...";p=g+S-C.length}return{str:w+i.slice(u,p).replace(/\t/g,"→")+C,pos:g-u+w.length}}function js_yaml_padStart(i,u){return VA.repeat(" ",u-i.length)+i}function makeSnippet(i,u){u=Object.create(u||null);if(!i.buffer)return null;if(!u.maxLength)u.maxLength=79;if(typeof u.indent!=="number")u.indent=1;if(typeof u.linesBefore!=="number")u.linesBefore=3;if(typeof u.linesAfter!=="number")u.linesAfter=2;var p=/\r?\n|\r|\0/g;var g=[0];var A=[];var w;var C=-1;while(w=p.exec(i.buffer)){A.push(w.index);g.push(w.index+w[0].length);if(i.position<=w.index&&C<0){C=g.length-2}}if(C<0)C=g.length-1;var S="",v,B;var _=Math.min(i.line+u.linesAfter,A.length).toString().length;var T=u.maxLength-(u.indent+_+3);for(v=1;v<=u.linesBefore;v++){if(C-v<0)break;B=getLine(i.buffer,g[C-v],A[C-v],i.position-(g[C]-g[C-v]),T);S=VA.repeat(" ",u.indent)+js_yaml_padStart((i.line-v+1).toString(),_)+" | "+B.str+"\n"+S}B=getLine(i.buffer,g[C],A[C],i.position,T);S+=VA.repeat(" ",u.indent)+js_yaml_padStart((i.line+1).toString(),_)+" | "+B.str+"\n";S+=VA.repeat("-",u.indent+_+3+B.pos)+"^"+"\n";for(v=1;v<=u.linesAfter;v++){if(C+v>=A.length)break;B=getLine(i.buffer,g[C+v],A[C+v],i.position-(g[C]-g[C+v]),T);S+=VA.repeat(" ",u.indent)+js_yaml_padStart((i.line+v+1).toString(),_)+" | "+B.str+"\n"}return S.replace(/\n$/,"")}var zA=makeSnippet;var $A=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"];var WA=["scalar","sequence","mapping"];function compileStyleAliases(i){var u={};if(i!==null){Object.keys(i).forEach((function(p){i[p].forEach((function(i){u[String(i)]=p}))}))}return u}function Type$1(i,u){u=u||{};Object.keys(u).forEach((function(u){if($A.indexOf(u)===-1){throw new qA('Unknown option "'+u+'" is met in definition of "'+i+'" YAML type.')}}));this.options=u;this.tag=i;this.kind=u["kind"]||null;this.resolve=u["resolve"]||function(){return true};this.construct=u["construct"]||function(i){return i};this.instanceOf=u["instanceOf"]||null;this.predicate=u["predicate"]||null;this.represent=u["represent"]||null;this.representName=u["representName"]||null;this.defaultStyle=u["defaultStyle"]||null;this.multi=u["multi"]||false;this.styleAliases=compileStyleAliases(u["styleAliases"]||null);if(WA.indexOf(this.kind)===-1){throw new qA('Unknown kind "'+this.kind+'" is specified for "'+i+'" YAML type.')}}var JA=Type$1;function compileList(i,u){var p=[];i[u].forEach((function(i){var u=p.length;p.forEach((function(p,g){if(p.tag===i.tag&&p.kind===i.kind&&p.multi===i.multi){u=g}}));p[u]=i}));return p}function compileMap(){var i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},u,p;function collectType(u){if(u.multi){i.multi[u.kind].push(u);i.multi["fallback"].push(u)}else{i[u.kind][u.tag]=i["fallback"][u.tag]=u}}for(u=0,p=arguments.length;u<p;u+=1){arguments[u].forEach(collectType)}return i}function Schema$1(i){return this.extend(i)}Schema$1.prototype.extend=function extend(i){var u=[];var p=[];if(i instanceof JA){p.push(i)}else if(Array.isArray(i)){p=p.concat(i)}else if(i&&(Array.isArray(i.implicit)||Array.isArray(i.explicit))){if(i.implicit)u=u.concat(i.implicit);if(i.explicit)p=p.concat(i.explicit)}else{throw new qA("Schema.extend argument should be a Type, [ Type ], "+"or a schema definition ({ implicit: [...], explicit: [...] })")}u.forEach((function(i){if(!(i instanceof JA)){throw new qA("Specified list of YAML types (or a single Type object) contains a non-Line truncated
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"version":3,"file":"index.js","names":["__createBinding","this","Object","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__setModuleDefault","v","value","__importStar","mod","result","prototype","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","e","rejected","done","then","apply","exports","saveCache","restoreCache","isFeatureAvailable","ReserveCacheError","ValidationError","core","__webpack_require__","path","utils","cacheHttpClient","tar_1","Error","constructor","message","super","name","setPrototypeOf","checkPaths","paths","length","checkKey","key","regex","test","process","env","primaryKey","restoreKeys","options","enableCrossOsArchive","keys","debug","JSON","stringify","compressionMethod","getCompressionMethod","archivePath","cacheEntry","getCacheEntry","archiveLocation","lookupOnly","info","cacheKey","join","createTempDirectory","getCacheFileName","downloadCache","isDebug","listTar","archiveFileSize","getArchiveFileSizeInBytes","Math","round","extractTar","error","typedError","warning","unlinkFile","_a","_b","_c","_d","_e","cacheId","cachePaths","resolvePaths","archiveFolder","createTar","fileSizeLimit","isGhes","reserveCacheResponse","reserveCache","cacheSize","statusCode","getCacheVersion","http_client_1","auth_1","crypto","fs","url_1","downloadUtils_1","options_1","requestUtils_1","versionSalt","getCacheApiUrl","resource","baseUrl","url","createAcceptHeader","type","apiVersion","getRequestOptions","requestOptions","headers","Accept","createHttpClient","token","bearerCredentialHandler","BearerCredentialHandler","HttpClient","components","push","platform","createHash","update","digest","httpClient","version","encodeURIComponent","response","retryTypedResponse","getJson","printCachesListForDiagnostics","isSuccessStatusCode","cacheResult","cacheDownloadUrl","setSecret","cacheListResult","totalCount","artifactCaches","cacheVersion","scope","creationTime","archiveUrl","URL","downloadOptions","getDownloadOptions","hostname","endsWith","useAzureSdk","downloadCacheStorageSDK","concurrentBlobDownloads","downloadCacheHttpClientConcurrent","downloadCacheHttpClient","reserveCacheRequest","postJson","getContentRange","start","end","uploadChunk","resourceUrl","openStream","additionalHeaders","uploadChunkResponse","retryHttpClientResponse","sendStream","uploadFile","fileSize","toString","fd","openSync","uploadOptions","getUploadOptions","concurrency","assertDefined","uploadConcurrency","maxChunkSize","uploadChunkSize","parallelUploads","Array","offset","all","map","chunkSize","min","createReadStream","autoClose","on","closeSync","commitCache","filesize","commitCacheRequest","size","commitCacheResponse","__asyncValues","Symbol","asyncIterator","TypeError","i","__values","iterator","verb","n","settle","d","getGnuTarPathOnWindows","exec","glob","io","semver","util","uuid_1","constants_1","IS_WINDOWS","tempDirectory","baseLocation","dest","v4","mkdirP","filePath","statSync","patterns","e_1","workspace","cwd","globber","implicitDescendants","_f","globGenerator","_g","file","relativeFile","relative","replace","RegExp","sep","e_1_1","return","promisify","unlink","getVersion","app","additionalArgs","versionOutput","ignoreReturnCode","silent","listeners","stdout","data","stderr","err","trim","clean","CompressionMethod","Gzip","ZstdWithoutLong","CacheFilename","Zstd","existsSync","GnuTarPathOnWindows","toLowerCase","includes","which","ghUrl","toUpperCase","ManifestFilename","TarFilename","SystemTarPathOnWindows","SocketTimeout","DefaultRetryDelay","DefaultRetryAttempts","ArchiveToolType","DownloadProgress","storage_blob_1","buffer","stream","abort_controller_1","pipeResponseToStream","output","pipeline","contentLength","segmentIndex","segmentSize","segmentOffset","receivedBytes","displayedComplete","startTime","Date","now","nextSegment","setReceivedBytes","getTransferredBytes","isDone","display","transferredBytes","percentage","toFixed","elapsedTime","downloadSpeed","onProgress","progress","loadedBytes","startDisplayTimer","delayInMs","displayCallback","timeoutHandle","setTimeout","stopDisplayTimer","clearTimeout","writeStream","createWriteStream","downloadResponse","socket","destroy","contentLengthHeader","expectedLength","parseInt","actualLength","archiveDescriptor","promises","open","socketTimeout","timeoutInMs","keepAlive","res","request","lengthHeader","Number","isNaN","downloads","blockSize","count","promiseGetter","downloadSegmentRetry","reverse","actives","bytesDownloaded","progressFn","activeDownloads","nextDownload","waitAndWrite","segment","race","values","write","pop","downloadConcurrency","dispose","close","retries","failures","timeout","promiseWithTimeout","downloadSegment","partRes","Range","readBodyBuffer","client","BlockBlobClient","retryOptions","tryTimeoutInMs","properties","getProperties","maxSegmentSize","constants"Line truncated
|
||||
{"version":3,"file":"index.js","names":["__awaiter","this","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","Object","defineProperty","exports","ClientStreamingCall","constructor","method","requestHeaders","request","headers","response","status","trailers","requests","onfulfilled","onrejected","promiseFinished","reason","all","Deferred","DeferredState","preventUnhandledRejectionWarning","_state","PENDING","_promise","_resolve","_reject","catch","_","state","promise","Error","toLowerCase","RESOLVED","REJECTED","resolvePending","val","rejectPending","DuplexStreamingCall","responses","__webpack_unused_export__","service_type_1","__webpack_require__","enumerable","get","ServiceType","reflection_info_1","readMethodOptions","readMethodOption","readServiceOption","rpc_error_1","RpcError","rpc_options_1","mergeRpcOptions","rpc_output_stream_1","RpcOutputStreamController","test_transport_1","TestTransport","deferred_1","duplex_streaming_call_1","client_streaming_call_1","server_streaming_call_1","ServerStreamingCall","unary_call_1","UnaryCall","rpc_interceptor_1","stackIntercept","stackDuplexStreamingInterceptors","stackClientStreamingInterceptors","stackServerStreamingInterceptors","stackUnaryInterceptors","server_call_context_1","ServerCallContextController","normalizeMethodInfo","runtime_1","service","_a","_b","_c","m","localName","lowerCamelCase","name","serverStreaming","clientStreaming","options","idempotency","undefined","methodName","extensionName","extensionType","methods","find","i","fromJson","optionVal","message","code","meta","super","setPrototypeOf","prototype","toString","l","push","serviceName","entries","length","k","v","join","kind","transport","input","_d","tail","mtd","inp","opt","unary","curr","interceptors","filter","interceptUnary","reverse","interceptServerStreaming","interceptClientStreaming","duplex","interceptDuplex","assertNever","defaults","o","copy","key","keys","jsonOptions","mergeJsonOptions","binaryOptions","mergeBinaryOptions","concat","a","into","c","Date","getTime","Array","isArray","_lis","nxt","msg","err","cmp","_closed","_itState","q","onNext","callback","addLis","onMessage","onError","onComplete","list","indexOf","splice","clearLis","values","closed","notifyNext","error","complete","assert","notifyMessage","notifyError","notifyComplete","pushIt","forEach","Symbol","asyncIterator","p","first","shift","deadline","sendResponseHeadersFn","defaultStatus","detail","_cancelled","_listeners","_sendRH","notifyCancelled","sendResponseHeaders","data","cancelled","onCancel","typeName","map","suppressUncaughtRejections","headerDelay","responseDelay","betweenResponseDelay","afterResponseDelay","sentMessages","lastInput","TestInputStream","sent","single","sendComplete","completed","promiseHeaders","defaultHeaders","promiseSingleResponse","r","O","create","is","streamResponses","stream","abort","messages","delay","promiseStatus","promiseTrailers","defaultTrailers","maybeSuppressUncaught","mergeOptions","headersPromise","responsePromise","statusPromise","trailersPromise","outputStream","responseStreamClosedPromise","responseHeader","responseTrailer","ms","aborted","id","setTimeout","addEventListener","ev","clearTimeout","_completed","_sent","send","inputMessage","delayMs","inputComplete","assertFloat32","assertUInt32","assertInt32","condition","FLOAT32_MAX","FLOAT32_MIN","UINT32_MAX","INT32_MAX","INT32_MIN","arg","Number","isInteger","isFinite","base64encode","base64decode","encTable","split","decTable","charCodeAt","base64Str","es","bytes","Uint8Array","bytePos","groupPos","b","subarray","base64","WireType","UnknownFieldHandler","symbol","for","onRead","fieldNo","wireType","container","no","onWrite","writer","tag","raw","uf","last","slice","assign","BinaryReader","binaryReadOptions","binary_format_contract_1","pb_long_1","goog_varint_1","defaultsRead","readUnknownField","readerFactory","buf","textDecoder","varint64","varint64read","uint32","varint32read","len","pos","view","DataView","buffer","byteOffset","byteLength","TextDecoder","fatal","ignoreBOM","skip","start","Varint","Bit64","Bit32","LengthDelimited","StartGroup","t","EndGroup","assertBounds","RangeError","int32","sint32","zze","int64","PbLong","uint64","PbULong","sint64","lo","hi","s","bool","fixed32","getUint32","sfixed32","getInt32","fixed64","sfixed64","float","getFloat32","double","getFloat64","string","decode","BinaryWriter","binaryWriteOptions","assert_1","defaultsWrite","writeUnknownFields","writerFactory","textEncoder","stack","TextEncoder","chunks","finish","offset","set","fork","chunk","prev","pop","type","varint32write","encode","setFloat32","setFloat64","setUint32","setInt32","long","from","varint64write","sign","listEnumNumbers","listEnumNames","listEnumValues","isEnumObject","hasOwnProperty","num","parseInt","isNaN","nam","enumObject","number","index","arr","int64toString","int64fromString","lowBits","highBits","mLine truncated
|
||||
+2
-2047
File diff suppressed because it is too large.
Load diff
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
(()=>{var e={296:e=>{var r=Object.prototype.toString;var n=typeof Buffer!=="undefined"&&typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){throw new RangeError("'offset' is out of bounds")}if(t===undefined){t=o}else{t>>>=0;if(t>o){throw new RangeError("'length' is out of bounds")}}return n?Buffer.from(e.slice(r,r+t)):new Buffer(new Uint8Array(e.slice(r,r+t)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return n?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,t)}if(typeof e==="string"){return fromString(e,r)}return n?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},599:(e,r,n)=>{e=n.nmd(e);var t=n(927).SourceMapConsumer;var o=n(928);var i;try{i=n(896);if(!i.existsSync||!i.readFileSync){i=null}}catch(e){}var a=n(296);function dynamicRequire(e,r){return e.require(r)}var u=false;var s=false;var l=false;var c="auto";var p={};var f={};var g=/^data:application\/json[^,]+base64,/;var d=[];var h=[];function isInBrowser(){if(c==="browser")return true;if(c==="node")return false;return typeof window!=="undefined"&&typeof XMLHttpRequest==="function"&&!(window.require&&window.module&&window.process&&window.process.type==="renderer")}function hasGlobalProcessEventEmitter(){return typeof process==="object"&&process!==null&&typeof process.on==="function"}function globalProcessVersion(){if(typeof process==="object"&&process!==null){return process.version}else{return""}}function globalProcessStderr(){if(typeof process==="object"&&process!==null){return process.stderr}}function globalProcessExit(e){if(typeof process==="object"&&process!==null&&typeof process.exit==="function"){return process.exit(e)}}function handlerExec(e){return function(r){for(var n=0;n<e.length;n++){var t=e[n](r);if(t){return t}}return null}}var m=handlerExec(d);d.push((function(e){e=e.trim();if(/^file:/.test(e)){e=e.replace(/file:\/\/\/(\w:)?/,(function(e,r){return r?"":"/"}))}if(e in p){return p[e]}var r="";try{if(!i){var n=new XMLHttpRequest;n.open("GET",e,false);n.send(null);if(n.readyState===4&&n.status===200){r=n.responseText}}else if(i.existsSync(e)){r=i.readFileSync(e,"utf8")}}catch(e){}return p[e]=r}));function supportRelativeURL(e,r){if(!e)return r;var n=o.dirname(e);var t=/^\w+:\/\/[^\/]*/.exec(n);var i=t?t[0]:"";var a=n.slice(i.length);if(i&&/^\/\w\:/.test(a)){i+="/";return i+o.resolve(n.slice(i.length),r).replace(/\\/g,"/")}return i+o.resolve(n.slice(i.length),r)}function retrieveSourceMapURL(e){var r;if(isInBrowser()){try{var n=new XMLHttpRequest;n.open("GET",e,false);n.send(null);r=n.readyState===4?n.responseText:null;var t=n.getResponseHeader("SourceMap")||n.getResponseHeader("X-SourceMap");if(t){return t}}catch(e){}}r=m(e);var o=/(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/gm;var i,a;while(a=o.exec(r))i=a;if(!i)return null;return i[1]}var v=handlerExec(h);h.push((function(e){var r=retrieveSourceMapURL(e);if(!r)return null;var n;if(g.test(r)){var t=r.slice(r.indexOf(",")+1);n=a(t,"base64").toString();r=e}else{r=supportRelativeURL(e,r);n=m(r)}if(!n){return null}return{url:r,map:n}}));function mapSourcePosition(e){var r=f[e.source];if(!r){var n=v(e.source);if(n){r=f[e.source]={url:n.url,map:new t(n.map)};if(r.map.sourcesContent){r.map.sources.forEach((function(e,n){var t=r.map.sourcesContent[n];if(t){var o=supportRelativeURL(r.url,e);p[o]=t}}))}}else{r=f[e.source]={url:null,map:null}}}if(r&&r.map&&typeof r.map.originalPositionFor==="function"){var o=r.map.originalPositionFor(e);if(o.source!==null){o.source=supportRelativeURL(r.url,o.source);return o}}return e}function mapEvalOrigin(e){var r=/^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(e);if(r){var n=mapSourcePosition({source:r[2],line:+r[3],column:r[4]-1});return"eval at "+r[1]+" ("+n.source+":"+n.line+":"+(n.column+1)+")"}r=/^eval at ([^(]+) \((.+)\)$/.exec(e);if(r){return"eval at "+r[1]+" ("+mapEvalOrigin(r[2])+")"}return e}function CallSiteToString(){var e;var r="";if(this.isNative()){r="native"}else{e=this.getScriptNameOrSourceURL();if(!e&&this.isEval()){r=this.getEvalOrigin();r+=", "}if(e){r+=e}else{r+="<anonymous>"}var n=this.getLineNumber();if(n!=null){r+=":"+n;var t=this.getColumnNumber();if(t){r+=":"+t}}}var o="";var i=this.getFunctionName();var a=true;var u=this.isConstructor();var s=!(this.isToplevel()||u);if(s){var l=this.getTypeName();if(l==="[object Object]"){l="null"}var c=this.getMethodName();if(i){if(l&&i.indexOf(l)!=0){o+=l+"."}o+=i;if(c&&i.indexOf("."+c)!=i.length-c.length-1){o+=" [as "+c+"]"}}else{o+=l+"."+(c||"<anonymous>")}}else if(u){o+="new "+(i||"<aLine truncated
|
||||
-1
@@ -1 +0,0 @@
|
||||
(()=>{var e={650:e=>{var r=Object.prototype.toString;var n=typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){throw new RangeError("'offset' is out of bounds")}if(t===undefined){t=o}else{t>>>=0;if(t>o){throw new RangeError("'length' is out of bounds")}}return n?Buffer.from(e.slice(r,r+t)):new Buffer(new Uint8Array(e.slice(r,r+t)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return n?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,t)}if(typeof e==="string"){return fromString(e,r)}return n?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},274:(e,r,n)=>{var t=n(339);var o=Object.prototype.hasOwnProperty;var i=typeof Map!=="undefined";function ArraySet(){this._array=[];this._set=i?new Map:Object.create(null)}ArraySet.fromArray=function ArraySet_fromArray(e,r){var n=new ArraySet;for(var t=0,o=e.length;t<o;t++){n.add(e[t],r)}return n};ArraySet.prototype.size=function ArraySet_size(){return i?this._set.size:Object.getOwnPropertyNames(this._set).length};ArraySet.prototype.add=function ArraySet_add(e,r){var n=i?e:t.toSetString(e);var a=i?this.has(e):o.call(this._set,n);var u=this._array.length;if(!a||r){this._array.push(e)}if(!a){if(i){this._set.set(e,u)}else{this._set[n]=u}}};ArraySet.prototype.has=function ArraySet_has(e){if(i){return this._set.has(e)}else{var r=t.toSetString(e);return o.call(this._set,r)}};ArraySet.prototype.indexOf=function ArraySet_indexOf(e){if(i){var r=this._set.get(e);if(r>=0){return r}}else{var n=t.toSetString(e);if(o.call(this._set,n)){return this._set[n]}}throw new Error('"'+e+'" is not in the set.')};ArraySet.prototype.at=function ArraySet_at(e){if(e>=0&&e<this._array.length){return this._array[e]}throw new Error("No element indexed by "+e)};ArraySet.prototype.toArray=function ArraySet_toArray(){return this._array.slice()};r.I=ArraySet},449:(e,r,n)=>{var t=n(190);var o=5;var i=1<<o;var a=i-1;var u=i;function toVLQSigned(e){return e<0?(-e<<1)+1:(e<<1)+0}function fromVLQSigned(e){var r=(e&1)===1;var n=e>>1;return r?-n:n}r.encode=function base64VLQ_encode(e){var r="";var n;var i=toVLQSigned(e);do{n=i&a;i>>>=o;if(i>0){n|=u}r+=t.encode(n)}while(i>0);return r};r.decode=function base64VLQ_decode(e,r,n){var i=e.length;var s=0;var l=0;var c,p;do{if(r>=i){throw new Error("Expected more digits in base 64 VLQ value.")}p=t.decode(e.charCodeAt(r++));if(p===-1){throw new Error("Invalid base64 digit: "+e.charAt(r-1))}c=!!(p&u);p&=a;s=s+(p<<l);l+=o}while(c);n.value=fromVLQSigned(s);n.rest=r}},190:(e,r)=>{var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");r.encode=function(e){if(0<=e&&e<n.length){return n[e]}throw new TypeError("Must be between 0 and 63: "+e)};r.decode=function(e){var r=65;var n=90;var t=97;var o=122;var i=48;var a=57;var u=43;var s=47;var l=26;var c=52;if(r<=e&&e<=n){return e-r}if(t<=e&&e<=o){return e-t+l}if(i<=e&&e<=a){return e-i+c}if(e==u){return 62}if(e==s){return 63}return-1}},345:(e,r)=>{r.GREATEST_LOWER_BOUND=1;r.LEAST_UPPER_BOUND=2;function recursiveSearch(e,n,t,o,i,a){var u=Math.floor((n-e)/2)+e;var s=i(t,o[u],true);if(s===0){return u}else if(s>0){if(n-u>1){return recursiveSearch(u,n,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return n<o.length?n:-1}else{return u}}else{if(u-e>1){return recursiveSearch(e,u,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return u}else{return e<0?-1:e}}}r.search=function search(e,n,t,o){if(n.length===0){return-1}var i=recursiveSearch(-1,n.length,e,n,t,o||r.GREATEST_LOWER_BOUND);if(i<0){return-1}while(i-1>=0){if(t(n[i],n[i-1],true)!==0){break}--i}return i}},680:(e,r,n)=>{var t=n(339);function generatedPositionAfter(e,r){var n=e.generatedLine;var o=r.generatedLine;var i=e.generatedColumn;var a=r.generatedColumn;return o>n||o==n&&a>=i||t.compareByGeneratedPositionsInflated(e,r)<=0}function MappingList(){this._array=[];this._sorted=true;this._last={generatedLine:-1,generatedColumn:0}}MappingList.prototype.unsortedForEach=function MappingList_forEach(e,r){this._array.forEach(e,r)};MappingList.prototype.add=function MappingList_add(e){if(generatedPositionAfter(this._last,e)){this._last=e;this._array.push(e)}else{this._sorted=false;this._array.push(e)}};MappingList.prototype.toArray=function MappingList_toArray(){if(!this._sorted){this._array.sort(t.compareByGeneratedPositionsInflated);this._sorted=true}return this._array};r.H=MappingList},758:(e,r)=>{function swap(e,r,n){var t=e[r];e[r]=e[n];e[n]=t}function randomIntInRange(e,r){return Math.round(e+Math.random()*(r-e))}function doQuickSort(e,r,n,t){if(n<t){var o=randomIntInRange(n,t);var i=n-1;swap(e,o,t);var a=e[t];for(var u=n;u<t;u++){if(r(e[u],Line truncated
|
||||
+15
-2
@@ -1,9 +1,15 @@
|
||||
target "_common" {
|
||||
args = {
|
||||
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
|
||||
}
|
||||
}
|
||||
|
||||
group "default" {
|
||||
targets = ["build"]
|
||||
}
|
||||
|
||||
group "pre-checkin" {
|
||||
targets = ["vendor-update", "format", "build"]
|
||||
targets = ["vendor", "format", "build"]
|
||||
}
|
||||
|
||||
group "validate" {
|
||||
@@ -11,42 +17,49 @@ group "validate" {
|
||||
}
|
||||
|
||||
target "build" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "build-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "format" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "format-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "lint" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "lint"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "vendor-update" {
|
||||
target "vendor" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "vendor-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "test" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "test-coverage"
|
||||
output = ["./coverage"]
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# Cache
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/cache/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Copy images between registries
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/copy-image-registries/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Update Docker Hub repo description
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/update-dockerhub-desc/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Export image to Docker
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/export-docker/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Isolated builders
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/configure-builder/#isolated-builders)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Local registry
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/local-registry/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Multi-platform image
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/multi-platform/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Named contexts
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/named-contexts/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Push to multi-registries
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/push-multi-registries/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Secrets
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/secrets/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Share built image between jobs
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/share-image-jobs/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Handle tags and labels
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/manage-tags-labels/)
|
||||
@@ -1,3 +0,0 @@
|
||||
# Test your image before pushing it
|
||||
|
||||
This page has moved to [Docker Docs website](https://docs.docker.com/build/ci/github-actions/test-before-push/)
|
||||
@@ -0,0 +1,52 @@
|
||||
import {defineConfig} from 'eslint/config';
|
||||
import js from '@eslint/js';
|
||||
import tseslint from '@typescript-eslint/eslint-plugin';
|
||||
import vitest from '@vitest/eslint-plugin';
|
||||
import globals from 'globals';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
||||
import eslintPluginPrettier from 'eslint-plugin-prettier';
|
||||
|
||||
export default defineConfig([
|
||||
{
|
||||
ignores: ['.yarn/**/*', 'coverage/**/*', 'dist/**/*']
|
||||
},
|
||||
js.configs.recommended,
|
||||
...tseslint.configs['flat/recommended'],
|
||||
eslintConfigPrettier,
|
||||
{
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ['__tests__/**'],
|
||||
...vitest.configs.recommended,
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
...vitest.environments.env.globals
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...vitest.configs.recommended.rules,
|
||||
'vitest/no-conditional-expect': 'error',
|
||||
'vitest/no-disabled-tests': 0
|
||||
}
|
||||
},
|
||||
{
|
||||
plugins: {
|
||||
prettier: eslintPluginPrettier
|
||||
},
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
'@typescript-eslint/no-require-imports': [
|
||||
'error',
|
||||
{
|
||||
allowAsImport: true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]);
|
||||
@@ -1,30 +0,0 @@
|
||||
import fs from 'fs';
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-build-push-action-'));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/build-push-action',
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
}) as {
|
||||
[key: string]: string;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
clearMocks: false,
|
||||
testEnvironment: 'node',
|
||||
moduleFileExtensions: ['js', 'ts'],
|
||||
testMatch: ['**/*.test.ts'],
|
||||
transform: {
|
||||
'^.+\\.ts$': 'ts-jest'
|
||||
},
|
||||
moduleNameMapper: {
|
||||
'^csv-parse/sync': '<rootDir>/node_modules/csv-parse/dist/cjs/sync.cjs'
|
||||
},
|
||||
collectCoverageFrom: ['src/**/{!(main.ts),}.ts'],
|
||||
coveragePathIgnorePatterns: ['lib/', 'node_modules/', '__mocks__/', '__tests__/'],
|
||||
verbose: true
|
||||
};
|
||||
+23
-26
@@ -1,17 +1,13 @@
|
||||
{
|
||||
"name": "docker-build-push",
|
||||
"description": "Build and push Docker images",
|
||||
"main": "lib/main.js",
|
||||
"type": "module",
|
||||
"main": "src/main.ts",
|
||||
"scripts": {
|
||||
"build": "ncc build src/main.ts --source-map --minify --license licenses.txt",
|
||||
"lint": "yarn run prettier && yarn run eslint",
|
||||
"format": "yarn run prettier:fix && yarn run eslint:fix",
|
||||
"eslint": "eslint --max-warnings=0 .",
|
||||
"eslint:fix": "eslint --fix .",
|
||||
"prettier": "prettier --check \"./**/*.ts\"",
|
||||
"prettier:fix": "prettier --write \"./**/*.ts\"",
|
||||
"test": "jest",
|
||||
"all": "yarn run build && yarn run format && yarn test"
|
||||
"build": "ncc build --source-map --minify --license licenses.txt",
|
||||
"lint": "eslint --max-warnings=0 .",
|
||||
"format": "eslint --fix .",
|
||||
"test": "vitest run"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -25,25 +21,26 @@
|
||||
],
|
||||
"author": "Docker Inc.",
|
||||
"license": "Apache-2.0",
|
||||
"packageManager": "yarn@4.9.2",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.1",
|
||||
"@docker/actions-toolkit": "0.14.0",
|
||||
"@actions/core": "^3.0.0",
|
||||
"@docker/actions-toolkit": "0.79.0",
|
||||
"handlebars": "^4.7.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/csv-parse": "^1.2.2",
|
||||
"@types/node": "^20.5.9",
|
||||
"@typescript-eslint/eslint-plugin": "^6.6.0",
|
||||
"@typescript-eslint/parser": "^6.6.0",
|
||||
"@vercel/ncc": "^0.38.0",
|
||||
"eslint": "^8.48.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-jest": "^27.2.3",
|
||||
"eslint-plugin-prettier": "^5.0.0",
|
||||
"jest": "^29.6.4",
|
||||
"prettier": "^3.0.3",
|
||||
"ts-jest": "^29.1.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^5.2.2"
|
||||
"@eslint/js": "^9.39.3",
|
||||
"@types/node": "^24.11.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
||||
"@typescript-eslint/parser": "^8.56.1",
|
||||
"@vercel/ncc": "^0.38.4",
|
||||
"@vitest/coverage-v8": "^4.0.18",
|
||||
"@vitest/eslint-plugin": "^1.6.9",
|
||||
"eslint": "^9.39.3",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"globals": "^17.3.0",
|
||||
"prettier": "^3.8.1",
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "^4.0.18"
|
||||
}
|
||||
}
|
||||
+133
-79
@@ -1,29 +1,31 @@
|
||||
import * as core from '@actions/core';
|
||||
import * as handlebars from 'handlebars';
|
||||
import {Context} from '@docker/actions-toolkit/lib/context';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github';
|
||||
import {Inputs as BuildxInputs} from '@docker/actions-toolkit/lib/buildx/inputs';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
|
||||
import {Util} from '@docker/actions-toolkit/lib/util';
|
||||
|
||||
import {Build} from '@docker/actions-toolkit/lib/buildx/build.js';
|
||||
import {Context} from '@docker/actions-toolkit/lib/context.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github/github.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
import {Util} from '@docker/actions-toolkit/lib/util.js';
|
||||
|
||||
export interface Inputs {
|
||||
addHosts: string[];
|
||||
'add-hosts': string[];
|
||||
allow: string[];
|
||||
annotations: string[];
|
||||
attests: string[];
|
||||
buildArgs: string[];
|
||||
buildContexts: string[];
|
||||
'build-args': string[];
|
||||
'build-contexts': string[];
|
||||
builder: string;
|
||||
cacheFrom: string[];
|
||||
cacheTo: string[];
|
||||
cgroupParent: string;
|
||||
'cache-from': string[];
|
||||
'cache-to': string[];
|
||||
call: string;
|
||||
'cgroup-parent': string;
|
||||
context: string;
|
||||
file: string;
|
||||
labels: string[];
|
||||
load: boolean;
|
||||
network: string;
|
||||
noCache: boolean;
|
||||
noCacheFilters: string[];
|
||||
'no-cache': boolean;
|
||||
'no-cache-filters': string[];
|
||||
outputs: string[];
|
||||
platforms: string[];
|
||||
provenance: string;
|
||||
@@ -31,50 +33,51 @@ export interface Inputs {
|
||||
push: boolean;
|
||||
sbom: string;
|
||||
secrets: string[];
|
||||
secretEnvs: string[];
|
||||
secretFiles: string[];
|
||||
shmSize: string;
|
||||
'secret-envs': string[];
|
||||
'secret-files': string[];
|
||||
'shm-size': string;
|
||||
ssh: string[];
|
||||
tags: string[];
|
||||
target: string;
|
||||
ulimit: string[];
|
||||
githubToken: string;
|
||||
'github-token': string;
|
||||
}
|
||||
|
||||
export async function getInputs(): Promise<Inputs> {
|
||||
return {
|
||||
addHosts: Util.getInputList('add-hosts'),
|
||||
'add-hosts': Util.getInputList('add-hosts'),
|
||||
allow: Util.getInputList('allow'),
|
||||
annotations: Util.getInputList('annotations', {ignoreComma: true}),
|
||||
attests: Util.getInputList('attests', {ignoreComma: true}),
|
||||
buildArgs: Util.getInputList('build-args', {ignoreComma: true}),
|
||||
buildContexts: Util.getInputList('build-contexts', {ignoreComma: true}),
|
||||
'build-args': Util.getInputList('build-args', {ignoreComma: true}),
|
||||
'build-contexts': Util.getInputList('build-contexts', {ignoreComma: true}),
|
||||
builder: core.getInput('builder'),
|
||||
cacheFrom: Util.getInputList('cache-from', {ignoreComma: true}),
|
||||
cacheTo: Util.getInputList('cache-to', {ignoreComma: true}),
|
||||
cgroupParent: core.getInput('cgroup-parent'),
|
||||
'cache-from': Util.getInputList('cache-from', {ignoreComma: true}),
|
||||
'cache-to': Util.getInputList('cache-to', {ignoreComma: true}),
|
||||
call: core.getInput('call'),
|
||||
'cgroup-parent': core.getInput('cgroup-parent'),
|
||||
context: core.getInput('context') || Context.gitContext(),
|
||||
file: core.getInput('file'),
|
||||
labels: Util.getInputList('labels', {ignoreComma: true}),
|
||||
load: core.getBooleanInput('load'),
|
||||
network: core.getInput('network'),
|
||||
noCache: core.getBooleanInput('no-cache'),
|
||||
noCacheFilters: Util.getInputList('no-cache-filters'),
|
||||
outputs: Util.getInputList('outputs', {ignoreComma: true}),
|
||||
'no-cache': core.getBooleanInput('no-cache'),
|
||||
'no-cache-filters': Util.getInputList('no-cache-filters'),
|
||||
outputs: Util.getInputList('outputs', {ignoreComma: true, quote: false}),
|
||||
platforms: Util.getInputList('platforms'),
|
||||
provenance: BuildxInputs.getProvenanceInput('provenance'),
|
||||
provenance: Build.getProvenanceInput('provenance'),
|
||||
pull: core.getBooleanInput('pull'),
|
||||
push: core.getBooleanInput('push'),
|
||||
sbom: core.getInput('sbom'),
|
||||
secrets: Util.getInputList('secrets', {ignoreComma: true}),
|
||||
secretEnvs: Util.getInputList('secret-envs'),
|
||||
secretFiles: Util.getInputList('secret-files', {ignoreComma: true}),
|
||||
shmSize: core.getInput('shm-size'),
|
||||
'secret-envs': Util.getInputList('secret-envs'),
|
||||
'secret-files': Util.getInputList('secret-files', {ignoreComma: true}),
|
||||
'shm-size': core.getInput('shm-size'),
|
||||
ssh: Util.getInputList('ssh'),
|
||||
tags: Util.getInputList('tags'),
|
||||
target: core.getInput('target'),
|
||||
ulimit: Util.getInputList('ulimit', {ignoreComma: true}),
|
||||
githubToken: core.getInput('github-token')
|
||||
'github-token': core.getInput('github-token')
|
||||
};
|
||||
}
|
||||
|
||||
@@ -92,42 +95,52 @@ export async function getArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<s
|
||||
|
||||
async function getBuildArgs(inputs: Inputs, context: string, toolkit: Toolkit): Promise<Array<string>> {
|
||||
const args: Array<string> = ['build'];
|
||||
await Util.asyncForEach(inputs.addHosts, async addHost => {
|
||||
await Util.asyncForEach(inputs['add-hosts'], async addHost => {
|
||||
args.push('--add-host', addHost);
|
||||
});
|
||||
if (inputs.allow.length > 0) {
|
||||
args.push('--allow', inputs.allow.join(','));
|
||||
}
|
||||
if (await toolkit.buildx.versionSatisfies('>=0.10.0')) {
|
||||
await Util.asyncForEach(inputs.attests, async attest => {
|
||||
args.push('--attest', attest);
|
||||
});
|
||||
}
|
||||
await Util.asyncForEach(inputs.allow, async allow => {
|
||||
args.push('--allow', allow);
|
||||
});
|
||||
if (await toolkit.buildx.versionSatisfies('>=0.12.0')) {
|
||||
await Util.asyncForEach(inputs.annotations, async annotation => {
|
||||
args.push('--annotation', annotation);
|
||||
});
|
||||
} else if (inputs.annotations.length > 0) {
|
||||
core.warning("Annotations are only supported by buildx >= 0.12.0; the input 'annotations' is ignored.");
|
||||
}
|
||||
await Util.asyncForEach(inputs.buildArgs, async buildArg => {
|
||||
await Util.asyncForEach(inputs['build-args'], async buildArg => {
|
||||
args.push('--build-arg', buildArg);
|
||||
});
|
||||
if (await toolkit.buildx.versionSatisfies('>=0.8.0')) {
|
||||
await Util.asyncForEach(inputs.buildContexts, async buildContext => {
|
||||
args.push('--build-context', buildContext);
|
||||
await Util.asyncForEach(inputs['build-contexts'], async buildContext => {
|
||||
args.push(
|
||||
'--build-context',
|
||||
handlebars.compile(buildContext)({
|
||||
defaultContext: Context.gitContext()
|
||||
})
|
||||
);
|
||||
});
|
||||
} else if (inputs['build-contexts'].length > 0) {
|
||||
core.warning("Build contexts are only supported by buildx >= 0.8.0; the input 'build-contexts' is ignored.");
|
||||
}
|
||||
await Util.asyncForEach(inputs.cacheFrom, async cacheFrom => {
|
||||
await Util.asyncForEach(inputs['cache-from'], async cacheFrom => {
|
||||
args.push('--cache-from', cacheFrom);
|
||||
});
|
||||
await Util.asyncForEach(inputs.cacheTo, async cacheTo => {
|
||||
await Util.asyncForEach(inputs['cache-to'], async cacheTo => {
|
||||
args.push('--cache-to', cacheTo);
|
||||
});
|
||||
if (inputs.cgroupParent) {
|
||||
args.push('--cgroup-parent', inputs.cgroupParent);
|
||||
if (inputs.call) {
|
||||
if (!(await toolkit.buildx.versionSatisfies('>=0.15.0'))) {
|
||||
throw new Error(`Buildx >= 0.15.0 is required to use the call flag.`);
|
||||
}
|
||||
args.push('--call', inputs.call);
|
||||
}
|
||||
await Util.asyncForEach(inputs.secretEnvs, async secretEnv => {
|
||||
if (inputs['cgroup-parent']) {
|
||||
args.push('--cgroup-parent', inputs['cgroup-parent']);
|
||||
}
|
||||
await Util.asyncForEach(inputs['secret-envs'], async secretEnv => {
|
||||
try {
|
||||
args.push('--secret', BuildxInputs.resolveBuildSecretEnv(secretEnv));
|
||||
args.push('--secret', Build.resolveSecretEnv(secretEnv));
|
||||
} catch (err) {
|
||||
core.warning(err.message);
|
||||
}
|
||||
@@ -135,13 +148,13 @@ async function getBuildArgs(inputs: Inputs, context: string, toolkit: Toolkit):
|
||||
if (inputs.file) {
|
||||
args.push('--file', inputs.file);
|
||||
}
|
||||
if (!BuildxInputs.hasLocalExporter(inputs.outputs) && !BuildxInputs.hasTarExporter(inputs.outputs) && (inputs.platforms.length == 0 || (await toolkit.buildx.versionSatisfies('>=0.4.2')))) {
|
||||
args.push('--iidfile', BuildxInputs.getBuildImageIDFilePath());
|
||||
if (!Build.hasLocalExporter(inputs.outputs) && !Build.hasTarExporter(inputs.outputs) && (inputs.platforms.length == 0 || (await toolkit.buildx.versionSatisfies('>=0.4.2')))) {
|
||||
args.push('--iidfile', toolkit.buildxBuild.getImageIDFilePath());
|
||||
}
|
||||
await Util.asyncForEach(inputs.labels, async label => {
|
||||
args.push('--label', label);
|
||||
});
|
||||
await Util.asyncForEach(inputs.noCacheFilters, async noCacheFilter => {
|
||||
await Util.asyncForEach(inputs['no-cache-filters'], async noCacheFilter => {
|
||||
args.push('--no-cache-filter', noCacheFilter);
|
||||
});
|
||||
await Util.asyncForEach(inputs.outputs, async output => {
|
||||
@@ -151,44 +164,29 @@ async function getBuildArgs(inputs: Inputs, context: string, toolkit: Toolkit):
|
||||
args.push('--platform', inputs.platforms.join(','));
|
||||
}
|
||||
if (await toolkit.buildx.versionSatisfies('>=0.10.0')) {
|
||||
if (inputs.provenance) {
|
||||
args.push('--provenance', inputs.provenance);
|
||||
} else if ((await toolkit.buildkit.versionSatisfies(inputs.builder, '>=0.11.0')) && !BuildxInputs.hasDockerExporter(inputs.outputs, inputs.load)) {
|
||||
// if provenance not specified and BuildKit version compatible for
|
||||
// attestation, set default provenance. Also needs to make sure user
|
||||
// doesn't want to explicitly load the image to docker.
|
||||
if (GitHub.context.payload.repository?.private ?? false) {
|
||||
// if this is a private repository, we set the default provenance
|
||||
// attributes being set in buildx: https://github.com/docker/buildx/blob/fb27e3f919dcbf614d7126b10c2bc2d0b1927eb6/build/build.go#L603
|
||||
args.push('--provenance', BuildxInputs.resolveProvenanceAttrs(`mode=min,inline-only=true`));
|
||||
} else {
|
||||
// for a public repository, we set max provenance mode.
|
||||
args.push('--provenance', BuildxInputs.resolveProvenanceAttrs(`mode=max`));
|
||||
}
|
||||
}
|
||||
if (inputs.sbom) {
|
||||
args.push('--sbom', inputs.sbom);
|
||||
}
|
||||
args.push(...(await getAttestArgs(inputs, toolkit)));
|
||||
} else {
|
||||
core.warning("Attestations are only supported by buildx >= 0.10.0; the inputs 'attests', 'provenance' and 'sbom' are ignored.");
|
||||
}
|
||||
await Util.asyncForEach(inputs.secrets, async secret => {
|
||||
try {
|
||||
args.push('--secret', BuildxInputs.resolveBuildSecretString(secret));
|
||||
args.push('--secret', Build.resolveSecretString(secret));
|
||||
} catch (err) {
|
||||
core.warning(err.message);
|
||||
}
|
||||
});
|
||||
await Util.asyncForEach(inputs.secretFiles, async secretFile => {
|
||||
await Util.asyncForEach(inputs['secret-files'], async secretFile => {
|
||||
try {
|
||||
args.push('--secret', BuildxInputs.resolveBuildSecretFile(secretFile));
|
||||
args.push('--secret', Build.resolveSecretFile(secretFile));
|
||||
} catch (err) {
|
||||
core.warning(err.message);
|
||||
}
|
||||
});
|
||||
if (inputs.githubToken && !BuildxInputs.hasGitAuthTokenSecret(inputs.secrets) && context.startsWith(Context.gitContext())) {
|
||||
args.push('--secret', BuildxInputs.resolveBuildSecretString(`GIT_AUTH_TOKEN=${inputs.githubToken}`));
|
||||
if (inputs['github-token'] && !Build.hasGitAuthTokenSecret(inputs.secrets) && context.startsWith(Context.gitContext())) {
|
||||
args.push('--secret', Build.resolveSecretString(`GIT_AUTH_TOKEN.${new URL(GitHub.serverURL).host.trimEnd()}=${inputs['github-token']}`));
|
||||
}
|
||||
if (inputs.shmSize) {
|
||||
args.push('--shm-size', inputs.shmSize);
|
||||
if (inputs['shm-size']) {
|
||||
args.push('--shm-size', inputs['shm-size']);
|
||||
}
|
||||
await Util.asyncForEach(inputs.ssh, async ssh => {
|
||||
args.push('--ssh', ssh);
|
||||
@@ -214,12 +212,12 @@ async function getCommonArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<st
|
||||
args.push('--load');
|
||||
}
|
||||
if (await toolkit.buildx.versionSatisfies('>=0.6.0')) {
|
||||
args.push('--metadata-file', BuildxInputs.getBuildMetadataFilePath());
|
||||
args.push('--metadata-file', toolkit.buildxBuild.getMetadataFilePath());
|
||||
}
|
||||
if (inputs.network) {
|
||||
args.push('--network', inputs.network);
|
||||
}
|
||||
if (inputs.noCache) {
|
||||
if (inputs['no-cache']) {
|
||||
args.push('--no-cache');
|
||||
}
|
||||
if (inputs.pull) {
|
||||
@@ -230,3 +228,59 @@ async function getCommonArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<st
|
||||
}
|
||||
return args;
|
||||
}
|
||||
|
||||
async function getAttestArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<string>> {
|
||||
const args: Array<string> = [];
|
||||
|
||||
// check if provenance attestation is set in attests input
|
||||
let hasAttestProvenance = false;
|
||||
await Util.asyncForEach(inputs.attests, async (attest: string) => {
|
||||
if (Build.hasAttestationType('provenance', attest)) {
|
||||
hasAttestProvenance = true;
|
||||
}
|
||||
});
|
||||
|
||||
let provenanceSet = false;
|
||||
let sbomSet = false;
|
||||
if (inputs.provenance) {
|
||||
args.push('--attest', Build.resolveAttestationAttrs(`type=provenance,${inputs.provenance}`));
|
||||
provenanceSet = true;
|
||||
} else if (!hasAttestProvenance && !noDefaultAttestations() && (await toolkit.buildkit.versionSatisfies(inputs.builder, '>=0.11.0')) && !Build.hasDockerExporter(inputs.outputs, inputs.load)) {
|
||||
// if provenance not specified in provenance or attests inputs and BuildKit
|
||||
// version compatible for attestation, set default provenance. Also needs
|
||||
// to make sure user doesn't want to explicitly load the image to docker.
|
||||
if (GitHub.context.payload.repository?.private ?? false) {
|
||||
// if this is a private repository, we set the default provenance
|
||||
// attributes being set in buildx: https://github.com/docker/buildx/blob/fb27e3f919dcbf614d7126b10c2bc2d0b1927eb6/build/build.go#L603
|
||||
args.push('--attest', `type=provenance,${Build.resolveProvenanceAttrs(`mode=min,inline-only=true`)}`);
|
||||
} else {
|
||||
// for a public repository, we set max provenance mode.
|
||||
args.push('--attest', `type=provenance,${Build.resolveProvenanceAttrs(`mode=max`)}`);
|
||||
}
|
||||
}
|
||||
if (inputs.sbom) {
|
||||
args.push('--attest', Build.resolveAttestationAttrs(`type=sbom,${inputs.sbom}`));
|
||||
sbomSet = true;
|
||||
}
|
||||
|
||||
// set attests but check if provenance or sbom types already set as
|
||||
// provenance and sbom inputs take precedence over attests input.
|
||||
await Util.asyncForEach(inputs.attests, async (attest: string) => {
|
||||
if (!Build.hasAttestationType('provenance', attest) && !Build.hasAttestationType('sbom', attest)) {
|
||||
args.push('--attest', Build.resolveAttestationAttrs(attest));
|
||||
} else if (!provenanceSet && Build.hasAttestationType('provenance', attest)) {
|
||||
args.push('--attest', Build.resolveProvenanceAttrs(attest));
|
||||
} else if (!sbomSet && Build.hasAttestationType('sbom', attest)) {
|
||||
args.push('--attest', attest);
|
||||
}
|
||||
});
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
function noDefaultAttestations(): boolean {
|
||||
if (process.env.BUILDX_NO_DEFAULT_ATTESTATIONS) {
|
||||
return Util.parseBool(process.env.BUILDX_NO_DEFAULT_ATTESTATIONS);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
+193
-19
@@ -1,22 +1,34 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as stateHelper from './state-helper';
|
||||
import * as core from '@actions/core';
|
||||
import * as actionsToolkit from '@docker/actions-toolkit';
|
||||
import {Context} from '@docker/actions-toolkit/lib/context';
|
||||
import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
|
||||
import {Exec} from '@docker/actions-toolkit/lib/exec';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github';
|
||||
import {Inputs as BuildxInputs} from '@docker/actions-toolkit/lib/buildx/inputs';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
|
||||
import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker';
|
||||
|
||||
import * as context from './context';
|
||||
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
|
||||
import {History as BuildxHistory} from '@docker/actions-toolkit/lib/buildx/history.js';
|
||||
import {Context} from '@docker/actions-toolkit/lib/context.js';
|
||||
import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
|
||||
import {Exec} from '@docker/actions-toolkit/lib/exec.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github/github.js';
|
||||
import {GitHubArtifact} from '@docker/actions-toolkit/lib/github/artifact.js';
|
||||
import {GitHubSummary} from '@docker/actions-toolkit/lib/github/summary.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
import {Util} from '@docker/actions-toolkit/lib/util.js';
|
||||
|
||||
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder.js';
|
||||
import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker/docker.js';
|
||||
import {UploadResponse as UploadArtifactResponse} from '@docker/actions-toolkit/lib/types/github/artifact.js';
|
||||
|
||||
import * as context from './context.js';
|
||||
import * as stateHelper from './state-helper.js';
|
||||
|
||||
actionsToolkit.run(
|
||||
// main
|
||||
async () => {
|
||||
const startedTime = new Date();
|
||||
const inputs: context.Inputs = await context.getInputs();
|
||||
stateHelper.setSummaryInputs(inputs);
|
||||
core.debug(`inputs: ${JSON.stringify(inputs)}`);
|
||||
|
||||
const toolkit = new Toolkit();
|
||||
|
||||
await core.group(`GitHub Actions runtime token ACs`, async () => {
|
||||
@@ -72,20 +84,44 @@ actionsToolkit.run(
|
||||
await toolkit.buildx.printVersion();
|
||||
});
|
||||
|
||||
let builder: BuilderInfo;
|
||||
await core.group(`Builder info`, async () => {
|
||||
builder = await toolkit.builder.inspect(inputs.builder);
|
||||
stateHelper.setBuilderDriver(builder.driver ?? '');
|
||||
stateHelper.setBuilderEndpoint(builder.nodes?.[0]?.endpoint ?? '');
|
||||
core.info(JSON.stringify(builder, null, 2));
|
||||
});
|
||||
|
||||
const args: string[] = await context.getArgs(inputs, toolkit);
|
||||
core.debug(`context.getArgs: ${JSON.stringify(args)}`);
|
||||
|
||||
const buildCmd = await toolkit.buildx.getCommand(args);
|
||||
core.debug(`buildCmd.command: ${buildCmd.command}`);
|
||||
core.debug(`buildCmd.args: ${JSON.stringify(buildCmd.args)}`);
|
||||
|
||||
let err: Error | undefined;
|
||||
await Exec.getExecOutput(buildCmd.command, buildCmd.args, {
|
||||
ignoreReturnCode: true
|
||||
ignoreReturnCode: true,
|
||||
env: Object.assign({}, process.env, {
|
||||
BUILDX_METADATA_WARNINGS: 'true'
|
||||
}) as {
|
||||
[key: string]: string;
|
||||
}
|
||||
}).then(res => {
|
||||
if (res.stderr.length > 0 && res.exitCode != 0) {
|
||||
throw new Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
|
||||
if (res.exitCode != 0) {
|
||||
if (inputs.call && inputs.call === 'check' && res.stdout.length > 0) {
|
||||
// checks warnings are printed to stdout: https://github.com/docker/buildx/pull/2647
|
||||
// take the first line with the message summaryzing the warnings
|
||||
err = new Error(res.stdout.split('\n')[0]?.trim());
|
||||
} else if (res.stderr.length > 0) {
|
||||
err = new Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const imageID = BuildxInputs.resolveBuildImageID();
|
||||
const metadata = BuildxInputs.resolveBuildMetadata();
|
||||
const digest = BuildxInputs.resolveDigest();
|
||||
|
||||
const imageID = toolkit.buildxBuild.resolveImageID();
|
||||
const metadata = toolkit.buildxBuild.resolveMetadata();
|
||||
const digest = toolkit.buildxBuild.resolveDigest(metadata);
|
||||
if (imageID) {
|
||||
await core.group(`ImageID`, async () => {
|
||||
core.info(imageID);
|
||||
@@ -100,17 +136,155 @@ actionsToolkit.run(
|
||||
}
|
||||
if (metadata) {
|
||||
await core.group(`Metadata`, async () => {
|
||||
core.info(metadata);
|
||||
core.setOutput('metadata', metadata);
|
||||
const metadatadt = JSON.stringify(metadata, null, 2);
|
||||
core.info(metadatadt);
|
||||
core.setOutput('metadata', metadatadt);
|
||||
});
|
||||
}
|
||||
|
||||
let ref: string | undefined;
|
||||
await core.group(`Reference`, async () => {
|
||||
ref = await buildRef(toolkit, startedTime, inputs.builder);
|
||||
if (ref) {
|
||||
core.info(ref);
|
||||
stateHelper.setBuildRef(ref);
|
||||
} else {
|
||||
core.info('No build reference found');
|
||||
}
|
||||
});
|
||||
|
||||
if (buildChecksAnnotationsEnabled()) {
|
||||
const warnings = toolkit.buildxBuild.resolveWarnings(metadata);
|
||||
if (ref && warnings && warnings.length > 0) {
|
||||
const annotations = await Buildx.convertWarningsToGitHubAnnotations(warnings, [ref]);
|
||||
core.debug(`annotations: ${JSON.stringify(annotations, null, 2)}`);
|
||||
if (annotations && annotations.length > 0) {
|
||||
await core.group(`Generating GitHub annotations (${annotations.length} build checks found)`, async () => {
|
||||
for (const annotation of annotations) {
|
||||
core.warning(annotation.message, annotation);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await core.group(`Check build summary support`, async () => {
|
||||
if (!buildSummaryEnabled()) {
|
||||
core.info('Build summary disabled');
|
||||
} else if (inputs.call && inputs.call !== 'build') {
|
||||
core.info(`Build summary skipped for ${inputs.call} subrequest`);
|
||||
} else if (GitHub.isGHES) {
|
||||
core.info('Build summary is not yet supported on GHES');
|
||||
} else if (!(await toolkit.buildx.versionSatisfies('>=0.23.0'))) {
|
||||
core.info('Build summary requires Buildx >= 0.23.0');
|
||||
} else if (!ref) {
|
||||
core.info('Build summary requires a build reference');
|
||||
} else {
|
||||
core.info('Build summary supported!');
|
||||
stateHelper.setSummarySupported();
|
||||
}
|
||||
});
|
||||
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
},
|
||||
// post
|
||||
async () => {
|
||||
if (stateHelper.isSummarySupported) {
|
||||
await core.group(`Generating build summary`, async () => {
|
||||
try {
|
||||
const recordUploadEnabled = buildRecordUploadEnabled();
|
||||
let recordRetentionDays: number | undefined;
|
||||
if (recordUploadEnabled) {
|
||||
recordRetentionDays = buildRecordRetentionDays();
|
||||
}
|
||||
|
||||
const buildxHistory = new BuildxHistory();
|
||||
const exportRes = await buildxHistory.export({
|
||||
refs: stateHelper.buildRef ? [stateHelper.buildRef] : []
|
||||
});
|
||||
core.info(`Build record written to ${exportRes.dockerbuildFilename} (${Util.formatFileSize(exportRes.dockerbuildSize)})`);
|
||||
|
||||
let uploadRes: UploadArtifactResponse | undefined;
|
||||
if (recordUploadEnabled) {
|
||||
uploadRes = await GitHubArtifact.upload({
|
||||
filename: exportRes.dockerbuildFilename,
|
||||
retentionDays: recordRetentionDays
|
||||
});
|
||||
}
|
||||
|
||||
await GitHubSummary.writeBuildSummary({
|
||||
exportRes: exportRes,
|
||||
uploadRes: uploadRes,
|
||||
inputs: stateHelper.summaryInputs,
|
||||
driver: stateHelper.builderDriver,
|
||||
endpoint: stateHelper.builderEndpoint
|
||||
});
|
||||
} catch (e) {
|
||||
core.warning(e.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (stateHelper.tmpDir.length > 0) {
|
||||
await core.group(`Removing temp folder ${stateHelper.tmpDir}`, async () => {
|
||||
fs.rmSync(stateHelper.tmpDir, {recursive: true});
|
||||
try {
|
||||
fs.rmSync(stateHelper.tmpDir, {recursive: true});
|
||||
} catch {
|
||||
core.warning(`Failed to remove temp folder ${stateHelper.tmpDir}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
async function buildRef(toolkit: Toolkit, since: Date, builder?: string): Promise<string> {
|
||||
// get ref from metadata file
|
||||
const ref = toolkit.buildxBuild.resolveRef();
|
||||
if (ref) {
|
||||
return ref;
|
||||
}
|
||||
// otherwise, look for the very first build ref since the build has started
|
||||
if (!builder) {
|
||||
const currentBuilder = await toolkit.builder.inspect();
|
||||
builder = currentBuilder.name;
|
||||
}
|
||||
const refs = Buildx.refs({
|
||||
dir: Buildx.refsDir,
|
||||
builderName: builder,
|
||||
since: since
|
||||
});
|
||||
return Object.keys(refs).length > 0 ? Object.keys(refs)[0] : '';
|
||||
}
|
||||
|
||||
function buildChecksAnnotationsEnabled(): boolean {
|
||||
if (process.env.DOCKER_BUILD_CHECKS_ANNOTATIONS) {
|
||||
return Util.parseBool(process.env.DOCKER_BUILD_CHECKS_ANNOTATIONS);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function buildSummaryEnabled(): boolean {
|
||||
if (process.env.DOCKER_BUILD_SUMMARY) {
|
||||
return Util.parseBool(process.env.DOCKER_BUILD_SUMMARY);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function buildRecordUploadEnabled(): boolean {
|
||||
if (process.env.DOCKER_BUILD_RECORD_UPLOAD) {
|
||||
return Util.parseBool(process.env.DOCKER_BUILD_RECORD_UPLOAD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function buildRecordRetentionDays(): number | undefined {
|
||||
const val = process.env.DOCKER_BUILD_RECORD_RETENTION_DAYS;
|
||||
if (val) {
|
||||
const res = parseInt(val);
|
||||
if (isNaN(res)) {
|
||||
throw new Error(`Invalid build record retention days: ${val}`);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,70 @@
|
||||
import * as core from '@actions/core';
|
||||
|
||||
import {Build} from '@docker/actions-toolkit/lib/buildx/build.js';
|
||||
|
||||
import {Inputs} from './context.js';
|
||||
|
||||
export const tmpDir = process.env['STATE_tmpDir'] || '';
|
||||
|
||||
export const builderDriver = process.env['STATE_builderDriver'] || '';
|
||||
export const builderEndpoint = process.env['STATE_builderEndpoint'] || '';
|
||||
export const summaryInputs = process.env['STATE_summaryInputs'] ? JSON.parse(process.env['STATE_summaryInputs']) : undefined;
|
||||
|
||||
export const buildRef = process.env['STATE_buildRef'] || '';
|
||||
export const isSummarySupported = !!process.env['STATE_isSummarySupported'];
|
||||
|
||||
export function setTmpDir(tmpDir: string) {
|
||||
core.saveState('tmpDir', tmpDir);
|
||||
}
|
||||
|
||||
export function setBuilderDriver(builderDriver: string) {
|
||||
core.saveState('builderDriver', builderDriver);
|
||||
}
|
||||
|
||||
export function setBuilderEndpoint(builderEndpoint: string) {
|
||||
core.saveState('builderEndpoint', builderEndpoint);
|
||||
}
|
||||
|
||||
export function setBuildRef(buildRef: string) {
|
||||
core.saveState('buildRef', buildRef);
|
||||
}
|
||||
|
||||
export function setSummarySupported() {
|
||||
core.saveState('isSummarySupported', 'true');
|
||||
}
|
||||
|
||||
export function setSummaryInputs(inputs: Inputs) {
|
||||
const res = {};
|
||||
for (const key of Object.keys(inputs)) {
|
||||
if (key === 'github-token') {
|
||||
continue;
|
||||
}
|
||||
const value: string | string[] | boolean = inputs[key];
|
||||
if (typeof value === 'boolean' && !value) {
|
||||
continue;
|
||||
} else if (Array.isArray(value)) {
|
||||
if (value.length === 0) {
|
||||
continue;
|
||||
} else if (key === 'secrets' && value.length > 0) {
|
||||
const secretKeys: string[] = [];
|
||||
for (const secret of value) {
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const [skey, _] = Build.parseSecretKvp(secret, true);
|
||||
secretKeys.push(skey);
|
||||
} catch {
|
||||
// ignore invalid secret
|
||||
}
|
||||
}
|
||||
if (secretKeys.length > 0) {
|
||||
res[key] = secretKeys;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
} else if (!value) {
|
||||
continue;
|
||||
}
|
||||
res[key] = value;
|
||||
}
|
||||
core.saveState('summaryInputs', JSON.stringify(res));
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
frOM busybox as base
|
||||
cOpy lint.Dockerfile .
|
||||
|
||||
from scratch
|
||||
MAINTAINER moby@example.com
|
||||
COPy --from=base \
|
||||
/lint.Dockerfile \
|
||||
/
|
||||
|
||||
CMD [ "echo", "Hello, Norway!" ]
|
||||
CMD [ "echo", "Hello, Sweden!" ]
|
||||
ENTRYPOINT my-program start
|
||||
@@ -1,5 +1,6 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
FROM --platform=$BUILDPLATFORM golang:alpine AS build
|
||||
|
||||
FROM --platform=$BUILDPLATFORM alpine AS build
|
||||
ARG TARGETPLATFORM
|
||||
ARG BUILDPLATFORM
|
||||
RUN echo "I am running on $BUILDPLATFORM, building for $TARGETPLATFORM" > /log
|
||||
@@ -12,7 +13,7 @@ RUN apk --update --no-cache add \
|
||||
&& rm -rf /tmp/* /var/cache/apk/*
|
||||
|
||||
USER buildx
|
||||
RUN sudo chown buildx. /log
|
||||
RUN sudo chown buildx: /log
|
||||
USER root
|
||||
|
||||
FROM alpine
|
||||
|
||||
+4
-9
@@ -1,9 +1,8 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "nodenext",
|
||||
"moduleResolution": "nodenext",
|
||||
"esModuleInterop": true,
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"strict": true,
|
||||
"newLine": "lf",
|
||||
"outDir": "./lib",
|
||||
"rootDir": "./src",
|
||||
@@ -12,11 +11,7 @@
|
||||
"resolveJsonModule": true,
|
||||
"useUnknownInCatchVariables": false,
|
||||
},
|
||||
"exclude": [
|
||||
"./__mocks__/**/*",
|
||||
"./__tests__/**/*",
|
||||
"./lib/**/*",
|
||||
"node_modules",
|
||||
"jest.config.ts"
|
||||
"include": [
|
||||
"src/**/*.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import {defineConfig} from 'vitest/config';
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
clearMocks: true,
|
||||
environment: 'node',
|
||||
setupFiles: ['./__tests__/setup.unit.ts'],
|
||||
include: ['**/*.test.ts'],
|
||||
coverage: {
|
||||
provider: 'v8',
|
||||
reporter: ['clover'],
|
||||
include: ['src/**/*.ts'],
|
||||
exclude: ['src/**/main.ts']
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user