Compare commits

...
Sign in to create a new pull request.

14 commits

Author SHA1 Message Date
Lumir Balhar
e9e68b05fc Update from the upstream Github repository 2020-07-16 06:51:28 +02:00
Lumir Balhar
6d9be117f9 Remove temporary manual release tag 2020-07-16 06:49:29 +02:00
Lumir Balhar
80e334468f typo fix 2020-06-11 15:41:12 +02:00
Lumir Balhar
22b90968c0 Add release LABEL to fix OSBS tags 2020-06-10 10:03:11 +02:00
Petr "Stone" Hracek
4011cd312a Merge branch 'f31' of ssh://pkgs.fedoraproject.org/container/s2i-core into f31 2020-04-14 16:54:39 +02:00
Petr "Stone" Hracek
a9574f4d07 Enable cwt-generator
Signed-off-by: Petr "Stone" Hracek <phracek@redhat.com>
2020-04-14 16:52:53 +02:00
Lumir Balhar
494e68e7ef Update from upstream github repository 2020-04-09 14:50:18 +02:00
Petr Hracek
3860c499ed Rename section from upstream-to-downstream to betka 2020-03-31 11:22:46 +00:00
10a114cea6 Merge #15 Add bot-cfg.yml file 2020-03-31 09:39:15 +00:00
Petr "Stone" Hracek
24fb227a61 Add bot-cfg.yml file
Sync upstream s2i-core repository to Fedora land

Signed-off-by: Petr "Stone" Hracek <phracek@redhat.com>
2020-03-30 15:19:59 +02:00
Petr Kubat
00edf9f3e2 Pull changes from upstream and rebase for: rebuild for latest whatever
created from upstream commit: c0d5b29a3b3d25c01c7af38243d0d8a026a40399
2020-02-06 09:53:20 +01:00
Lumir Balhar
2ba271be55 Merge branch 'master' into f31 2020-01-15 10:41:39 +01:00
Lumir Balhar
65234a7ce0 Switch to Fedora 31 2019-11-07 09:38:28 +01:00
Petr Kubat
c77c5cbcde Pull changes from upstream and rebase for: rebuild for latest f30 2019-04-10 09:27:06 +02:00
5 changed files with 114 additions and 21 deletions

View file

@ -1,5 +1,5 @@
# This image is the base image for all s2i configurable container images.
FROM registry.fedoraproject.org/fedora:rawhide
FROM registry.fedoraproject.org/fedora:31
ENV SUMMARY="Base image which allows using of source-to-image." \
DESCRIPTION="The s2i-core image provides any images layered on top of it \
@ -40,6 +40,7 @@ ENV \
RUN INSTALL_PKGS="bsdtar \
findutils \
gettext \
glibc-langpack-en \
groff-base \
rsync \
tar \

26
bot-cfg.yml Normal file
View file

@ -0,0 +1,26 @@
version: "1"
betka:
# is betka enabled for this repository
# optional - defaults to false
enabled: true
# optional
notifications:
email_addresses: [phracek@redhat.com]
# Specify if master branch in upstream repository is synced
master_checker: true
# Should pull requests be synced?
# optional
pr_checker: false
# Either 'upstream_branch_name' or 'upstream_git_path' has to be specified
# Branch name which is used for sync
upstream_branch_name: master
# Path to directory with dockerfile withing upstream repository
upstream_git_path: "core"
# Github comment message to enforce sync of a pull request
# required if pr_checker is true otherwise optional
pr_comment_message: "[test]"
# optional
image_url: quay.io/rhscl/cwt-generator

View file

@ -1,4 +1,3 @@
.nh
.TH OpenShift base images (core variant)
.PP
This repository contains Dockerfiles for images which can be used as base images
@ -21,8 +20,6 @@ Normally, SCL requires manual operation to enable the collection you want to use
This is burdensome and can be prone to error.
The OpenShift S2I approach is to set Bash environment variables that
serve to automatically enable the desired collection:
.RS
.IP \(bu 2
\fB\fCBASH\_ENV\fR: enables the collection for all non\-interactive Bash sessions
.IP \(bu 2
@ -30,8 +27,6 @@ serve to automatically enable the desired collection:
.IP \(bu 2
\fB\fCPROMPT\_COMMAND\fR: enables the collection in interactive shell
.RE
.PP
Two examples:
* If you specify \fB\fCBASH\_ENV\fR, then all your \fB\fC#!/bin/bash\fR scripts
@ -91,13 +86,9 @@ $ make build VERSIONS=core TARGET=rhel7
.fi
.RE
.RS
.IP \(bu 2
\fBCentOS7 base image\fP
.RE
.PP
This image is available on DockerHub. To download it run:
@ -130,7 +121,8 @@ on all provided versions of s2i image.\fP
.SH See also
.PP
Dockerfile and other sources are available on https://github.com/sclorg/s2i\-base\-container.
Dockerfile and other sources are available on
\[la]https://github.com/sclorg/s2i-base-container\[ra]\&.
In that repository you also can find another variants of S2I Base Dockerfiles.
The Dockerfile for CentOS is called Dockerfile, the Dockerfile for RHEL7 is called Dockerfile.rhel7,
the Dockerfile for RHEL8 is called Dockerfile.rhel8 and the Dockerfile for Fedora is Dockerfile.fedora.

View file

@ -19,10 +19,12 @@ Variables currently supported:
Maximum amount of user memory in bytes. If this value is set
to the same value as MAX_MEMORY_LIMIT_IN_BYTES, it means that
there is no limit set. The value is taken from
/sys/fs/cgroup/memory/memory.limit_in_bytes
/sys/fs/cgroup/memory/memory.limit_in_bytes for cgroups v1
and from /sys/fs/cgroup/memory.max for cgroups v2
NUMBER_OF_CORES
Number of detected CPU cores that can be used. This value is
calculated from /sys/fs/cgroup/cpuset/cpuset.cpus
calculated from /sys/fs/cgroup/cpuset/cpuset.cpus for cgroups v1
and from /sys/fs/cgroup/cpuset.cpus.effective for cgroups v2
NO_MEMORY_LIMIT
Set to "true" if MEMORY_LIMIT_IN_BYTES is so high that the caller
can act as if no memory limit was set. Undefined otherwise.
@ -46,7 +48,11 @@ def get_memory_limit():
"""
limit = _read_file('/sys/fs/cgroup/memory/memory.limit_in_bytes')
# If first file does not exist, try cgroups v2 file
limit = limit or _read_file('/sys/fs/cgroup/memory.max')
if limit is None or not limit.isdigit():
if limit == 'max':
return 9223372036854775807
print("Warning: Can't detect memory limit from cgroups",
file=sys.stderr)
return None
@ -61,7 +67,11 @@ def get_number_of_cores():
core_count = 0
line = _read_file('/sys/fs/cgroup/cpuset/cpuset.cpus')
# If first file does not exist, try cgroups v2 file
line = line or _read_file('/sys/fs/cgroup/cpuset.cpus.effective')
if line is None:
# None of the files above exists when running podman as non-root,
# so in that case, this warning is printed every-time
print("Warning: Can't detect number of CPU cores from cgroups",
file=sys.stderr)
return None

View file

@ -1,6 +1,6 @@
#!/bin/bash
#
# The 'run' performs a simple test that verifies that STI image.
# The 'run' performs a simple test that verifies that S2I image.
# The main focus is that the image prints out the base-usage properly.
#
# IMAGE_NAME specifies a name of the candidate image used for testing.
@ -9,18 +9,82 @@
IMAGE_NAME=${IMAGE_NAME-centos/s2i-core-centos7-candidate}
test_docker_run_usage() {
echo "Testing 'docker run' usage..."
docker run --rm ${IMAGE_NAME} &>/dev/null
echo "Testing 'docker run' usage..."
docker run --rm ${IMAGE_NAME} &>/dev/null
}
test_cgroup_limits() {
echo "Testing 'cgroup limits' usage..."
if [ $EUID -eq 0 ]; then
echo " The test is running as root, all tests for cgroup limits will be run"
# check memory limited (only works when running as root)
echo " Testing 'limited memory' usage..."
if ! ( eval $(docker run --rm --memory=512M ${IMAGE_NAME} /usr/bin/cgroup-limits)
echo "MEMORY_LIMIT_IN_BYTES=$MEMORY_LIMIT_IN_BYTES"
[ "$MEMORY_LIMIT_IN_BYTES" -eq 536870912 ] ); then
echo "MEMORY_LIMIT_IN_BYTES not set to 536870912."
return 1
fi
# check cores number (only works when running as root)
echo " Testing 'NUMBER_OF_CORES' value..."
if ! ( eval $(docker run --rm ${IMAGE_NAME} /usr/bin/cgroup-limits)
echo "NUMBER_OF_CORES=$NUMBER_OF_CORES"
[ "$NUMBER_OF_CORES" -gt 0 ] ); then
echo "NUMBER_OF_CORES not set."
return 1
fi
# check cores number (only works when running as root)
echo " Testing 'NUMBER_OF_CORES' value with --cpuset-cpus=0..."
if ! ( eval $(docker run --rm --cpuset-cpus=0 ${IMAGE_NAME} /usr/bin/cgroup-limits)
echo "NUMBER_OF_CORES=$NUMBER_OF_CORES"
[ "$NUMBER_OF_CORES" -eq 1 ] ); then
echo "NUMBER_OF_CORES not set to 1 when set --cpuset-cpus=0."
return 1
fi
else
echo " The test is running as non-root, some tests for cgroup limits are skipped"
fi
# check NO_MEMORY_LIMIT when no limit is set
echo " Testing 'NO_MEMORY_LIMIT' value..."
if ! ( eval $(docker run --rm ${IMAGE_NAME} /usr/bin/cgroup-limits)
echo "NO_MEMORY_LIMIT=$NO_MEMORY_LIMIT"
[ "$NO_MEMORY_LIMIT" == 'true' ] ); then
echo "NO_MEMORY_LIMIT not set to true."
return 1
fi
# check default memory in bytes
echo " Testing 'MEMORY_LIMIT_IN_BYTES' value..."
if ! ( eval $(docker run --rm ${IMAGE_NAME} /usr/bin/cgroup-limits)
echo "MEMORY_LIMIT_IN_BYTES=$MEMORY_LIMIT_IN_BYTES"
# This value can be different, but it must be very big (comparing to 10TB)
[ "$MEMORY_LIMIT_IN_BYTES" -gt 10000000000000 ] ); then
echo "MEMORY_LIMIT_IN_BYTES not greater than 10000000000000."
return 1
fi
}
check_result() {
local result="$1"
if [[ "$result" != "0" ]]; then
echo "STI image '${IMAGE_NAME}' test FAILED (exit code: ${result})"
exit $result
fi
local result="$1"
if [[ "$result" != "0" ]]; then
echo "S2I image '${IMAGE_NAME}' test FAILED (exit code: ${result})"
exit $result
fi
}
# Verify the 'usage' script is working properly when running the base image with 'docker run ...'
test_docker_run_usage
check_result $?
# Verify the cgroup-limits script works as expected
test_cgroup_limits
check_result $?
echo "Tests for '${IMAGE_NAME}' succeeded."
# vim: set tabstop=2:shiftwidth=2:expandtab: