* [PATCH 0/3] Switch to own isar-docker image @ 2023-03-07 4:36 Uladzimir Bely 2023-03-07 4:36 ` [PATCH 1/3] testsuite: Dockerfile for " Uladzimir Bely ` (3 more replies) 0 siblings, 4 replies; 13+ messages in thread From: Uladzimir Bely @ 2023-03-07 4:36 UTC (permalink / raw) To: isar-users In comparison with previously used kas-isar image, switch to own isar-docker one, that better fit CI needs: - Avocado testsuite preinstalled; - Qemu-system packages for run tests preinstalled; - Potentially, avocado can be run directly, without ci_build.sh. Uladzimir Bely (3): testsuite: Dockerfile for isar-docker image testsuite: Add README for isar-docker gitlab-ci: Switch to own isar-docker image .gitlab-ci.yml | 3 +- testsuite/dockerdata/.dockerignore | 3 + testsuite/dockerdata/Dockerfile | 48 ++++++ testsuite/dockerdata/README.md | 19 +++ testsuite/dockerdata/container-entrypoint | 9 ++ testsuite/dockerdata/contrib/oe-git-proxy | 187 ++++++++++++++++++++++ 6 files changed, 268 insertions(+), 1 deletion(-) create mode 100644 testsuite/dockerdata/.dockerignore create mode 100644 testsuite/dockerdata/Dockerfile create mode 100644 testsuite/dockerdata/README.md create mode 100755 testsuite/dockerdata/container-entrypoint create mode 100755 testsuite/dockerdata/contrib/oe-git-proxy -- 2.20.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/3] testsuite: Dockerfile for isar-docker image 2023-03-07 4:36 [PATCH 0/3] Switch to own isar-docker image Uladzimir Bely @ 2023-03-07 4:36 ` Uladzimir Bely 2023-03-09 7:57 ` Schaffner, Tobias 2023-03-07 4:36 ` [PATCH 2/3] testsuite: Add README for isar-docker Uladzimir Bely ` (2 subsequent siblings) 3 siblings, 1 reply; 13+ messages in thread From: Uladzimir Bely @ 2023-03-07 4:36 UTC (permalink / raw) To: isar-users Add dockerfile and related files for generating isar-docker image supposed to be used in docker-based CI systems. Signed-off-by: Uladzimir Bely <ubely@ilbers.de> --- testsuite/dockerdata/.dockerignore | 2 + testsuite/dockerdata/Dockerfile | 48 ++++++ testsuite/dockerdata/container-entrypoint | 9 ++ testsuite/dockerdata/contrib/oe-git-proxy | 187 ++++++++++++++++++++++ 4 files changed, 246 insertions(+) create mode 100644 testsuite/dockerdata/.dockerignore create mode 100644 testsuite/dockerdata/Dockerfile create mode 100755 testsuite/dockerdata/container-entrypoint create mode 100755 testsuite/dockerdata/contrib/oe-git-proxy diff --git a/testsuite/dockerdata/.dockerignore b/testsuite/dockerdata/.dockerignore new file mode 100644 index 00000000..6e19512a --- /dev/null +++ b/testsuite/dockerdata/.dockerignore @@ -0,0 +1,2 @@ +.dockerignore +Dockerfile diff --git a/testsuite/dockerdata/Dockerfile b/testsuite/dockerdata/Dockerfile new file mode 100644 index 00000000..7372c752 --- /dev/null +++ b/testsuite/dockerdata/Dockerfile @@ -0,0 +1,48 @@ +FROM debian:bullseye-slim as isar-docker + +ARG TARGETPLATFORM +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -y locales && \ + localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +ENV LANG=en_US.utf8 +ENV LC_ALL=en_US.UTF-8 + +# Isar main dependencies +RUN apt-get install -y -f --no-install-recommends \ + binfmt-support bzip2 debootstrap dosfstools dpkg-dev gettext-base \ + git mtools parted python3 quilt qemu-user-static reprepro sudo \ + unzip xz-utils git-buildpackage pristine-tar sbuild schroot zstd \ + python3-distutils \ + umoci skopeo + +# Isar testsuite dependencies +RUN apt-get install --no-install-recommends -y \ + python3-pip && \ + pip3 --proxy=$https_proxy install avocado-framework==100.1 && \ + rm -rf $(pip3 cache dir) && \ + apt-get install -y -f --no-install-recommends \ + qemu-system ovmf + +RUN apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY contrib/oe-git-proxy /usr/bin/ +ENV GIT_PROXY_COMMAND="oe-git-proxy" \ + NO_PROXY="*" + +RUN echo "builder ALL=NOPASSWD: ALL" > /etc/sudoers.d/builder-nopasswd && \ + chmod 660 /etc/sudoers.d/builder-nopasswd && \ + echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy\"" \ + > /etc/sudoers.d/env_keep && chmod 660 /etc/sudoers.d/env_keep + +RUN useradd builder --user-group --create-home --home-dir /builder && \ + sbuild-adduser builder >/dev/null 2>/dev/null + +COPY container-entrypoint / + +USER builder + +ENTRYPOINT ["/container-entrypoint"] diff --git a/testsuite/dockerdata/container-entrypoint b/testsuite/dockerdata/container-entrypoint new file mode 100755 index 00000000..6af07932 --- /dev/null +++ b/testsuite/dockerdata/container-entrypoint @@ -0,0 +1,9 @@ +#!/bin/bash + +sudo update-binfmts --enable && [ -f /proc/sys/fs/binfmt_misc/status ] + +if [ -n "$1" ]; then + exec "$@" +else + exec bash +fi diff --git a/testsuite/dockerdata/contrib/oe-git-proxy b/testsuite/dockerdata/contrib/oe-git-proxy new file mode 100755 index 00000000..aa9b9dc9 --- /dev/null +++ b/testsuite/dockerdata/contrib/oe-git-proxy @@ -0,0 +1,187 @@ +#!/bin/bash + +# oe-git-proxy is a simple tool to be via GIT_PROXY_COMMAND. It uses socat +# to make SOCKS5 or HTTPS proxy connections. +# It uses ALL_PROXY or all_proxy or http_proxy to determine the proxy server, +# protocol, and port. +# It uses NO_PROXY to skip using the proxy for a comma delimited list of +# hosts, host globs (*.example.com), IPs, or CIDR masks (192.168.1.0/24). It +# is known to work with both bash and dash shells. +# +# Example ALL_PROXY values: +# ALL_PROXY=socks://socks.example.com:1080 +# ALL_PROXY=https://proxy.example.com:8080 +# +# Copyright (c) 2013, Intel Corporation. +# +# SPDX-License-Identifier: GPL-2.0-only +# +# AUTHORS +# Darren Hart <dvhart@linux.intel.com> + +# disable pathname expansion, NO_PROXY fields could start with "*" or be it +set -f + +if [ $# -lt 2 -o "$1" = '--help' -o "$1" = '-h' ] ; then + echo 'oe-git-proxy: error: the following arguments are required: host port' + echo 'Usage: oe-git-proxy host port' + echo '' + echo 'OpenEmbedded git-proxy - a simple tool to be used via GIT_PROXY_COMMAND.' + echo 'It uses socat to make SOCKS or HTTPS proxy connections.' + echo 'It uses ALL_PROXY to determine the proxy server, protocol, and port.' + echo 'It uses NO_PROXY to skip using the proxy for a comma delimited list' + echo 'of hosts, host globs (*.example.com), IPs, or CIDR masks (192.168.1.0/24).' + echo 'It is known to work with both bash and dash shells.runs native tools' + echo '' + echo 'arguments:' + echo ' host proxy host to use' + echo ' port proxy port to use' + echo '' + echo 'options:' + echo ' -h, --help show this help message and exit' + echo '' + exit 2 +fi + +# Locate the netcat binary +if [ -z "$SOCAT" ]; then + SOCAT=$(which socat 2>/dev/null) + if [ $? -ne 0 ]; then + echo "ERROR: socat binary not in PATH" 1>&2 + exit 1 + fi +fi +METHOD="" + +# Test for a valid IPV4 quad with optional bitmask +valid_ipv4() { + echo $1 | egrep -q "^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}(/(3[0-2]|[1-2]?[0-9]))?$" + return $? +} + +# Convert an IPV4 address into a 32bit integer +ipv4_val() { + IP="$1" + SHIFT=24 + VAL=0 + for B in $( echo "$IP" | tr '.' ' ' ); do + VAL=$(($VAL+$(($B<<$SHIFT)))) + SHIFT=$(($SHIFT-8)) + done + echo "$VAL" +} + +# Determine if two IPs are equivalent, or if the CIDR contains the IP +match_ipv4() { + CIDR=$1 + IP=$2 + + if [ -z "${IP%%$CIDR}" ]; then + return 0 + fi + + # Determine the mask bitlength + BITS=${CIDR##*/} + [ "$BITS" != "$CIDR" ] || BITS=32 + if [ -z "$BITS" ]; then + return 1 + fi + + IPVAL=$(ipv4_val $IP) + IP2VAL=$(ipv4_val ${CIDR%%/*}) + + # OR in the unmasked bits + for i in $(seq 0 $((32-$BITS))); do + IP2VAL=$(($IP2VAL|$((1<<$i)))) + IPVAL=$(($IPVAL|$((1<<$i)))) + done + + if [ $IPVAL -eq $IP2VAL ]; then + return 0 + fi + return 1 +} + +# Test to see if GLOB matches HOST +match_host() { + HOST=$1 + GLOB=$2 + + if [ -z "${HOST%%*$GLOB}" ]; then + return 0 + fi + + # Match by netmask + if valid_ipv4 $GLOB; then + for HOST_IP in $(getent ahostsv4 $HOST | grep ' STREAM ' | cut -d ' ' -f 1) ; do + if valid_ipv4 $HOST_IP; then + match_ipv4 $GLOB $HOST_IP + if [ $? -eq 0 ]; then + return 0 + fi + fi + done + fi + + return 1 +} + +# If no proxy is set or needed, just connect directly +METHOD="TCP:$1:$2" + +[ -z "${ALL_PROXY}" ] && ALL_PROXY=$all_proxy +[ -z "${ALL_PROXY}" ] && ALL_PROXY=$http_proxy + +if [ -z "$ALL_PROXY" ]; then + exec $SOCAT STDIO $METHOD +fi + +# Connect directly to hosts in NO_PROXY +for H in $( echo "$NO_PROXY" | tr ',' ' ' ); do + if match_host $1 $H; then + exec $SOCAT STDIO $METHOD + fi +done + +# Proxy is necessary, determine protocol, server, and port +# extract protocol +PROTO=${ALL_PROXY%://*} +# strip protocol:// from string +ALL_PROXY=${ALL_PROXY#*://} +# extract host & port parts: +# 1) drop username/password +PROXY=${ALL_PROXY##*@} +# 2) remove optional trailing /? +PROXY=${PROXY%%/*} +# 3) extract optional port +PORT=${PROXY##*:} +if [ "$PORT" = "$PROXY" ]; then + PORT="" +fi +# 4) remove port +PROXY=${PROXY%%:*} + +# extract username & password +PROXYAUTH="${ALL_PROXY%@*}" +[ "$PROXYAUTH" = "$ALL_PROXY" ] && PROXYAUTH= +[ -n "${PROXYAUTH}" ] && PROXYAUTH=",proxyauth=${PROXYAUTH}" + +if [ "$PROTO" = "socks" ] || [ "$PROTO" = "socks4a" ]; then + if [ -z "$PORT" ]; then + PORT="1080" + fi + METHOD="SOCKS4A:$PROXY:$1:$2,socksport=$PORT" +elif [ "$PROTO" = "socks4" ]; then + if [ -z "$PORT" ]; then + PORT="1080" + fi + METHOD="SOCKS4:$PROXY:$1:$2,socksport=$PORT" +else + # Assume PROXY (http, https, etc) + if [ -z "$PORT" ]; then + PORT="8080" + fi + METHOD="PROXY:$PROXY:$1:$2,proxyport=${PORT}${PROXYAUTH}" +fi + +exec $SOCAT STDIO "$METHOD" -- 2.20.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] testsuite: Dockerfile for isar-docker image 2023-03-07 4:36 ` [PATCH 1/3] testsuite: Dockerfile for " Uladzimir Bely @ 2023-03-09 7:57 ` Schaffner, Tobias 2023-03-09 9:05 ` Baurzhan Ismagulov 0 siblings, 1 reply; 13+ messages in thread From: Schaffner, Tobias @ 2023-03-09 7:57 UTC (permalink / raw) To: Uladzimir Bely, isar-users On 07.03.23 05:36, Uladzimir Bely wrote: > Add dockerfile and related files for generating isar-docker image > supposed to be used in docker-based CI systems. > > Signed-off-by: Uladzimir Bely <ubely@ilbers.de> > --- > testsuite/dockerdata/.dockerignore | 2 + > testsuite/dockerdata/Dockerfile | 48 ++++++ > testsuite/dockerdata/container-entrypoint | 9 ++ > testsuite/dockerdata/contrib/oe-git-proxy | 187 ++++++++++++++++++++++ > 4 files changed, 246 insertions(+) > create mode 100644 testsuite/dockerdata/.dockerignore > create mode 100644 testsuite/dockerdata/Dockerfile > create mode 100755 testsuite/dockerdata/container-entrypoint > create mode 100755 testsuite/dockerdata/contrib/oe-git-proxy > > diff --git a/testsuite/dockerdata/.dockerignore b/testsuite/dockerdata/.dockerignore > new file mode 100644 > index 00000000..6e19512a > --- /dev/null > +++ b/testsuite/dockerdata/.dockerignore > @@ -0,0 +1,2 @@ > +.dockerignore > +Dockerfile > diff --git a/testsuite/dockerdata/Dockerfile b/testsuite/dockerdata/Dockerfile > new file mode 100644 > index 00000000..7372c752 > --- /dev/null > +++ b/testsuite/dockerdata/Dockerfile > @@ -0,0 +1,48 @@ > +FROM debian:bullseye-slim as isar-docker Why not choose kas-isar as parent image and just add the CI specific needs? Is there a reason why you want to maintain this a second time? Best, Tobias > + > +ARG TARGETPLATFORM > +ARG DEBIAN_FRONTEND=noninteractive > + > +RUN apt-get update && \ > + apt-get install -y locales && \ > + localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 > + > +ENV LANG=en_US.utf8 > +ENV LC_ALL=en_US.UTF-8 > + > +# Isar main dependencies > +RUN apt-get install -y -f --no-install-recommends \ > + binfmt-support bzip2 debootstrap dosfstools dpkg-dev gettext-base \ > + git mtools parted python3 quilt qemu-user-static reprepro sudo \ > + unzip xz-utils git-buildpackage pristine-tar sbuild schroot zstd \ > + python3-distutils \ > + umoci skopeo > + > +# Isar testsuite dependencies > +RUN apt-get install --no-install-recommends -y \ > + python3-pip && \ > + pip3 --proxy=$https_proxy install avocado-framework==100.1 && \ > + rm -rf $(pip3 cache dir) && \ > + apt-get install -y -f --no-install-recommends \ > + qemu-system ovmf > + > +RUN apt-get clean && \ > + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* > + > +COPY contrib/oe-git-proxy /usr/bin/ > +ENV GIT_PROXY_COMMAND="oe-git-proxy" \ > + NO_PROXY="*" > + > +RUN echo "builder ALL=NOPASSWD: ALL" > /etc/sudoers.d/builder-nopasswd && \ > + chmod 660 /etc/sudoers.d/builder-nopasswd && \ > + echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy\"" \ > + > /etc/sudoers.d/env_keep && chmod 660 /etc/sudoers.d/env_keep > + > +RUN useradd builder --user-group --create-home --home-dir /builder && \ > + sbuild-adduser builder >/dev/null 2>/dev/null > + > +COPY container-entrypoint / > + > +USER builder > + > +ENTRYPOINT ["/container-entrypoint"] > diff --git a/testsuite/dockerdata/container-entrypoint b/testsuite/dockerdata/container-entrypoint > new file mode 100755 > index 00000000..6af07932 > --- /dev/null > +++ b/testsuite/dockerdata/container-entrypoint > @@ -0,0 +1,9 @@ > +#!/bin/bash > + > +sudo update-binfmts --enable && [ -f /proc/sys/fs/binfmt_misc/status ] > + > +if [ -n "$1" ]; then > + exec "$@" > +else > + exec bash > +fi > diff --git a/testsuite/dockerdata/contrib/oe-git-proxy b/testsuite/dockerdata/contrib/oe-git-proxy > new file mode 100755 > index 00000000..aa9b9dc9 > --- /dev/null > +++ b/testsuite/dockerdata/contrib/oe-git-proxy > @@ -0,0 +1,187 @@ > +#!/bin/bash > + > +# oe-git-proxy is a simple tool to be via GIT_PROXY_COMMAND. It uses socat > +# to make SOCKS5 or HTTPS proxy connections. > +# It uses ALL_PROXY or all_proxy or http_proxy to determine the proxy server, > +# protocol, and port. > +# It uses NO_PROXY to skip using the proxy for a comma delimited list of > +# hosts, host globs (*.example.com), IPs, or CIDR masks (192.168.1.0/24). It > +# is known to work with both bash and dash shells. > +# > +# Example ALL_PROXY values: > +# ALL_PROXY=socks://socks.example.com:1080 > +# ALL_PROXY=https://proxy.example.com:8080 > +# > +# Copyright (c) 2013, Intel Corporation. > +# > +# SPDX-License-Identifier: GPL-2.0-only > +# > +# AUTHORS > +# Darren Hart <dvhart@linux.intel.com> > + > +# disable pathname expansion, NO_PROXY fields could start with "*" or be it > +set -f > + > +if [ $# -lt 2 -o "$1" = '--help' -o "$1" = '-h' ] ; then > + echo 'oe-git-proxy: error: the following arguments are required: host port' > + echo 'Usage: oe-git-proxy host port' > + echo '' > + echo 'OpenEmbedded git-proxy - a simple tool to be used via GIT_PROXY_COMMAND.' > + echo 'It uses socat to make SOCKS or HTTPS proxy connections.' > + echo 'It uses ALL_PROXY to determine the proxy server, protocol, and port.' > + echo 'It uses NO_PROXY to skip using the proxy for a comma delimited list' > + echo 'of hosts, host globs (*.example.com), IPs, or CIDR masks (192.168.1.0/24).' > + echo 'It is known to work with both bash and dash shells.runs native tools' > + echo '' > + echo 'arguments:' > + echo ' host proxy host to use' > + echo ' port proxy port to use' > + echo '' > + echo 'options:' > + echo ' -h, --help show this help message and exit' > + echo '' > + exit 2 > +fi > + > +# Locate the netcat binary > +if [ -z "$SOCAT" ]; then > + SOCAT=$(which socat 2>/dev/null) > + if [ $? -ne 0 ]; then > + echo "ERROR: socat binary not in PATH" 1>&2 > + exit 1 > + fi > +fi > +METHOD="" > + > +# Test for a valid IPV4 quad with optional bitmask > +valid_ipv4() { > + echo $1 | egrep -q "^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}(/(3[0-2]|[1-2]?[0-9]))?$" > + return $? > +} > + > +# Convert an IPV4 address into a 32bit integer > +ipv4_val() { > + IP="$1" > + SHIFT=24 > + VAL=0 > + for B in $( echo "$IP" | tr '.' ' ' ); do > + VAL=$(($VAL+$(($B<<$SHIFT)))) > + SHIFT=$(($SHIFT-8)) > + done > + echo "$VAL" > +} > + > +# Determine if two IPs are equivalent, or if the CIDR contains the IP > +match_ipv4() { > + CIDR=$1 > + IP=$2 > + > + if [ -z "${IP%%$CIDR}" ]; then > + return 0 > + fi > + > + # Determine the mask bitlength > + BITS=${CIDR##*/} > + [ "$BITS" != "$CIDR" ] || BITS=32 > + if [ -z "$BITS" ]; then > + return 1 > + fi > + > + IPVAL=$(ipv4_val $IP) > + IP2VAL=$(ipv4_val ${CIDR%%/*}) > + > + # OR in the unmasked bits > + for i in $(seq 0 $((32-$BITS))); do > + IP2VAL=$(($IP2VAL|$((1<<$i)))) > + IPVAL=$(($IPVAL|$((1<<$i)))) > + done > + > + if [ $IPVAL -eq $IP2VAL ]; then > + return 0 > + fi > + return 1 > +} > + > +# Test to see if GLOB matches HOST > +match_host() { > + HOST=$1 > + GLOB=$2 > + > + if [ -z "${HOST%%*$GLOB}" ]; then > + return 0 > + fi > + > + # Match by netmask > + if valid_ipv4 $GLOB; then > + for HOST_IP in $(getent ahostsv4 $HOST | grep ' STREAM ' | cut -d ' ' -f 1) ; do > + if valid_ipv4 $HOST_IP; then > + match_ipv4 $GLOB $HOST_IP > + if [ $? -eq 0 ]; then > + return 0 > + fi > + fi > + done > + fi > + > + return 1 > +} > + > +# If no proxy is set or needed, just connect directly > +METHOD="TCP:$1:$2" > + > +[ -z "${ALL_PROXY}" ] && ALL_PROXY=$all_proxy > +[ -z "${ALL_PROXY}" ] && ALL_PROXY=$http_proxy > + > +if [ -z "$ALL_PROXY" ]; then > + exec $SOCAT STDIO $METHOD > +fi > + > +# Connect directly to hosts in NO_PROXY > +for H in $( echo "$NO_PROXY" | tr ',' ' ' ); do > + if match_host $1 $H; then > + exec $SOCAT STDIO $METHOD > + fi > +done > + > +# Proxy is necessary, determine protocol, server, and port > +# extract protocol > +PROTO=${ALL_PROXY%://*} > +# strip protocol:// from string > +ALL_PROXY=${ALL_PROXY#*://} > +# extract host & port parts: > +# 1) drop username/password > +PROXY=${ALL_PROXY##*@} > +# 2) remove optional trailing /? > +PROXY=${PROXY%%/*} > +# 3) extract optional port > +PORT=${PROXY##*:} > +if [ "$PORT" = "$PROXY" ]; then > + PORT="" > +fi > +# 4) remove port > +PROXY=${PROXY%%:*} > + > +# extract username & password > +PROXYAUTH="${ALL_PROXY%@*}" > +[ "$PROXYAUTH" = "$ALL_PROXY" ] && PROXYAUTH= > +[ -n "${PROXYAUTH}" ] && PROXYAUTH=",proxyauth=${PROXYAUTH}" > + > +if [ "$PROTO" = "socks" ] || [ "$PROTO" = "socks4a" ]; then > + if [ -z "$PORT" ]; then > + PORT="1080" > + fi > + METHOD="SOCKS4A:$PROXY:$1:$2,socksport=$PORT" > +elif [ "$PROTO" = "socks4" ]; then > + if [ -z "$PORT" ]; then > + PORT="1080" > + fi > + METHOD="SOCKS4:$PROXY:$1:$2,socksport=$PORT" > +else > + # Assume PROXY (http, https, etc) > + if [ -z "$PORT" ]; then > + PORT="8080" > + fi > + METHOD="PROXY:$PROXY:$1:$2,proxyport=${PORT}${PROXYAUTH}" > +fi > + > +exec $SOCAT STDIO "$METHOD" ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] testsuite: Dockerfile for isar-docker image 2023-03-09 7:57 ` Schaffner, Tobias @ 2023-03-09 9:05 ` Baurzhan Ismagulov 2023-03-09 9:14 ` Uladzimir Bely 2023-03-09 11:07 ` Jan Kiszka 0 siblings, 2 replies; 13+ messages in thread From: Baurzhan Ismagulov @ 2023-03-09 9:05 UTC (permalink / raw) To: isar-users; +Cc: Schaffner, Tobias Thanks Tobias for the quick review, On 2023-03-09 07:57, Schaffner, Tobias wrote: > Why not choose kas-isar as parent image and just add the CI specific > needs? Is there a reason why you want to maintain this a second time? Our preferred way would actually be to fix specific versions of avocado and (if necessary) qemu in the kas-isar image and continue using it. The new image was created with the minimal Isar requirements (kas-isar has some 300 MB of additional packages). We'll check kas-isar as parent and let you know. We'll probably need some sync on it, like user ID handling, which image version will be used when, planned updates, etc. With kind regards, Baurzhan ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] testsuite: Dockerfile for isar-docker image 2023-03-09 9:05 ` Baurzhan Ismagulov @ 2023-03-09 9:14 ` Uladzimir Bely 2023-03-09 11:10 ` Jan Kiszka 2023-03-09 11:07 ` Jan Kiszka 1 sibling, 1 reply; 13+ messages in thread From: Uladzimir Bely @ 2023-03-09 9:14 UTC (permalink / raw) To: isar-users In the email from Thursday, 9 March 2023 12:05:02 +03 user Baurzhan Ismagulov wrote: > Thanks Tobias for the quick review, > > On 2023-03-09 07:57, Schaffner, Tobias wrote: > > Why not choose kas-isar as parent image and just add the CI specific > > needs? Is there a reason why you want to maintain this a second time? > > Our preferred way would actually be to fix specific versions of avocado and (if > necessary) qemu in the kas-isar image and continue using it. The new image was > created with the minimal Isar requirements (kas-isar has some 300 MB of > additional packages). We'll check kas-isar as parent and let you know. We'll > probably need some sync on it, like user ID handling, which image version will > be used when, planned updates, etc. > > With kind regards, > Baurzhan > > Yes, the only reason was just to have the image size as small as possible, but enough to build Isar. Our own image with avocado and qemu inside got size of 1.07GB. It's a bit less than 1.29GB we get in case of basing on kas-isar (823MB) with additional testsuite stuff. If size does not matter, it would be even better and easier for us to base on kas-isar, with similar version tagging scheme. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] testsuite: Dockerfile for isar-docker image 2023-03-09 9:14 ` Uladzimir Bely @ 2023-03-09 11:10 ` Jan Kiszka 0 siblings, 0 replies; 13+ messages in thread From: Jan Kiszka @ 2023-03-09 11:10 UTC (permalink / raw) To: Uladzimir Bely, isar-users On 09.03.23 10:14, Uladzimir Bely wrote: > In the email from Thursday, 9 March 2023 12:05:02 +03 user Baurzhan Ismagulov wrote: >> Thanks Tobias for the quick review, >> >> On 2023-03-09 07:57, Schaffner, Tobias wrote: >>> Why not choose kas-isar as parent image and just add the CI specific >>> needs? Is there a reason why you want to maintain this a second time? >> >> Our preferred way would actually be to fix specific versions of avocado and (if >> necessary) qemu in the kas-isar image and continue using it. The new image was >> created with the minimal Isar requirements (kas-isar has some 300 MB of >> additional packages). We'll check kas-isar as parent and let you know. We'll >> probably need some sync on it, like user ID handling, which image version will >> be used when, planned updates, etc. >> >> With kind regards, >> Baurzhan >>wise >> > > Yes, the only reason was just to have the image size as small as possible, but enough to build Isar. Our own image with avocado and qemu inside got size of 1.07GB. It's a bit less than 1.29GB we get in case of basing on kas-isar (823MB) with additional testsuite stuff. > If size does not matter, it would be even better and easier for us to base on kas-isar, with similar version tagging scheme. kas-isar is the minimal image needed for building Isar, that's its purpose. You can read that up in the image description, and we maintain that description in lock-step with Isar's documentation (at least that is the goal). Again, trying to roll your own for testing purposes only will not be beneficial for the ecosystem. Jan -- Siemens AG, Technology Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] testsuite: Dockerfile for isar-docker image 2023-03-09 9:05 ` Baurzhan Ismagulov 2023-03-09 9:14 ` Uladzimir Bely @ 2023-03-09 11:07 ` Jan Kiszka 1 sibling, 0 replies; 13+ messages in thread From: Jan Kiszka @ 2023-03-09 11:07 UTC (permalink / raw) To: isar-users, Tobias On 09.03.23 10:05, Baurzhan Ismagulov wrote: > Thanks Tobias for the quick review, > > On 2023-03-09 07:57, Schaffner, Tobias wrote: >> Why not choose kas-isar as parent image and just add the CI specific >> needs? Is there a reason why you want to maintain this a second time? > > Our preferred way would actually be to fix specific versions of avocado and (if > necessary) qemu in the kas-isar image and continue using it. The new image was > created with the minimal Isar requirements (kas-isar has some 300 MB of > additional packages). We'll check kas-isar as parent and let you know. We'll > probably need some sync on it, like user ID handling, which image version will > be used when, planned updates, etc. Given that most Isar users are also kas-isar users, it would not be an elegant decision to create and maintain an own base image for Isar CI purposes only. Jan -- Siemens AG, Technology Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/3] testsuite: Add README for isar-docker 2023-03-07 4:36 [PATCH 0/3] Switch to own isar-docker image Uladzimir Bely 2023-03-07 4:36 ` [PATCH 1/3] testsuite: Dockerfile for " Uladzimir Bely @ 2023-03-07 4:36 ` Uladzimir Bely 2023-03-07 4:36 ` [PATCH 3/3] gitlab-ci: Switch to own isar-docker image Uladzimir Bely 2023-03-14 13:49 ` [PATCH 0/3] " Henning Schild 3 siblings, 0 replies; 13+ messages in thread From: Uladzimir Bely @ 2023-03-07 4:36 UTC (permalink / raw) To: isar-users Document isar-docker image prepare and publish steps Signed-off-by: Uladzimir Bely <ubely@ilbers.de> --- testsuite/dockerdata/.dockerignore | 1 + testsuite/dockerdata/README.md | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 testsuite/dockerdata/README.md diff --git a/testsuite/dockerdata/.dockerignore b/testsuite/dockerdata/.dockerignore index 6e19512a..d06a06ab 100644 --- a/testsuite/dockerdata/.dockerignore +++ b/testsuite/dockerdata/.dockerignore @@ -1,2 +1,3 @@ .dockerignore Dockerfile +README.md diff --git a/testsuite/dockerdata/README.md b/testsuite/dockerdata/README.md new file mode 100644 index 00000000..aae9ddb7 --- /dev/null +++ b/testsuite/dockerdata/README.md @@ -0,0 +1,19 @@ +# Creating image + +``` +export version="0.1" +cd <isar_dir>/testsuite/dockerdata +docker build -t ghcr.io/ilbers/docker-isar:${version} . +``` + +# Pushing the image to docker hub + +- Configure github token (classic) with `write:packages` permissions. + +- Use it for uploading docker image: + +``` +docker push ghcr.io/ilbers/docker-isar:${version} +``` + +- Make the uploaded package public -- 2.20.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/3] gitlab-ci: Switch to own isar-docker image 2023-03-07 4:36 [PATCH 0/3] Switch to own isar-docker image Uladzimir Bely 2023-03-07 4:36 ` [PATCH 1/3] testsuite: Dockerfile for " Uladzimir Bely 2023-03-07 4:36 ` [PATCH 2/3] testsuite: Add README for isar-docker Uladzimir Bely @ 2023-03-07 4:36 ` Uladzimir Bely 2023-03-14 13:49 ` [PATCH 0/3] " Henning Schild 3 siblings, 0 replies; 13+ messages in thread From: Uladzimir Bely @ 2023-03-07 4:36 UTC (permalink / raw) To: isar-users Instead of using ghcr.io/siemens/kas/kas-isar image for CI, use the own minimal one including everything required to run Isar testsuite. Signed-off-by: Uladzimir Bely <ubely@ilbers.de> --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eb38be54..1682692d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,5 @@ -image: ghcr.io/siemens/kas/kas-isar:3.0.2 +default: + image: ghcr.io/ilbers/docker-isar:0.1 variables: GIT_STRATEGY: clone -- 2.20.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/3] Switch to own isar-docker image 2023-03-07 4:36 [PATCH 0/3] Switch to own isar-docker image Uladzimir Bely ` (2 preceding siblings ...) 2023-03-07 4:36 ` [PATCH 3/3] gitlab-ci: Switch to own isar-docker image Uladzimir Bely @ 2023-03-14 13:49 ` Henning Schild 2023-03-14 14:00 ` Jan Kiszka 3 siblings, 1 reply; 13+ messages in thread From: Henning Schild @ 2023-03-14 13:49 UTC (permalink / raw) To: Uladzimir Bely; +Cc: isar-users I will not use some container from ilbers. If avocado turns out to be a problem, we can switch to pytest or something else that is easy to install. But please not yet another container to cover up the problems. Henning Am Tue, 7 Mar 2023 05:36:46 +0100 schrieb Uladzimir Bely <ubely@ilbers.de>: > In comparison with previously used kas-isar image, switch to own > isar-docker one, that better fit CI needs: > - Avocado testsuite preinstalled; > - Qemu-system packages for run tests preinstalled; > - Potentially, avocado can be run directly, without ci_build.sh. > > Uladzimir Bely (3): > testsuite: Dockerfile for isar-docker image > testsuite: Add README for isar-docker > gitlab-ci: Switch to own isar-docker image > > .gitlab-ci.yml | 3 +- > testsuite/dockerdata/.dockerignore | 3 + > testsuite/dockerdata/Dockerfile | 48 ++++++ > testsuite/dockerdata/README.md | 19 +++ > testsuite/dockerdata/container-entrypoint | 9 ++ > testsuite/dockerdata/contrib/oe-git-proxy | 187 > ++++++++++++++++++++++ 6 files changed, 268 insertions(+), 1 > deletion(-) create mode 100644 testsuite/dockerdata/.dockerignore > create mode 100644 testsuite/dockerdata/Dockerfile > create mode 100644 testsuite/dockerdata/README.md > create mode 100755 testsuite/dockerdata/container-entrypoint > create mode 100755 testsuite/dockerdata/contrib/oe-git-proxy > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/3] Switch to own isar-docker image 2023-03-14 13:49 ` [PATCH 0/3] " Henning Schild @ 2023-03-14 14:00 ` Jan Kiszka 2023-03-14 14:25 ` Henning Schild 0 siblings, 1 reply; 13+ messages in thread From: Jan Kiszka @ 2023-03-14 14:00 UTC (permalink / raw) To: Henning Schild, Uladzimir Bely; +Cc: isar-users On 14.03.23 14:49, Henning Schild wrote: > I will not use some container from ilbers. If avocado turns out to be a > problem, we can switch to pytest or something else that is easy to > install. But please not yet another container to cover up the problems. > To be fair, the test env also needs qemu to run certain tests, irrespective of the test framework. But that is something kas will not include into its build-only containers. So, there is extra installation needed. Or an extra container, but that should be based on kas-isar, not duplicating its base work. Jan > Henning > > Am Tue, 7 Mar 2023 05:36:46 +0100 > schrieb Uladzimir Bely <ubely@ilbers.de>: > >> In comparison with previously used kas-isar image, switch to own >> isar-docker one, that better fit CI needs: >> - Avocado testsuite preinstalled; >> - Qemu-system packages for run tests preinstalled; >> - Potentially, avocado can be run directly, without ci_build.sh. >> >> Uladzimir Bely (3): >> testsuite: Dockerfile for isar-docker image >> testsuite: Add README for isar-docker >> gitlab-ci: Switch to own isar-docker image >> >> .gitlab-ci.yml | 3 +- >> testsuite/dockerdata/.dockerignore | 3 + >> testsuite/dockerdata/Dockerfile | 48 ++++++ >> testsuite/dockerdata/README.md | 19 +++ >> testsuite/dockerdata/container-entrypoint | 9 ++ >> testsuite/dockerdata/contrib/oe-git-proxy | 187 >> ++++++++++++++++++++++ 6 files changed, 268 insertions(+), 1 >> deletion(-) create mode 100644 testsuite/dockerdata/.dockerignore >> create mode 100644 testsuite/dockerdata/Dockerfile >> create mode 100644 testsuite/dockerdata/README.md >> create mode 100755 testsuite/dockerdata/container-entrypoint >> create mode 100755 testsuite/dockerdata/contrib/oe-git-proxy >> > -- Siemens AG, Technology Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/3] Switch to own isar-docker image 2023-03-14 14:00 ` Jan Kiszka @ 2023-03-14 14:25 ` Henning Schild 2023-03-14 14:28 ` Jan Kiszka 0 siblings, 1 reply; 13+ messages in thread From: Henning Schild @ 2023-03-14 14:25 UTC (permalink / raw) To: Jan Kiszka; +Cc: Uladzimir Bely, isar-users Am Tue, 14 Mar 2023 15:00:53 +0100 schrieb Jan Kiszka <jan.kiszka@siemens.com>: > On 14.03.23 14:49, Henning Schild wrote: > > I will not use some container from ilbers. If avocado turns out to > > be a problem, we can switch to pytest or something else that is > > easy to install. But please not yet another container to cover up > > the problems. > > To be fair, the test env also needs qemu to run certain tests, > irrespective of the test framework. But that is something kas will not > include into its build-only containers. So, there is extra > installation needed. Or an extra container, but that should be based > on kas-isar, not duplicating its base work. At the moment we use kas-isar and install the additional things in a controlled manner. I do not see the problem with that, except for maybe a very neglectable download/install reduction (given what CI does once it starts rolling). There are far better places for optimization, saving time/bandwidth/storage. Of cause kas is not an isar feature and isar can decide on its own which container or if to container ... but in the end we at Siemens will often combine with kas and its containers, so we will use that anyhow ... no matter what the official container will become, kas will have to work as well. Henning > > Jan > > > Henning > > > > Am Tue, 7 Mar 2023 05:36:46 +0100 > > schrieb Uladzimir Bely <ubely@ilbers.de>: > > > >> In comparison with previously used kas-isar image, switch to own > >> isar-docker one, that better fit CI needs: > >> - Avocado testsuite preinstalled; > >> - Qemu-system packages for run tests preinstalled; > >> - Potentially, avocado can be run directly, without ci_build.sh. > >> > >> Uladzimir Bely (3): > >> testsuite: Dockerfile for isar-docker image > >> testsuite: Add README for isar-docker > >> gitlab-ci: Switch to own isar-docker image > >> > >> .gitlab-ci.yml | 3 +- > >> testsuite/dockerdata/.dockerignore | 3 + > >> testsuite/dockerdata/Dockerfile | 48 ++++++ > >> testsuite/dockerdata/README.md | 19 +++ > >> testsuite/dockerdata/container-entrypoint | 9 ++ > >> testsuite/dockerdata/contrib/oe-git-proxy | 187 > >> ++++++++++++++++++++++ 6 files changed, 268 insertions(+), 1 > >> deletion(-) create mode 100644 testsuite/dockerdata/.dockerignore > >> create mode 100644 testsuite/dockerdata/Dockerfile > >> create mode 100644 testsuite/dockerdata/README.md > >> create mode 100755 testsuite/dockerdata/container-entrypoint > >> create mode 100755 testsuite/dockerdata/contrib/oe-git-proxy > >> > > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/3] Switch to own isar-docker image 2023-03-14 14:25 ` Henning Schild @ 2023-03-14 14:28 ` Jan Kiszka 0 siblings, 0 replies; 13+ messages in thread From: Jan Kiszka @ 2023-03-14 14:28 UTC (permalink / raw) To: Henning Schild; +Cc: Uladzimir Bely, isar-users On 14.03.23 15:25, Henning Schild wrote: > Am Tue, 14 Mar 2023 15:00:53 +0100 > schrieb Jan Kiszka <jan.kiszka@siemens.com>: > >> On 14.03.23 14:49, Henning Schild wrote: >>> I will not use some container from ilbers. If avocado turns out to >>> be a problem, we can switch to pytest or something else that is >>> easy to install. But please not yet another container to cover up >>> the problems. >> >> To be fair, the test env also needs qemu to run certain tests, >> irrespective of the test framework. But that is something kas will not >> include into its build-only containers. So, there is extra >> installation needed. Or an extra container, but that should be based >> on kas-isar, not duplicating its base work. > > At the moment we use kas-isar and install the additional things in a > controlled manner. I do not see the problem with that, except for maybe > a very neglectable download/install reduction (given what CI does once > it starts rolling). There are far better places for optimization, > saving time/bandwidth/storage. > > Of cause kas is not an isar feature and isar can decide on its own > which container or if to container ... but in the end we at Siemens > will often combine with kas and its containers, so we will use that > anyhow ... no matter what the official container will become, kas will > have to work as well. Yep, that's exactly why I voted against having an own base container now. Jan -- Siemens AG, Technology Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-03-14 14:28 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-03-07 4:36 [PATCH 0/3] Switch to own isar-docker image Uladzimir Bely 2023-03-07 4:36 ` [PATCH 1/3] testsuite: Dockerfile for " Uladzimir Bely 2023-03-09 7:57 ` Schaffner, Tobias 2023-03-09 9:05 ` Baurzhan Ismagulov 2023-03-09 9:14 ` Uladzimir Bely 2023-03-09 11:10 ` Jan Kiszka 2023-03-09 11:07 ` Jan Kiszka 2023-03-07 4:36 ` [PATCH 2/3] testsuite: Add README for isar-docker Uladzimir Bely 2023-03-07 4:36 ` [PATCH 3/3] gitlab-ci: Switch to own isar-docker image Uladzimir Bely 2023-03-14 13:49 ` [PATCH 0/3] " Henning Schild 2023-03-14 14:00 ` Jan Kiszka 2023-03-14 14:25 ` Henning Schild 2023-03-14 14:28 ` Jan Kiszka
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox