Skip to content

Commit 7f27e6f

Browse files
committed
rework nodejs build, add deb13
Signed-off-by: Appu Goundan <[email protected]>
1 parent cd52563 commit 7f27e6f

File tree

3 files changed

+126
-89
lines changed

3 files changed

+126
-89
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 & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,36 @@
1-
load("@container_structure_test//:defs.bzl", "container_structure_test")
1+
load(":nodejs.bzl", "nodejs_image", "nodejs_image_index")
2+
load(":node_arch.bzl", "node_arch")
23
load("@rules_oci//oci:defs.bzl", "oci_image", "oci_image_index")
34
load("@rules_pkg//:pkg.bzl", "pkg_tar")
4-
load("//:distro.bzl", "DISTROS")
5+
load("//:distro.bzl", "DISTROS", "PREVIEW_DISTROS")
56
load("//nodejs:node_arch.bzl", "node_arch")
67

78
package(default_visibility = ["//visibility:public"])
89

910
NODEJS_MAJOR_VERSIONS = ("20", "22", "24")
1011

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

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

2117
[
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-
],
18+
nodejs_image(
19+
arch = arch,
20+
distro = distro,
21+
major_version = major_version,
2822
)
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
23+
for distro in NODEJS_DISTROS
4624
for major_version in NODEJS_MAJOR_VERSIONS
4725
for arch in node_arch(major_version)
48-
for distro in DISTROS
4926
]
5027

5128
[
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-
],
29+
nodejs_image_index(
30+
architectures = node_arch(major_version),
31+
distro = distro,
32+
major_version = major_version,
6433
)
65-
for mode in MODE
66-
for user in USER
34+
for distro in NODEJS_DISTROS
6735
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
10736
]

nodejs/nodejs.bzl

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

0 commit comments

Comments
 (0)