Skip to content
This repository was archived by the owner on Jun 22, 2024. It is now read-only.

Commit 6aa3b6f

Browse files
Merge pull request #11 from seleniumhq-community/manifest-tagging
Using docker manifest to tag the multi arch images with browser, driver, and selenium versions. This also fixes #7
2 parents 9afad2d + f639da0 commit 6aa3b6f

File tree

8 files changed

+110
-27
lines changed

8 files changed

+110
-27
lines changed

Makefile

+7-7
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,13 @@ tag_and_push_multi_arch_firefox_images:
250250
./tag_and_push_multi-arch_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox
251251

252252
tag_multi_arch_latest:
253-
docker tag $(NAME)/base:$(TAG_VERSION) $(NAME)/base:latest
254-
docker tag $(NAME)/hub:$(TAG_VERSION) $(NAME)/hub:latest
255-
docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:latest
256-
docker tag $(NAME)/node-chromium:$(TAG_VERSION) $(NAME)/node-chromium:latest
257-
docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:latest
258-
docker tag $(NAME)/standalone-chromium:$(TAG_VERSION) $(NAME)/standalone-chromium:latest
259-
docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:latest
253+
./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) base latest
254+
./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) hub latest
255+
./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) node-base latest
256+
./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) node-chromium latest
257+
./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) node-firefox latest
258+
./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) standalone-chromium latest
259+
./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) standalone-firefox latest
260260

261261
release_latest:
262262
docker push $(NAME)/base:latest

NodeChromium/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED.
33
# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE
44
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5-
FROM seleniarm/node-base:4.1.3-20220331
6-
LABEL authors=SeleniumHQ,sj26,jamesmortensen
5+
FROM seleniarm/node-base:4.1.4-20220429
6+
LABEL authors=SeleniumHQ
77

88
USER root
99

NodeFirefox/Dockerfile

+9-7
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED.
33
# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE
44
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5-
FROM seleniarm/node-base:4.1.3-20220331
6-
LABEL authors=SeleniumHQ,sj26,jamesmortensen
5+
FROM seleniarm/node-base:4.1.4-20220429
6+
LABEL authors=SeleniumHQ
77

88
ARG TARGETARCH
99
ARG TARGETVARIANT
1010

11+
ARG GECKODRIVER_VERSION=0.31.0
12+
1113
USER root
1214

1315
#=========
@@ -19,11 +21,11 @@ USER root
1921
# && apt-get -qqy install firefox libavcodec-extra \
2022
# && rm -rf /var/lib/apt/lists/* /var/cache/apt/*
2123

22-
# Temporarily installing Firefox 96.0.3 from snapshots since 98.0.2 is broken on arm64
24+
# Pulling Firefox from Debian Snapshots so we can control which version we use as latest
2325
RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list \
2426
&& apt-get update -qqy \
2527
&& apt-get install libavcodec-extra -y \
26-
&& wget https://snapshot.debian.org/archive/debian/20220209T093507Z/pool/main/f/firefox/firefox_96.0.3-1_`dpkg --print-architecture`.deb -O firefox.deb \
28+
&& wget https://snapshot.debian.org/archive/debian/20220418T084218Z/pool/main/f/firefox/firefox_99.0-1_`dpkg --print-architecture`.deb -O firefox.deb \
2729
&& apt install ./firefox.deb -y \
2830
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/* ./firefox.deb
2931

@@ -40,11 +42,11 @@ RUN if [ $TARGETARCH = "arm" ] && [ $TARGETVARIANT = "v7" ]; then \
4042
exit 1 ; \
4143
fi ; \
4244
if [ "$ARCH" = "arm64" ]; then \
43-
wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/jamesmortensen/geckodriver-arm-binaries/releases/download/v0.30.0/geckodriver-v0.30.0-linux-aarch64.tar.gz ; \
45+
wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/jamesmortensen/geckodriver-arm-binaries/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux-aarch64.tar.gz ; \
4446
elif [ "$ARCH" = "armhf" ]; then \
45-
wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/jamesmortensen/geckodriver-arm-binaries/releases/download/v0.30.0/geckodriver-v0.30.0-linux-armv7l.tar.gz ; \
47+
wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/jamesmortensen/geckodriver-arm-binaries/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux-armv7l.tar.gz ; \
4648
else \
47-
wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz ; \
49+
wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux64.tar.gz ; \
4850
fi ; \
4951
tar -C /tmp -zxf /tmp/geckodriver.tar.gz ; \
5052
rm /tmp/geckodriver.tar.gz ; \

StandaloneChromium/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED.
33
# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE
44
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5-
FROM seleniarm/node-chromium:4.1.3-20220331
6-
LABEL authors=SeleniumHQ,sj26,jamesmortensen
5+
FROM seleniarm/node-chromium:4.1.4-20220429
6+
LABEL authors=SeleniumHQ
77

88
USER 1200
99

StandaloneFirefox/Dockerfile

+4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED.
33
# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE
44
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5+
<<<<<<< HEAD
6+
FROM seleniarm/node-firefox:4.1.4-20220429
7+
=======
58
FROM selenium/node-firefox:4.2.1-20220531
9+
>>>>>>> trunk
610
LABEL authors=SeleniumHQ
711

812
USER 1200

get-image-sha256-digest.go

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package main
2+
3+
import (
4+
"io/ioutil"
5+
"log"
6+
"net/http"
7+
"fmt"
8+
"encoding/json"
9+
"os"
10+
)
11+
12+
type Latest struct {
13+
Images []struct {
14+
Architecture string `json:"architecture"`
15+
Digest string `json:"digest"`
16+
}
17+
}
18+
19+
20+
func main() {
21+
argLen := len(os.Args)
22+
if argLen < 2 {
23+
showUsage()
24+
os.Exit(1)
25+
}
26+
27+
url := os.Args[1] // https://hub.docker.com/v2/repositories/selenium/standalone-chrome/tags/latest/
28+
resp, err := http.Get(url)
29+
if err != nil {
30+
log.Fatalln(err)
31+
}
32+
33+
body, err := ioutil.ReadAll(resp.Body)
34+
if err != nil {
35+
log.Fatalln(err)
36+
}
37+
38+
var jsonResp Latest
39+
sb := string(body)
40+
json.Unmarshal([]byte(sb), &jsonResp)
41+
42+
for _, image := range jsonResp.Images {
43+
fmt.Printf(image.Architecture + " " + image.Digest + "\n")
44+
}
45+
}
46+
47+
func showUsage() {
48+
fmt.Println(`Usage:
49+
get-image-sha256-digest TAG_URL
50+
51+
TAG_URL -> URL for a container image manifest (Required)
52+
53+
Example Usage:
54+
$ get-image-sha256-digest https://hub.docker.com/v2/repositories/selenium/standalone-chrome/tags/latest/
55+
`)
56+
}

tag-and-push-multi-arch-image.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/bash
2+
3+
VERSION=$1
4+
BUILD_DATE=$2
5+
NAMESPACE="${3:-seleniarm}"
6+
IMAGE=$4
7+
NEW_TAG=$5
8+
9+
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ]; then
10+
echo "Be sure to pass in all of the values"
11+
exit 1
12+
fi
13+
14+
15+
AMD64_DIGEST=`go run get-image-sha256-digest.go https://hub.docker.com/v2/repositories/$NAMESPACE/$IMAGE/tags/$VERSION-$BUILD_DATE/ | grep -w "amd64" | awk '{print $2}'`
16+
ARM_DIGEST=`go run get-image-sha256-digest.go https://hub.docker.com/v2/repositories/$NAMESPACE/$IMAGE/tags/$VERSION-$BUILD_DATE/ | grep -w "arm" | awk '{print $2}'`
17+
ARM64_DIGEST=`go run get-image-sha256-digest.go https://hub.docker.com/v2/repositories/$NAMESPACE/$IMAGE/tags/$VERSION-$BUILD_DATE/ | grep -w "arm64" | awk '{print $2}'`
18+
19+
docker manifest create $NAMESPACE/$IMAGE:$NEW_TAG \
20+
--amend $NAMESPACE/$IMAGE@$AMD64_DIGEST \
21+
--amend $NAMESPACE/$IMAGE@$ARM_DIGEST \
22+
--amend $NAMESPACE/$IMAGE@$ARM64_DIGEST
23+
24+
docker manifest push $NAMESPACE/$IMAGE:$NEW_TAG
25+

tag_and_push_multi-arch_browser_images.sh

+5-9
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,12 @@ chromium)
5454

5555
for chrome_tag in "${CHROME_TAGS[@]}"
5656
do
57-
docker tag ${NAMESPACE}/node-chromium:${TAG_VERSION} ${NAMESPACE}/node-chromium:${chrome_tag}
58-
docker tag ${NAMESPACE}/standalone-chromium:${TAG_VERSION} ${NAMESPACE}/standalone-chromium:${chrome_tag}
5957
if [ "${PUSH_IMAGE}" = true ]; then
60-
docker push ${NAMESPACE}/node-chromium:${chrome_tag}
61-
docker push ${NAMESPACE}/standalone-chromium:${chrome_tag}
58+
sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE node-chromium ${chrome_tag}
59+
sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE standalone-chromium ${chrome_tag}
6260
fi
6361
done
64-
62+
6563
;;
6664
firefox)
6765
FIREFOX_VERSION=$(docker run --rm seleniarm/node-firefox:${TAG_VERSION} firefox --version | awk '{print $3}')
@@ -97,11 +95,9 @@ firefox)
9795

9896
for firefox_tag in "${FIREFOX_TAGS[@]}"
9997
do
100-
docker tag ${NAMESPACE}/node-firefox:${TAG_VERSION} ${NAMESPACE}/node-firefox:${firefox_tag}
101-
docker tag ${NAMESPACE}/standalone-firefox:${TAG_VERSION} ${NAMESPACE}/standalone-firefox:${firefox_tag}
10298
if [ "${PUSH_IMAGE}" = true ]; then
103-
docker push ${NAMESPACE}/node-firefox:${firefox_tag}
104-
docker push ${NAMESPACE}/standalone-firefox:${firefox_tag}
99+
sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE node-firefox ${firefox_tag}
100+
sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE standalone-firefox ${firefox_tag}
105101
fi
106102
done
107103

0 commit comments

Comments
 (0)