diff --git a/Makefile b/Makefile index 23189c0168..9e6bd4e500 100644 --- a/Makefile +++ b/Makefile @@ -250,13 +250,13 @@ tag_and_push_multi_arch_firefox_images: ./tag_and_push_multi-arch_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox tag_multi_arch_latest: - docker tag $(NAME)/base:$(TAG_VERSION) $(NAME)/base:latest - docker tag $(NAME)/hub:$(TAG_VERSION) $(NAME)/hub:latest - docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:latest - docker tag $(NAME)/node-chromium:$(TAG_VERSION) $(NAME)/node-chromium:latest - docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:latest - docker tag $(NAME)/standalone-chromium:$(TAG_VERSION) $(NAME)/standalone-chromium:latest - docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:latest + ./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) base latest + ./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) hub latest + ./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) node-base latest + ./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) node-chromium latest + ./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) node-firefox latest + ./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) standalone-chromium latest + ./tag-and-push-multi-arch-image.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) standalone-firefox latest release_latest: docker push $(NAME)/base:latest diff --git a/NodeChromium/Dockerfile b/NodeChromium/Dockerfile index 9908c24ac6..8a80a712bf 100644 --- a/NodeChromium/Dockerfile +++ b/NodeChromium/Dockerfile @@ -2,8 +2,8 @@ # NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED. # PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -FROM seleniarm/node-base:4.1.3-20220331 -LABEL authors=SeleniumHQ,sj26,jamesmortensen +FROM seleniarm/node-base:4.1.4-20220429 +LABEL authors=SeleniumHQ USER root diff --git a/NodeFirefox/Dockerfile b/NodeFirefox/Dockerfile index 3d4e892077..6a30991a96 100644 --- a/NodeFirefox/Dockerfile +++ b/NodeFirefox/Dockerfile @@ -2,12 +2,14 @@ # NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED. # PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -FROM seleniarm/node-base:4.1.3-20220331 -LABEL authors=SeleniumHQ,sj26,jamesmortensen +FROM seleniarm/node-base:4.1.4-20220429 +LABEL authors=SeleniumHQ ARG TARGETARCH ARG TARGETVARIANT +ARG GECKODRIVER_VERSION=0.31.0 + USER root #========= @@ -19,11 +21,11 @@ USER root # && apt-get -qqy install firefox libavcodec-extra \ # && rm -rf /var/lib/apt/lists/* /var/cache/apt/* -# Temporarily installing Firefox 96.0.3 from snapshots since 98.0.2 is broken on arm64 +# Pulling Firefox from Debian Snapshots so we can control which version we use as latest RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list \ && apt-get update -qqy \ && apt-get install libavcodec-extra -y \ - && wget https://snapshot.debian.org/archive/debian/20220209T093507Z/pool/main/f/firefox/firefox_96.0.3-1_`dpkg --print-architecture`.deb -O firefox.deb \ + && wget https://snapshot.debian.org/archive/debian/20220418T084218Z/pool/main/f/firefox/firefox_99.0-1_`dpkg --print-architecture`.deb -O firefox.deb \ && apt install ./firefox.deb -y \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* ./firefox.deb @@ -40,11 +42,11 @@ RUN if [ $TARGETARCH = "arm" ] && [ $TARGETVARIANT = "v7" ]; then \ exit 1 ; \ fi ; \ if [ "$ARCH" = "arm64" ]; then \ - 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 ; \ + 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 ; \ elif [ "$ARCH" = "armhf" ]; then \ - 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 ; \ + 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 ; \ else \ - 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 ; \ + 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 ; \ fi ; \ tar -C /tmp -zxf /tmp/geckodriver.tar.gz ; \ rm /tmp/geckodriver.tar.gz ; \ diff --git a/StandaloneChromium/Dockerfile b/StandaloneChromium/Dockerfile index e8db8f79a1..58b2c33160 100644 --- a/StandaloneChromium/Dockerfile +++ b/StandaloneChromium/Dockerfile @@ -2,8 +2,8 @@ # NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED. # PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -FROM seleniarm/node-chromium:4.1.3-20220331 -LABEL authors=SeleniumHQ,sj26,jamesmortensen +FROM seleniarm/node-chromium:4.1.4-20220429 +LABEL authors=SeleniumHQ USER 1200 diff --git a/StandaloneFirefox/Dockerfile b/StandaloneFirefox/Dockerfile index 92cb2414ba..de371d0065 100644 --- a/StandaloneFirefox/Dockerfile +++ b/StandaloneFirefox/Dockerfile @@ -2,7 +2,11 @@ # NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED. # PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +<<<<<<< HEAD +FROM seleniarm/node-firefox:4.1.4-20220429 +======= FROM selenium/node-firefox:4.2.1-20220531 +>>>>>>> trunk LABEL authors=SeleniumHQ USER 1200 diff --git a/get-image-sha256-digest.go b/get-image-sha256-digest.go new file mode 100644 index 0000000000..d51b58ca5c --- /dev/null +++ b/get-image-sha256-digest.go @@ -0,0 +1,56 @@ +package main + +import ( + "io/ioutil" + "log" + "net/http" + "fmt" + "encoding/json" + "os" +) + +type Latest struct { + Images []struct { + Architecture string `json:"architecture"` + Digest string `json:"digest"` + } +} + + +func main() { + argLen := len(os.Args) + if argLen < 2 { + showUsage() + os.Exit(1) + } + + url := os.Args[1] // https://hub.docker.com/v2/repositories/selenium/standalone-chrome/tags/latest/ + resp, err := http.Get(url) + if err != nil { + log.Fatalln(err) + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Fatalln(err) + } + + var jsonResp Latest + sb := string(body) + json.Unmarshal([]byte(sb), &jsonResp) + + for _, image := range jsonResp.Images { + fmt.Printf(image.Architecture + " " + image.Digest + "\n") + } +} + +func showUsage() { + fmt.Println(`Usage: + get-image-sha256-digest TAG_URL + + TAG_URL -> URL for a container image manifest (Required) + + Example Usage: + $ get-image-sha256-digest https://hub.docker.com/v2/repositories/selenium/standalone-chrome/tags/latest/ + `) +} diff --git a/tag-and-push-multi-arch-image.sh b/tag-and-push-multi-arch-image.sh new file mode 100755 index 0000000000..7e993dced9 --- /dev/null +++ b/tag-and-push-multi-arch-image.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +VERSION=$1 +BUILD_DATE=$2 +NAMESPACE="${3:-seleniarm}" +IMAGE=$4 +NEW_TAG=$5 + +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ]; then + echo "Be sure to pass in all of the values" + exit 1 +fi + + +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}'` +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}'` +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}'` + +docker manifest create $NAMESPACE/$IMAGE:$NEW_TAG \ + --amend $NAMESPACE/$IMAGE@$AMD64_DIGEST \ + --amend $NAMESPACE/$IMAGE@$ARM_DIGEST \ + --amend $NAMESPACE/$IMAGE@$ARM64_DIGEST + +docker manifest push $NAMESPACE/$IMAGE:$NEW_TAG + diff --git a/tag_and_push_multi-arch_browser_images.sh b/tag_and_push_multi-arch_browser_images.sh index a6afd18db7..08d18dba1d 100755 --- a/tag_and_push_multi-arch_browser_images.sh +++ b/tag_and_push_multi-arch_browser_images.sh @@ -54,14 +54,12 @@ chromium) for chrome_tag in "${CHROME_TAGS[@]}" do - docker tag ${NAMESPACE}/node-chromium:${TAG_VERSION} ${NAMESPACE}/node-chromium:${chrome_tag} - docker tag ${NAMESPACE}/standalone-chromium:${TAG_VERSION} ${NAMESPACE}/standalone-chromium:${chrome_tag} if [ "${PUSH_IMAGE}" = true ]; then - docker push ${NAMESPACE}/node-chromium:${chrome_tag} - docker push ${NAMESPACE}/standalone-chromium:${chrome_tag} + sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE node-chromium ${chrome_tag} + sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE standalone-chromium ${chrome_tag} fi done - + ;; firefox) FIREFOX_VERSION=$(docker run --rm seleniarm/node-firefox:${TAG_VERSION} firefox --version | awk '{print $3}') @@ -97,11 +95,9 @@ firefox) for firefox_tag in "${FIREFOX_TAGS[@]}" do - docker tag ${NAMESPACE}/node-firefox:${TAG_VERSION} ${NAMESPACE}/node-firefox:${firefox_tag} - docker tag ${NAMESPACE}/standalone-firefox:${TAG_VERSION} ${NAMESPACE}/standalone-firefox:${firefox_tag} if [ "${PUSH_IMAGE}" = true ]; then - docker push ${NAMESPACE}/node-firefox:${firefox_tag} - docker push ${NAMESPACE}/standalone-firefox:${firefox_tag} + sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE node-firefox ${firefox_tag} + sh tag-and-push-multi-arch-image.sh $VERSION $BUILD_DATE $NAMESPACE standalone-firefox ${firefox_tag} fi done