Skip to content

Commit bec629a

Browse files
authored
Merge pull request #1911 from GoogleContainerTools/rework_nodejs_build
rework nodejs build, add deb13
2 parents cd52563 + e0a6a83 commit bec629a

File tree

4 files changed

+131
-92
lines changed

4 files changed

+131
-92
lines changed

BUILD

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,14 @@ NODEJS = {
194194
"{REGISTRY}/{PROJECT_ID}/nodejs" + version + "-" + distro + ":" + tag_base + "-" + arch: "//nodejs:nodejs" + version + label + "_" + user + "_" + arch + "_" + distro
195195
for version in NODEJS_VERSIONS
196196
for arch in node_arch(version)
197-
for distro in DISTROS
197+
for distro in DISTROS + PREVIEW_DISTROS
198198
for (tag_base, label, user) in NODEJS_VARIATIONS
199199
}
200200

201201
# oci_image_index
202202
NODEJS |= {
203203
"{REGISTRY}/{PROJECT_ID}/nodejs" + version + "-" + distro + ":" + tag_base: "//nodejs:nodejs" + version + label + "_" + user + "_" + distro
204-
for distro in DISTROS
204+
for distro in DISTROS + PREVIEW_DISTROS
205205
for version in NODEJS_VERSIONS
206206
for (tag_base, label, user) in NODEJS_VARIATIONS
207207
}

nodejs/BUILD

Lines changed: 16 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,33 @@
1-
load("@container_structure_test//:defs.bzl", "container_structure_test")
2-
load("@rules_oci//oci:defs.bzl", "oci_image", "oci_image_index")
3-
load("@rules_pkg//:pkg.bzl", "pkg_tar")
4-
load("//:distro.bzl", "DISTROS")
5-
load("//nodejs:node_arch.bzl", "node_arch")
1+
load(":nodejs.bzl", "nodejs_image", "nodejs_image_index")
2+
load(":node_arch.bzl", "node_arch")
3+
load("//:distro.bzl", "DISTROS", "PREVIEW_DISTROS")
64

75
package(default_visibility = ["//visibility:public"])
86

97
NODEJS_MAJOR_VERSIONS = ("20", "22", "24")
108

11-
MODE = [
12-
"",
13-
"_debug",
14-
]
9+
NODEJS_DISTROS = DISTROS + PREVIEW_DISTROS
1510

16-
USER = [
17-
"root",
18-
"nonroot",
19-
]
11+
# NODEJS_ARCHITECTURES = ARCHITECTURES
12+
# using node_arch for now, but we can probably get rid of that
2013

2114
[
22-
oci_image_index(
23-
name = "nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + distro,
24-
images = [
25-
"nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro
26-
for arch in node_arch(major_version)
27-
],
15+
nodejs_image(
16+
arch = arch,
17+
distro = distro,
18+
major_version = major_version,
2819
)
29-
for mode in MODE
30-
for user in USER
31-
for major_version in NODEJS_MAJOR_VERSIONS
32-
for distro in DISTROS
33-
]
34-
35-
[
36-
oci_image(
37-
name = "nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro,
38-
base = "//cc:cc" + mode + "_" + user + "_" + arch + "_" + distro,
39-
entrypoint = ["/nodejs/bin/node"],
40-
tars = [
41-
"@nodejs" + major_version + "_" + arch,
42-
],
43-
)
44-
for mode in MODE
45-
for user in USER
20+
for distro in NODEJS_DISTROS
4621
for major_version in NODEJS_MAJOR_VERSIONS
4722
for arch in node_arch(major_version)
48-
for distro in DISTROS
4923
]
5024

5125
[
52-
container_structure_test(
53-
name = "nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro + "_test",
54-
configs = [
55-
"testdata/nodejs" + major_version + ".yaml",
56-
"testdata/check_headers.yaml",
57-
"testdata/check_npm.yaml",
58-
],
59-
image = "nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro,
60-
tags = [
61-
arch,
62-
"manual",
63-
],
26+
nodejs_image_index(
27+
architectures = node_arch(major_version),
28+
distro = distro,
29+
major_version = major_version,
6430
)
65-
for mode in MODE
66-
for user in USER
31+
for distro in NODEJS_DISTROS
6732
for major_version in NODEJS_MAJOR_VERSIONS
68-
for arch in node_arch(major_version)
69-
for distro in DISTROS
70-
]
71-
72-
pkg_tar(
73-
name = "check_certificate",
74-
srcs = ["testdata/check_certificate.js"],
75-
)
76-
77-
[
78-
oci_image(
79-
name = "check_certificate_nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro,
80-
base = "nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro,
81-
tars = [
82-
":check_certificate",
83-
],
84-
)
85-
for mode in MODE
86-
for user in USER
87-
for major_version in NODEJS_MAJOR_VERSIONS
88-
for arch in node_arch(major_version)
89-
for distro in DISTROS
90-
]
91-
92-
[
93-
container_structure_test(
94-
name = "check_certificate_nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro + "_test",
95-
configs = ["testdata/check_certificate.yaml"],
96-
image = "check_certificate_nodejs" + major_version + ("" if (not mode) else mode) + "_" + user + "_" + arch + "_" + distro,
97-
tags = [
98-
arch,
99-
"manual",
100-
],
101-
)
102-
for mode in MODE
103-
for user in USER
104-
for major_version in NODEJS_MAJOR_VERSIONS
105-
for arch in node_arch(major_version)
106-
for distro in DISTROS
10733
]

nodejs/nodejs.bzl

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
load("@container_structure_test//:defs.bzl", "container_structure_test")
2+
load("@rules_oci//oci:defs.bzl", "oci_image", "oci_image_index")
3+
load("@rules_pkg//:pkg.bzl", "pkg_tar")
4+
5+
NODEJS_MAJOR_VERSIONS = ("20", "22", "24")
6+
7+
DEBUG_MODE = ["", "_debug"]
8+
USERS = ["root", "nonroot"]
9+
10+
def nodejs_image_index(distro, major_version, architectures):
11+
"""nodejs image index for a distro
12+
13+
Args:
14+
distro: name of distribution
15+
major_version: version of nodejs
16+
architectures: all architectures included in index
17+
"""
18+
[
19+
oci_image_index(
20+
name = "nodejs" + major_version + mode + "_" + user + "_" + distro,
21+
images = [
22+
"nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro
23+
for arch in architectures
24+
],
25+
)
26+
for mode in DEBUG_MODE
27+
for user in USERS
28+
]
29+
30+
def _check_certificates_tar():
31+
# only create once
32+
if native.existing_rule("check_certificate"):
33+
return
34+
35+
pkg_tar(
36+
name = "check_certificate",
37+
srcs = ["testdata/check_certificate.js"],
38+
)
39+
40+
def nodejs_image(distro, major_version, arch):
41+
"""nodejs and debug image with tests
42+
43+
Args:
44+
distro: name of distribution
45+
major_version: version of nodejs
46+
arch: the target arch
47+
"""
48+
[
49+
oci_image(
50+
name = "nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro,
51+
base = "//cc:cc" + mode + "_" + user + "_" + arch + "_" + distro,
52+
entrypoint = ["/nodejs/bin/node"],
53+
tars = [
54+
"@nodejs" + major_version + "_" + arch,
55+
],
56+
)
57+
for mode in DEBUG_MODE
58+
for user in USERS
59+
]
60+
61+
_check_certificates_tar()
62+
63+
[
64+
container_structure_test(
65+
name = "nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro + "_test",
66+
configs = [
67+
"testdata/nodejs" + major_version + ".yaml",
68+
"testdata/check_headers.yaml",
69+
"testdata/check_npm.yaml",
70+
],
71+
image = "nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro,
72+
tags = [
73+
arch,
74+
"manual",
75+
],
76+
)
77+
for mode in DEBUG_MODE
78+
for user in USERS
79+
]
80+
81+
[
82+
oci_image(
83+
name = "check_certificate_nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro,
84+
base = "nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro,
85+
tars = [
86+
":check_certificate",
87+
],
88+
)
89+
for mode in DEBUG_MODE
90+
for user in USERS
91+
]
92+
93+
[
94+
container_structure_test(
95+
name = "check_certificate_nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro + "_test",
96+
configs = ["testdata/check_certificate.yaml"],
97+
image = "check_certificate_nodejs" + major_version + mode + "_" + user + "_" + arch + "_" + distro,
98+
tags = [
99+
arch,
100+
"manual",
101+
],
102+
)
103+
for mode in DEBUG_MODE
104+
for user in USERS
105+
]

private/tools/diff.bash

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,14 @@ function test_image() {
185185
repo_origin=$(stamp_origin "$repo")
186186
repo_stage=$(stamp_stage "$repo")
187187

188+
if ! crane manifest "$repo_origin" > /dev/null; then
189+
echo "🆕 New image will be added to $repo_origin"
190+
if [[ "${SET_GITHUB_OUTPUT}" == "1" ]]; then
191+
echo "$image_label (new)" >> "$CHANGED_IMAGES_FILE"
192+
fi
193+
return
194+
fi
195+
188196
if [[ "${SKIP_INDEX}" == "1" ]]; then
189197
if ! crane manifest "$repo_origin" | jq -e '.mediaType == "application/vnd.oci.image.manifest.v1+json"' > /dev/null; then
190198
echo "⏭️ Skipping image index $repo_origin"

0 commit comments

Comments
 (0)