diff --git a/.zuul.d/jobs.yaml b/.zuul.d/jobs.yaml index a8f45e42..4961ad23 100644 --- a/.zuul.d/jobs.yaml +++ b/.zuul.d/jobs.yaml @@ -29,6 +29,7 @@ - ubuntu-minimal/xenial-build-succeeds - ubuntu-minimal/bionic-build-succeeds - ubuntu-minimal/focal-build-succeeds + - containerfile/focal-build-succeeds - job: name: dib-functests-image diff --git a/diskimage_builder/elements/containerfile/README.rst b/diskimage_builder/elements/containerfile/README.rst new file mode 100644 index 00000000..3ad02729 --- /dev/null +++ b/diskimage_builder/elements/containerfile/README.rst @@ -0,0 +1,9 @@ +============= +containerfile +============= + +Base element for creating images from container files (aka +Dockerfiles). + +To use this element, create a container file (Dockerfile), and supply +the path to that file in the environment variable `DIB_CONTAINER_FILE`. diff --git a/diskimage_builder/elements/containerfile/element-provides b/diskimage_builder/elements/containerfile/element-provides new file mode 100644 index 00000000..a72e0496 --- /dev/null +++ b/diskimage_builder/elements/containerfile/element-provides @@ -0,0 +1 @@ +operating-system diff --git a/diskimage_builder/elements/containerfile/root.d/08-containerfile b/diskimage_builder/elements/containerfile/root.d/08-containerfile new file mode 100755 index 00000000..4ea65728 --- /dev/null +++ b/diskimage_builder/elements/containerfile/root.d/08-containerfile @@ -0,0 +1,42 @@ +#!/bin/bash +# +# Copyright 2015 Hewlett-Packard Development Company, L.P. +# Copyright 2019 Red Hat, INC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +if [ -f ${TARGET_ROOT}/.extra_settings ] ; then + . ${TARGET_ROOT}/.extra_settings +fi + +[ -n "$DIB_CONTAINER_FILE" ] + +# Use the image cache directory as the default context, so anything +# there is automatically available for COPY commands. +DIB_CONTAINER_CONTEXT=${DIB_CONTAINER_CONTEXT:-${DIB_IMAGE_CACHE}/containerfile} + +mkdir -p $DIB_CONTAINER_CONTEXT + +podman build -t dib-work-image -f $DIB_CONTAINER_FILE $DIB_CONTAINER_CONTEXT +container=$(podman run -d dib-work-image /bin/sh) +podman export $container | sudo tar -C $TARGET_ROOT --numeric-owner -xf - +podman rm $container +podman rmi dib-work-image + +sudo rm -f ${TARGET_ROOT}/.extra_settings diff --git a/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/README.rst b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/README.rst new file mode 100644 index 00000000..a9b7028e --- /dev/null +++ b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/README.rst @@ -0,0 +1,2 @@ +Verify we can build an image from a containerfile. + diff --git a/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/element-deps b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/element-deps new file mode 100644 index 00000000..5d58b59f --- /dev/null +++ b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/element-deps @@ -0,0 +1 @@ +openstack-ci-mirrors diff --git a/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/environment.d/10-set-distro.bash b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/environment.d/10-set-distro.bash new file mode 100644 index 00000000..f66bad2d --- /dev/null +++ b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/environment.d/10-set-distro.bash @@ -0,0 +1,2 @@ +# For the openstack-ci-mirrors element +export DISTRO_NAME=ubuntu diff --git a/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/environment.d/10-set-file.bash b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/environment.d/10-set-file.bash new file mode 100644 index 00000000..4fc3bdfa --- /dev/null +++ b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/environment.d/10-set-file.bash @@ -0,0 +1,3 @@ +path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +path="$( dirname $path)" +export DIB_CONTAINER_FILE="$path/files/Dockerfile" diff --git a/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/files/Dockerfile b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/files/Dockerfile new file mode 100644 index 00000000..59f2c33f --- /dev/null +++ b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/files/Dockerfile @@ -0,0 +1,2 @@ +FROM docker.io/library/ubuntu:focal +RUN touch /testfile diff --git a/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/test-output-formats b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/test-output-formats new file mode 100644 index 00000000..42f2fb72 --- /dev/null +++ b/diskimage_builder/elements/containerfile/test-elements/focal-build-succeeds/test-output-formats @@ -0,0 +1 @@ +tar diff --git a/playbooks/dib-functests/run.yaml b/playbooks/dib-functests/run.yaml index ca624b24..37fbe80a 100644 --- a/playbooks/dib-functests/run.yaml +++ b/playbooks/dib-functests/run.yaml @@ -4,5 +4,6 @@ - ensure-pip - bindep - dib-setup-gate-mirrors + - ensure-podman - dib-functests