Skip to content

Commit 6be6276

Browse files
Update feature-versions script to handle both docker images and docker features (#235)
1 parent 80b8fe7 commit 6be6276

File tree

6 files changed

+41
-19
lines changed

6 files changed

+41
-19
lines changed

feature-versions/state.json

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
11
{
22
"ghcr.io/devcontainers/features/aws-cli": {
33
"tag": "1",
4-
"installed": "@sha256:bbc9fd513c22e331953126c75ad7b2ed1f9044f1cd5890b7073b634810459b18"
4+
"installed": "sha256:bbc9fd513c22e331953126c75ad7b2ed1f9044f1cd5890b7073b634810459b18",
5+
"filter": ".*\\/\\.devcontainer\\.json"
56
},
67
"ghcr.io/devcontainers/features/java": {
78
"tag": "1",
8-
"installed": "@sha256:df67d6ff6e9cdd858207ae9e92a99ddb88384b789f79eecd6f873216e951d286"
9+
"installed": "sha256:df67d6ff6e9cdd858207ae9e92a99ddb88384b789f79eecd6f873216e951d286",
10+
"filter": ".*\\/\\.devcontainer\\.json"
911
},
1012
"ghcr.io/dhoeric/features/google-cloud-cli": {
1113
"tag": "1",
12-
"installed": "@sha256:fa5d894718825c5ad8009ac8f2c9f0cea3d1661eb108a9d465cba9f3fc48965f"
14+
"installed": "sha256:fa5d894718825c5ad8009ac8f2c9f0cea3d1661eb108a9d465cba9f3fc48965f",
15+
"filter": ".*\\/\\.devcontainer\\.json"
1316
},
1417
"ghcr.io/rocker-org/devcontainer-features/r-packages": {
1518
"tag": "1",
16-
"installed": "@sha256:1a4ec64c4d2060e78e9c812bd3b3622c7e008465d566a2781c0e2b17a82592e5"
19+
"installed": "sha256:1a4ec64c4d2060e78e9c812bd3b3622c7e008465d566a2781c0e2b17a82592e5",
20+
"filter": ".*\\/\\.devcontainer\\.json"
1721
},
1822
"ghcr.io/devcontainers/features/common-utils": {
1923
"tag": "2",
20-
"installed": "@sha256:00fd45550f578d9d515044d9e2226e908dbc3d7aa6fcb9dee4d8bdb60be114cf"
24+
"installed": "sha256:00fd45550f578d9d515044d9e2226e908dbc3d7aa6fcb9dee4d8bdb60be114cf",
25+
"filter": ".*\\/\\.devcontainer\\.json"
26+
},
27+
"us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-wondershaper": {
28+
"tag": "ov-prod",
29+
"installed": "sha256:534566080902a5b52d7c21d09cd3a487a160241f90f574a623a95a03b5e50386",
30+
"filter": ".*\\/docker-compose.yaml"
31+
},
32+
"us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-jupyter-extension-builder": {
33+
"tag": "ov-prod",
34+
"installed": "sha256:10896c245e1329f6fcbc37c7253d654d3b7dd65cf4c50975b27fe55e40dcc69f",
35+
"filter": ".*\\/Dockerfile"
36+
},
37+
"us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-aou-jupyter": {
38+
"tag": "ov-prod",
39+
"installed": "sha256:c18c4f2069f123d2436f28e2e51363a69b109ae4151c6d53d0a7348b5e437263",
40+
"filter": ".*\\/Dockerfile"
2141
}
2242
}

feature-versions/update.sh

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,25 @@ readonly STATE_FILE
1212
STATE="$(cat "$STATE_FILE")"
1313
readonly STATE
1414

15-
for FEATURE in $(echo "$STATE" | jq -r 'keys | .[]'); do
16-
echo "Processing feature: $FEATURE"
17-
INSTALLED="$FEATURE$(jq -r --arg feat "$FEATURE" '.[$feat].installed' <<< "$STATE")"
18-
LATEST="$(devcontainer features info manifest "$FEATURE" --output-format=json | jq -r '.canonicalId')"
15+
for IMAGE in $(echo "$STATE" | jq -r 'keys | .[]'); do
16+
echo "Processing image: $IMAGE"
17+
TAG="$(jq -r --arg feat "$IMAGE" '.[$feat].tag' <<< "$STATE")"
18+
FILTER="$(jq -r --arg feat "$IMAGE" '.[$feat].filter' <<< "$STATE")"
19+
INSTALLED="$IMAGE@$(jq -r --arg feat "$IMAGE" '.[$feat].installed' <<< "$STATE")"
20+
LATEST="$IMAGE@$(docker buildx imagetools inspect "$IMAGE:$TAG" | grep "Digest:" | awk '{print $2}')"
1921

2022
if [ "$INSTALLED" != "$LATEST" ]; then
21-
echo "Updating $FEATURE from $INSTALLED to $LATEST"
23+
echo "Updating $IMAGE from $INSTALLED to $LATEST"
2224

2325
pushd "$SRC_DIR"
24-
find . -name ".devcontainer.json" -print0 | xargs -0L1 sed -i "s|\"$INSTALLED\"|\"$LATEST\"|g"
26+
find . -regex "$FILTER" -print0 | xargs -0L1 sed -i "s|$INSTALLED|$LATEST|g"
2527
popd
2628

27-
LATEST_TAG="@$(echo "$LATEST" | cut -d'@' -f2)"
28-
NEW_STATE="$(jq --arg feat "$FEATURE" --arg latest "$LATEST_TAG" '.[$feat].installed = $latest' "$STATE_FILE")"
29+
LATEST_TAG="$(echo "$LATEST" | cut -d'@' -f2)"
30+
NEW_STATE="$(jq --arg feat "$IMAGE" --arg latest "$LATEST_TAG" '.[$feat].installed = $latest' "$STATE_FILE")"
2931
cat <<< "$NEW_STATE" > "$STATE_FILE"
3032
else
31-
echo "$FEATURE is already up to date."
33+
echo "$IMAGE is already up to date."
3234
fi
3335

3436
echo ""

src/jupyter-aou/build/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the custom extension
2-
FROM us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-jupyter-extension-builder@sha256:70ba6449275a581059f2f851f44bb8e4a1e5d42e73ec512af362e9de0618cf2f AS extension-builder
2+
FROM us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-jupyter-extension-builder@sha256:10896c245e1329f6fcbc37c7253d654d3b7dd65cf4c50975b27fe55e40dcc69f AS extension-builder
33

44
COPY extension /extension
55
# Original extension is https://github.com/QuantStack/jupyterlab-snippets;
@@ -11,7 +11,7 @@ ADD https://github.com/darpan097/jupyterlab-snippets.git#a27c8429d2cfaf7aa9e4cad
1111

1212
RUN /build.sh /extension /dist
1313

14-
FROM us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-aou-jupyter@sha256:6375f16454add4980acf83c75b70f6c7fce8668a674d2260a1ff0d20886ce60e
14+
FROM us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-aou-jupyter@sha256:c18c4f2069f123d2436f28e2e51363a69b109ae4151c6d53d0a7348b5e437263
1515

1616
COPY snippets $JUPYTER_USER_HOME_DIR/.local/share/jupyter/snippets
1717

src/jupyter-aou/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ services:
2323
# TODO(PHP-87353): Add remotefuse back. See https://github.com/verily-src/workbench-app-devcontainers/pull/227
2424
wondershaper:
2525
container_name: "wondershaper"
26-
image: "us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-wondershaper@sha256:dd9df1811b9d15f4f8d95b6e515a2371e12d238240b8ef7359be77d961e79e3a"
26+
image: "us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-wondershaper@sha256:534566080902a5b52d7c21d09cd3a487a160241f90f574a623a95a03b5e50386"
2727
restart: always
2828
network_mode: "host"
2929
cap_add:

src/nemo_jupyter_aou/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ services:
2222
command: jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --LabApp.token=''
2323
wondershaper:
2424
container_name: "wondershaper"
25-
image: "us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-wondershaper@sha256:dd9df1811b9d15f4f8d95b6e515a2371e12d238240b8ef7359be77d961e79e3a"
25+
image: "us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-wondershaper@sha256:534566080902a5b52d7c21d09cd3a487a160241f90f574a623a95a03b5e50386"
2626
restart: always
2727
network_mode: "host"
2828
cap_add:

src/workbench-jupyter-parabricks-aou/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ services:
2222
command: ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--LabApp.token=''"]
2323
wondershaper:
2424
container_name: "wondershaper"
25-
image: "us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-wondershaper@sha256:dd9df1811b9d15f4f8d95b6e515a2371e12d238240b8ef7359be77d961e79e3a"
25+
image: "us-west2-docker.pkg.dev/shared-pub-buckets-94mvrf/workbench-artifacts/app-wondershaper@sha256:534566080902a5b52d7c21d09cd3a487a160241f90f574a623a95a03b5e50386"
2626
restart: always
2727
network_mode: "host"
2828
cap_add:

0 commit comments

Comments
 (0)