Add containerfile element

This is a base element which uses a containerfile (Dockerfile) to
build a container image, then the filesystem is extracted from that
image and forms the root of the dib image.

You can add as little or as much to the dockerfile as desired.

Change-Id: I4e821aa2ce7feb8841ef31da56de1a31aa9218b5
This commit is contained in:
James E. Blair 2019-12-19 10:57:03 -08:00 committed by Ian Wienand
parent 34de4ebd6e
commit edff632186
11 changed files with 65 additions and 0 deletions

View File

@ -29,6 +29,7 @@
- ubuntu-minimal/xenial-build-succeeds - ubuntu-minimal/xenial-build-succeeds
- ubuntu-minimal/bionic-build-succeeds - ubuntu-minimal/bionic-build-succeeds
- ubuntu-minimal/focal-build-succeeds - ubuntu-minimal/focal-build-succeeds
- containerfile/focal-build-succeeds
- job: - job:
name: dib-functests-image name: dib-functests-image

View File

@ -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`.

View File

@ -0,0 +1 @@
operating-system

View File

@ -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

View File

@ -0,0 +1,2 @@
Verify we can build an image from a containerfile.

View File

@ -0,0 +1 @@
openstack-ci-mirrors

View File

@ -0,0 +1,2 @@
# For the openstack-ci-mirrors element
export DISTRO_NAME=ubuntu

View File

@ -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"

View File

@ -0,0 +1,2 @@
FROM docker.io/library/ubuntu:focal
RUN touch /testfile

View File

@ -4,5 +4,6 @@
- ensure-pip - ensure-pip
- bindep - bindep
- dib-setup-gate-mirrors - dib-setup-gate-mirrors
- ensure-podman
- dib-functests - dib-functests