Skip to content

Commit 712c840

Browse files
bpmcthugodutka
andauthored
feat: rename enterprise-* images to example-* while maintaining backward compatibility (#302)
* feat: rename enterprise-* images to example-* while maintaining backward compatibility * revert to previous version * add inner loop for prefixes --------- Co-authored-by: Hugo Dutka <[email protected]>
1 parent 8caeafa commit 712c840

File tree

4 files changed

+85
-63
lines changed

4 files changed

+85
-63
lines changed

README.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
1-
# Enterprise Example Images
1+
# Coder Example Images
22

33
This repository contains example images for use with [Coder](https://coder.com/docs/v2/latest).
44

5-
- `enterprise-base`: Contains an example image that can be used as a base for
5+
- `example-base`: Contains an example image that can be used as a base for
66
other images.
7-
- `enterprise-minimal`: Contains a minimal image that contains only the required
7+
- `example-minimal`: Contains a minimal image that contains only the required
88
utilities for a Coder workspace to bootstrap successfully.
9+
- `example-golang`: Contains Go development tools.
10+
- `example-java`: Contains Java development tools.
11+
- `example-node`: Contains Node.js development tools.
12+
- `example-desktop`: Contains a desktop environment accessible via web browser.
913

1014
## Images on Docker Hub
1115

12-
Each of these images is also published to Docker Hub under the
13-
`codercom/enterprise-[name]` repository. For example, `base` is available at
14-
https://hub.docker.com/r/codercom/enterprise-base. The tag is taken from the
16+
Each of these images is published to Docker Hub under the
17+
`codercom/example-[name]` repository. For example, `base` is available at
18+
https://hub.docker.com/r/codercom/example-base. The tag is taken from the
1519
filename of the Dockerfile. For example, `base/ubuntu.Dockerfile` is
1620
under the `ubuntu` tag.
1721

22+
> For backward compatibility, these images are also available with the `enterprise-` prefix
23+
> (e.g., `codercom/enterprise-base`), but the `example-` prefix is recommended for new deployments.
24+
1825
## Contributing
1926

2027
See our [contributing guide](.github/CONTRIBUTING.md).

scripts/build_images.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ fi
9191
for image in "${IMAGES[@]}"; do
9292
image_dir="$PROJECT_ROOT/images/$image"
9393
image_file="${TAG}.Dockerfile"
94-
image_ref="codercom/enterprise-$image:$TAG"
94+
enterprise_image_ref="codercom/enterprise-$image:$TAG"
95+
example_image_ref="codercom/example-$image:$TAG"
9596
image_path="$image_dir/$image_file"
9697

9798
if [ ! -f "$image_path" ]; then
@@ -105,5 +106,6 @@ for image in "${IMAGES[@]}"; do
105106
"${docker_flags[@]}" \
106107
"$image_dir" \
107108
--file="$image_path" \
108-
--tag="$image_ref" \| indent
109+
--tag="$example_image_ref" \
110+
--tag="$enterprise_image_ref" \| indent
109111
done

scripts/push_images.sh

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ date_str=$(date --utc +%Y%m%d)
9292
for image in "${IMAGES[@]}"; do
9393
image_dir="$PROJECT_ROOT/images/$image"
9494
image_file="${TAG}.Dockerfile"
95-
image_ref="codercom/enterprise-$image:$TAG"
96-
image_ref_date="${image_ref}-${date_str}"
95+
enterprise_image_ref="codercom/enterprise-$image:$TAG"
96+
enterprise_image_ref_date="${enterprise_image_ref}-${date_str}"
97+
example_image_ref="codercom/example-$image:$TAG"
98+
example_image_ref_date="${example_image_ref}-${date_str}"
9799
image_path="$image_dir/$image_file"
98100

99101
if [ ! -f "$image_path" ]; then
@@ -104,7 +106,14 @@ for image in "${IMAGES[@]}"; do
104106
fi
105107

106108
build_id=$(cat "build_${image}.json" | jq -r .\[\"depot.build\"\].buildID)
107-
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "$image_ref" "$build_id"
108-
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "$image_ref_date" "$build_id"
109+
110+
# Push example images (primary)
111+
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "$example_image_ref" "$build_id"
112+
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "$example_image_ref_date" "$build_id"
113+
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "codercom/example-${image}:latest" "$build_id"
114+
115+
# Push enterprise images (alias)
116+
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "$enterprise_image_ref" "$build_id"
117+
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "$enterprise_image_ref_date" "$build_id"
109118
run_trace $DRY_RUN depot push --project "gb3p8xrshk" --tag "codercom/enterprise-${image}:latest" "$build_id"
110119
done

scripts/scan_images.sh

Lines changed: 55 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -103,58 +103,62 @@ trivy_tmp_dir="$(mktemp -d -p "$PROJECT_ROOT")"
103103

104104
trap 'rm -rf "$tmp_dir" "$trivy_tmp_dir"' EXIT
105105

106+
PREFIXES=("example" "enterprise")
107+
106108
for image in "${IMAGES[@]}"; do
107-
image_ref="codercom/enterprise-${image}:${TAG}"
108-
image_name="${image}-${TAG}"
109-
output="${tmp_dir}/${image}-${TAG}.sarif"
110-
111-
if ! docker image inspect "$image_ref" >/dev/null 2>&1; then
112-
echo "Image '$image_ref' does not exist locally; skipping" >&2
113-
continue
114-
fi
115-
116-
old_tmpdir="${TMPDIR:-}"
117-
export TMPDIR="$trivy_tmp_dir"
118-
119-
# The timeout is set to 15 minutes because in Java images it can take a while
120-
# to scan JAR files for vulnerabilities.
121-
run_trace $DRY_RUN trivy image \
122-
--severity CRITICAL,HIGH \
123-
--format sarif \
124-
--output "$output" \
125-
--timeout 15m0s \
126-
"$image_ref" 2>&1 | indent
127-
128-
if [ "$old_tmpdir" = "" ]; then
129-
unset TMPDIR
130-
else
131-
export TMPDIR="$old_tmpdir"
132-
fi
133-
134-
if [ $DRY_RUN = true ]; then
135-
continue
136-
fi
137-
138-
if [ ! -f "$output" ]; then
139-
echo "No SARIF output found for image '$image_ref' at '$output'" >&2
140-
exit 1
141-
fi
142-
143-
# Do substitutions to add extra details to every message. Without these
144-
# substitutions, most messages won't have any information about which image
145-
# the vulnerability was found in.
146-
jq \
147-
".runs[].tool.driver.name |= \"Trivy ${image_name}\"" \
148-
"$output" >"$output.tmp"
149-
mv "$output.tmp" "$output"
150-
jq \
151-
".runs[].results[].locations[].physicalLocation.artifactLocation.uri |= \"${image_name}/\" + ." \
152-
"$output" >"$output.tmp"
153-
mv "$output.tmp" "$output"
154-
jq \
155-
".runs[].results[].locations[].message.text |= \"${image_name}: \" + ." \
156-
"$output" >"$output.tmp"
157-
mv "$output.tmp" "$output"
109+
for prefix in "${PREFIXES[@]}"; do
110+
image_ref="codercom/${prefix}-${image}:${TAG}"
111+
image_name="${prefix}-${image}-${TAG}"
112+
output="${tmp_dir}/${prefix}-${image}-${TAG}.sarif"
113+
114+
if ! docker image inspect "$image_ref" >/dev/null 2>&1; then
115+
echo "Image '$image_ref' does not exist locally; skipping" >&2
116+
continue
117+
fi
118+
119+
old_tmpdir="${TMPDIR:-}"
120+
export TMPDIR="$trivy_tmp_dir"
121+
122+
# The timeout is set to 15 minutes because in Java images it can take a while
123+
# to scan JAR files for vulnerabilities.
124+
run_trace $DRY_RUN trivy image \
125+
--severity CRITICAL,HIGH \
126+
--format sarif \
127+
--output "$output" \
128+
--timeout 15m0s \
129+
"$image_ref" 2>&1 | indent
130+
131+
if [ "$old_tmpdir" = "" ]; then
132+
unset TMPDIR
133+
else
134+
export TMPDIR="$old_tmpdir"
135+
fi
136+
137+
if [ $DRY_RUN = true ]; then
138+
continue
139+
fi
140+
141+
if [ ! -f "$output" ]; then
142+
echo "No SARIF output found for image '$image_ref' at '$output'" >&2
143+
exit 1
144+
fi
145+
146+
# Do substitutions to add extra details to every message. Without these
147+
# substitutions, most messages won't have any information about which image
148+
# the vulnerability was found in.
149+
jq \
150+
".runs[].tool.driver.name |= \"Trivy ${image_name}\"" \
151+
"$output" >"$output.tmp"
152+
mv "$output.tmp" "$output"
153+
jq \
154+
".runs[].results[].locations[].physicalLocation.artifactLocation.uri |= \"${image_name}/\" + ." \
155+
"$output" >"$output.tmp"
156+
mv "$output.tmp" "$output"
157+
jq \
158+
".runs[].results[].locations[].message.text |= \"${image_name}: \" + ." \
159+
"$output" >"$output.tmp"
160+
mv "$output.tmp" "$output"
161+
done
158162
done
159163

160164
# Merge all SARIF files into one.

0 commit comments

Comments
 (0)