Add support for ubuntu bionic base image
Adds support to build drydock image using either a xenial or a bionic base image. Currently only xenial base is supported. The default base image is set to ubuntu bionic. Change-Id: I93672cf35879d8525d28e870ea83e5512c1043f9
This commit is contained in:
parent
54675558fd
commit
2a02bc9b3f
51
.zuul.yaml
51
.zuul.yaml
@ -21,17 +21,20 @@
|
|||||||
- airship-drydock-omni-test
|
- airship-drydock-omni-test
|
||||||
- airship-drydock-chart-build-gate
|
- airship-drydock-chart-build-gate
|
||||||
- airship-drydock-chart-build-latest-htk
|
- airship-drydock-chart-build-latest-htk
|
||||||
- airship-drydock-docker-build-gate
|
- airship-drydock-docker-build-gate-ubuntu_xenial
|
||||||
|
- airship-drydock-docker-build-gate-ubuntu_bionic
|
||||||
|
|
||||||
gate:
|
gate:
|
||||||
jobs:
|
jobs:
|
||||||
- airship-drydock-omni-test
|
- airship-drydock-omni-test
|
||||||
- airship-drydock-chart-build-gate
|
- airship-drydock-chart-build-gate
|
||||||
- airship-drydock-docker-build-gate
|
- airship-drydock-docker-build-gate-ubuntu_xenial
|
||||||
|
- airship-drydock-docker-build-gate-ubuntu_bionic
|
||||||
|
|
||||||
post:
|
post:
|
||||||
jobs:
|
jobs:
|
||||||
- airship-drydock-docker-publish
|
- airship-drydock-docker-publish-ubuntu_xenial
|
||||||
|
- airship-drydock-docker-publish-ubuntu_bionic
|
||||||
- drydock-upload-git-mirror
|
- drydock-upload-git-mirror
|
||||||
|
|
||||||
- nodeset:
|
- nodeset:
|
||||||
@ -69,7 +72,7 @@
|
|||||||
HTK_COMMIT: master
|
HTK_COMMIT: master
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: airship-drydock-docker-build-gate
|
name: airship-drydock-docker-build-gate-ubuntu_xenial
|
||||||
timeout: 1800
|
timeout: 1800
|
||||||
run: tools/gate/playbooks/docker-image-build.yaml
|
run: tools/gate/playbooks/docker-image-build.yaml
|
||||||
nodeset: airship-drydock-single-node
|
nodeset: airship-drydock-single-node
|
||||||
@ -78,12 +81,29 @@
|
|||||||
- '^charts/.*'
|
- '^charts/.*'
|
||||||
vars:
|
vars:
|
||||||
publish: false
|
publish: false
|
||||||
|
distro: ubuntu_xenial
|
||||||
tags:
|
tags:
|
||||||
dynamic:
|
dynamic:
|
||||||
patch_set: true
|
patch_set: true
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: airship-drydock-docker-publish
|
name: airship-drydock-docker-build-gate-ubuntu_bionic
|
||||||
|
timeout: 1800
|
||||||
|
run: tools/gate/playbooks/docker-image-build.yaml
|
||||||
|
nodeset: airship-drydock-single-node
|
||||||
|
irrelevant-files:
|
||||||
|
- '^doc/.*'
|
||||||
|
- '^charts/.*'
|
||||||
|
vars:
|
||||||
|
publish: false
|
||||||
|
distro: ubuntu_bionic
|
||||||
|
tags:
|
||||||
|
dynamic:
|
||||||
|
patch_set: true
|
||||||
|
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: airship-drydock-docker-publish-ubuntu_xenial
|
||||||
timeout: 1800
|
timeout: 1800
|
||||||
run: tools/gate/playbooks/docker-image-build.yaml
|
run: tools/gate/playbooks/docker-image-build.yaml
|
||||||
nodeset: airship-drydock-single-node
|
nodeset: airship-drydock-single-node
|
||||||
@ -94,6 +114,27 @@
|
|||||||
- '^charts/.*'
|
- '^charts/.*'
|
||||||
vars:
|
vars:
|
||||||
publish: true
|
publish: true
|
||||||
|
distro: ubuntu_xenial
|
||||||
|
tags:
|
||||||
|
dynamic:
|
||||||
|
branch: true
|
||||||
|
commit: true
|
||||||
|
static:
|
||||||
|
- latest
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: airship-drydock-docker-publish-ubuntu_bionic
|
||||||
|
timeout: 1800
|
||||||
|
run: tools/gate/playbooks/docker-image-build.yaml
|
||||||
|
nodeset: airship-drydock-single-node
|
||||||
|
secrets:
|
||||||
|
- airship_drydock_quay_creds
|
||||||
|
irrelevant-files:
|
||||||
|
- '^doc/.*'
|
||||||
|
- '^charts/.*'
|
||||||
|
vars:
|
||||||
|
publish: true
|
||||||
|
distro: ubuntu_bionic
|
||||||
tags:
|
tags:
|
||||||
dynamic:
|
dynamic:
|
||||||
branch: true
|
branch: true
|
||||||
|
3
Makefile
3
Makefile
@ -19,6 +19,7 @@ IMAGE_PREFIX ?= airshipit
|
|||||||
IMAGE_TAG ?= dev
|
IMAGE_TAG ?= dev
|
||||||
HELM := $(shell realpath $(BUILD_DIR))/helm
|
HELM := $(shell realpath $(BUILD_DIR))/helm
|
||||||
UBUNTU_BASE_IMAGE ?=
|
UBUNTU_BASE_IMAGE ?=
|
||||||
|
DISTRO ?= ubuntu_bionic
|
||||||
PROXY ?= http://proxy.foo.com:8000
|
PROXY ?= http://proxy.foo.com:8000
|
||||||
NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local
|
NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local
|
||||||
USE_PROXY ?= false
|
USE_PROXY ?= false
|
||||||
@ -26,7 +27,7 @@ PUSH_IMAGE ?= false
|
|||||||
# use this variable for image labels added in internal build process
|
# use this variable for image labels added in internal build process
|
||||||
LABEL ?= org.airshipit.build=community
|
LABEL ?= org.airshipit.build=community
|
||||||
COMMIT ?= $(shell git rev-parse HEAD)
|
COMMIT ?= $(shell git rev-parse HEAD)
|
||||||
IMAGE ?= ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}
|
IMAGE ?= ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO}
|
||||||
|
|
||||||
export
|
export
|
||||||
|
|
||||||
|
96
images/drydock/Dockerfile.ubuntu_bionic
Normal file
96
images/drydock/Dockerfile.ubuntu_bionic
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# Copyright 2017 AT&T Intellectual Property. All other rights reserved.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
ARG FROM=ubuntu:18.04
|
||||||
|
FROM ${FROM} AS baclient_builder
|
||||||
|
|
||||||
|
ARG UBUNTU_REPO=http://archive.ubuntu.com/ubuntu
|
||||||
|
ARG TRUSTED_UBUNTU_REPO=no
|
||||||
|
ARG ALLOW_UNAUTHENTICATED=false
|
||||||
|
ARG BUILD_DIR
|
||||||
|
ENV container docker
|
||||||
|
ENV LC_ALL C.UTF-8
|
||||||
|
ENV LANG C.UTF-8
|
||||||
|
|
||||||
|
# Copy direct dependency requirements only to build a dependency layer
|
||||||
|
RUN echo "deb ${UBUNTU_REPO} bionic main restricted universe multiverse" > /etc/apt/sources.list; \
|
||||||
|
echo "deb ${UBUNTU_REPO} bionic-security main restricted universe multiverse" >> /etc/apt/sources.list; \
|
||||||
|
echo "deb ${UBUNTU_REPO} bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list; \
|
||||||
|
cat /etc/apt/sources.list; \
|
||||||
|
echo "APT::Get::AllowUnauthenticated ${ALLOW_UNAUTHENTICATED};" >> /etc/apt/apt.conf.d/00-local-mirrors;
|
||||||
|
|
||||||
|
|
||||||
|
COPY ./tools/baclient_build.sh /tmp/drydock/
|
||||||
|
COPY ./go /tmp/drydock/go
|
||||||
|
WORKDIR /tmp/drydock
|
||||||
|
RUN ./baclient_build.sh /tmp/drydock/go /tmp/drydock/baclient; \
|
||||||
|
rm -r /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
|
||||||
|
FROM ${FROM}
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
|
||||||
|
org.opencontainers.image.url='https://airshipit.org' \
|
||||||
|
org.opencontainers.image.documentation='https://airship-drydock.readthedocs.org' \
|
||||||
|
org.opencontainers.image.source='https://git.openstack.org/openstack/airship-drydock' \
|
||||||
|
org.opencontainers.image.vendor='The Airship Authors' \
|
||||||
|
org.opencontainers.image.licenses='Apache-2.0'
|
||||||
|
|
||||||
|
ARG UBUNTU_REPO=http://archive.ubuntu.com/ubuntu
|
||||||
|
ARG TRUSTED_UBUNTU_REPO=no
|
||||||
|
ARG ALLOW_UNAUTHENTICATED=false
|
||||||
|
ARG PIP_TRUSTED_HOST=foo.com
|
||||||
|
ARG PIP_INDEX_URL=https://pypi.org/simple
|
||||||
|
ARG BUILD_DIR
|
||||||
|
ENV container docker
|
||||||
|
ENV PORT 9000
|
||||||
|
ENV LC_ALL C.UTF-8
|
||||||
|
ENV LANG C.UTF-8
|
||||||
|
|
||||||
|
# Copy direct dependency requirements only to build a dependency layer
|
||||||
|
RUN echo "deb ${UBUNTU_REPO} bionic main restricted universe multiverse" > /etc/apt/sources.list; \
|
||||||
|
echo "deb ${UBUNTU_REPO} bionic-security main restricted universe multiverse" >> /etc/apt/sources.list; \
|
||||||
|
echo "deb ${UBUNTU_REPO} bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list; \
|
||||||
|
cat /etc/apt/sources.list; \
|
||||||
|
echo "APT::Get::AllowUnauthenticated ${ALLOW_UNAUTHENTICATED};" >> /etc/apt/apt.conf.d/00-local-mirrors;
|
||||||
|
|
||||||
|
|
||||||
|
COPY ./requirements-host.txt /tmp/drydock/
|
||||||
|
COPY ./hostdeps.sh /tmp/drydock
|
||||||
|
WORKDIR /tmp/drydock
|
||||||
|
RUN ./hostdeps.sh; \
|
||||||
|
rm -r /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY ./python/requirements-lock.txt /tmp/drydock/
|
||||||
|
RUN pip3 install \
|
||||||
|
--no-cache-dir \
|
||||||
|
-r /tmp/drydock/requirements-lock.txt
|
||||||
|
|
||||||
|
COPY ./python /tmp/drydock/python
|
||||||
|
WORKDIR /tmp/drydock/python
|
||||||
|
RUN python3 setup.py install
|
||||||
|
|
||||||
|
COPY ./alembic /tmp/drydock/alembic
|
||||||
|
COPY ./alembic.ini /tmp/drydock/alembic.ini
|
||||||
|
COPY ./entrypoint.sh /tmp/drydock/entrypoint.sh
|
||||||
|
|
||||||
|
COPY --from=baclient_builder /tmp/drydock/baclient /tmp/drydock/python/drydock_provisioner/assets/baclient
|
||||||
|
|
||||||
|
|
||||||
|
EXPOSE $PORT
|
||||||
|
|
||||||
|
WORKDIR /tmp/drydock
|
||||||
|
|
||||||
|
ENTRYPOINT ["./entrypoint.sh"]
|
||||||
|
CMD ["server"]
|
@ -3,6 +3,7 @@ set -x
|
|||||||
|
|
||||||
UBUNTU_BASE_IMAGE=${UBUNTU_BASE_IMAGE:-""}
|
UBUNTU_BASE_IMAGE=${UBUNTU_BASE_IMAGE:-""}
|
||||||
UBUNTU_REPO=${UBUNTU_REPO:-""}
|
UBUNTU_REPO=${UBUNTU_REPO:-""}
|
||||||
|
DISTRO=${DISTRO:-"ubuntu_bionic"}
|
||||||
TRUSTED_UBUNTU_REPO=${TRUSTED_UBUNTU_REPO:-"no"}
|
TRUSTED_UBUNTU_REPO=${TRUSTED_UBUNTU_REPO:-"no"}
|
||||||
ALLOW_UNATHENTICATED=${ALLOW_UNAUTHENTICATED:-"false"}
|
ALLOW_UNATHENTICATED=${ALLOW_UNAUTHENTICATED:-"false"}
|
||||||
PIP_INDEX_URL=${PIP_INDEX_URL:-""}
|
PIP_INDEX_URL=${PIP_INDEX_URL:-""}
|
||||||
@ -42,7 +43,7 @@ docker build --network host -t ${IMAGE} --label ${LABEL} \
|
|||||||
--label org.opencontainers.image.revision=${COMMIT} \
|
--label org.opencontainers.image.revision=${COMMIT} \
|
||||||
--label org.opencontainers.image.created="$(date --rfc-3339=seconds --utc)" \
|
--label org.opencontainers.image.created="$(date --rfc-3339=seconds --utc)" \
|
||||||
--label org.opencontainers.image.title=${IMAGE_NAME} \
|
--label org.opencontainers.image.title=${IMAGE_NAME} \
|
||||||
-f images/drydock/Dockerfile \
|
-f "images/drydock/Dockerfile.${DISTRO}" \
|
||||||
--build-arg BUILD_DIR=${BUILD_DIR} \
|
--build-arg BUILD_DIR=${BUILD_DIR} \
|
||||||
${PROXY_ARGS} \
|
${PROXY_ARGS} \
|
||||||
${ADDL_BUILD_ARGS} .
|
${ADDL_BUILD_ARGS} .
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
IMAGE=${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}
|
IMAGE=${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO}
|
||||||
|
|
||||||
function start_db {
|
function start_db {
|
||||||
if [[ ! -z $(docker ps | grep 'psql_integration') ]]
|
if [[ ! -z $(docker ps | grep 'psql_integration') ]]
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
block:
|
block:
|
||||||
- debug:
|
- debug:
|
||||||
var: publish
|
var: publish
|
||||||
|
- debug:
|
||||||
|
var: distro
|
||||||
- debug:
|
- debug:
|
||||||
var: tags
|
var: tags
|
||||||
- debug:
|
- debug:
|
||||||
@ -58,6 +60,7 @@
|
|||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
target: images
|
target: images
|
||||||
params:
|
params:
|
||||||
|
DISTRO: "{{ distro }}"
|
||||||
IMAGE_TAG: "{{ item }}"
|
IMAGE_TAG: "{{ item }}"
|
||||||
with_items: "{{ image_tags.stdout_lines }}"
|
with_items: "{{ image_tags.stdout_lines }}"
|
||||||
|
|
||||||
@ -82,6 +85,7 @@
|
|||||||
params:
|
params:
|
||||||
DOCKER_REGISTRY: "quay.io"
|
DOCKER_REGISTRY: "quay.io"
|
||||||
IMAGE_PREFIX: "airshipit"
|
IMAGE_PREFIX: "airshipit"
|
||||||
|
DISTRO: "{{ distro }}"
|
||||||
IMAGE_TAG: "{{ item }}"
|
IMAGE_TAG: "{{ item }}"
|
||||||
COMMIT: "{{ zuul.newrev | default('') }}"
|
COMMIT: "{{ zuul.newrev | default('') }}"
|
||||||
PUSH_IMAGE: "true"
|
PUSH_IMAGE: "true"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user