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

Using docker manifest to tag the multi arch images with browser, driver, and selenium versions #11

Merged
merged 4 commits into from
Jun 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions NodeChromium/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
16 changes: 9 additions & 7 deletions NodeFirefox/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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

#=========
Expand All @@ -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

Expand All @@ -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 ; \
Expand Down
4 changes: 2 additions & 2 deletions StandaloneChromium/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 4 additions & 0 deletions StandaloneFirefox/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
56 changes: 56 additions & 0 deletions get-image-sha256-digest.go
Original file line number Diff line number Diff line change
@@ -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/
`)
}
25 changes: 25 additions & 0 deletions tag-and-push-multi-arch-image.sh
Original file line number Diff line number Diff line change
@@ -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

14 changes: 5 additions & 9 deletions tag_and_push_multi-arch_browser_images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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}')
Expand Down Expand Up @@ -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

Expand Down