Update docker build
Docker build will now perform most actions of the dev-setup making it possible to use caches in a greater extent speeding up the buildpull/2506/head
parent
b436e5575a
commit
00acf2b10c
|
@ -28,7 +28,7 @@ pipeline {
|
||||||
steps {
|
steps {
|
||||||
echo 'Building Test Docker Image'
|
echo 'Building Test Docker Image'
|
||||||
sh 'cp test/Dockerfile.test Dockerfile'
|
sh 'cp test/Dockerfile.test Dockerfile'
|
||||||
sh 'docker build --no-cache --target voight_kampff -t mycroft-core:${BRANCH_ALIAS} .'
|
sh 'docker build --target voight_kampff -t mycroft-core:${BRANCH_ALIAS} .'
|
||||||
echo 'Running Tests'
|
echo 'Running Tests'
|
||||||
timeout(time: 10, unit: 'MINUTES')
|
timeout(time: 10, unit: 'MINUTES')
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,40 +1,95 @@
|
||||||
|
# Build an Ubuntu-based container to run Mycroft
|
||||||
|
#
|
||||||
|
# The steps in this build are ordered from least likely to change to most
|
||||||
|
# likely to change. The intent behind this is to reduce build time so things
|
||||||
|
# like Jenkins jobs don't spend a lot of time re-building things that did not
|
||||||
|
# change from one build to the next.
|
||||||
|
#
|
||||||
FROM ubuntu:18.04 as builder
|
FROM ubuntu:18.04 as builder
|
||||||
ENV TERM linux
|
ENV TERM linux
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
COPY . /opt/mycroft/mycroft-core
|
# Un-comment any package sources that include a multiverse
|
||||||
|
RUN sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list
|
||||||
# Install Server Dependencies for Mycroft
|
# Install Server Dependencies for Mycroft
|
||||||
RUN set -x \
|
RUN apt-get update && apt-get install -y \
|
||||||
# Un-comment any package sources that include a multiverse
|
autoconf \
|
||||||
&& sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list \
|
automake \
|
||||||
&& apt-get update \
|
bison \
|
||||||
# Install packages specific to Docker implementation
|
build-essential \
|
||||||
&& apt-get -y install locales sudo\
|
curl \
|
||||||
&& mkdir /opt/mycroft/skills \
|
flac \
|
||||||
&& CI=true bash -x /opt/mycroft/mycroft-core/dev_setup.sh --allow-root -sm \
|
git \
|
||||||
&& apt-get -y autoremove \
|
jq \
|
||||||
&& apt-get clean \
|
libfann-dev \
|
||||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
libffi-dev \
|
||||||
|
libicu-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
libglib2.0-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libtool \
|
||||||
|
locales \
|
||||||
|
mpg123 \
|
||||||
|
pkg-config \
|
||||||
|
portaudio19-dev \
|
||||||
|
pulseaudio \
|
||||||
|
pulseaudio-utils \
|
||||||
|
python3 \
|
||||||
|
python3-dev \
|
||||||
|
python3-pip \
|
||||||
|
python3-setuptools \
|
||||||
|
python3-venv \
|
||||||
|
screen \
|
||||||
|
sudo \
|
||||||
|
swig \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
# Set the locale
|
# Set the locale
|
||||||
RUN locale-gen en_US.UTF-8
|
RUN locale-gen en_US.UTF-8
|
||||||
ENV LANG en_US.UTF-8
|
ENV LANG en_US.UTF-8
|
||||||
ENV LANGUAGE en_US:en
|
ENV LANGUAGE en_US:en
|
||||||
ENV LC_ALL en_US.UTF-8
|
ENV LC_ALL en_US.UTF-8
|
||||||
# Add the local configuration directory
|
|
||||||
RUN mkdir ~/.mycroft
|
# Setup the virtual environment
|
||||||
VOLUME /root/.mycroft
|
# This may not be the most efficient way to do this in terms of number of
|
||||||
|
# steps, but it is built to take advantage of Docker's caching mechanism
|
||||||
|
# to only rebuild things that have changed since the last build.
|
||||||
|
RUN mkdir /opt/mycroft
|
||||||
|
RUN mkdir /var/log/mycroft
|
||||||
|
WORKDIR /opt/mycroft
|
||||||
|
RUN mkdir mycroft-core skills ~/.mycroft
|
||||||
|
RUN python3 -m venv "/opt/mycroft/mycroft-core/.venv"
|
||||||
|
RUN mycroft-core/.venv/bin/python -m pip install pip==20.0.2
|
||||||
|
COPY requirements.txt mycroft-core
|
||||||
|
RUN mycroft-core/.venv/bin/python -m pip install -r mycroft-core/requirements.txt
|
||||||
|
COPY . mycroft-core
|
||||||
EXPOSE 8181
|
EXPOSE 8181
|
||||||
|
|
||||||
|
|
||||||
# Integration Test Suite
|
# Integration Test Suite
|
||||||
|
#
|
||||||
|
# Build against this target to set the container up as an executable that
|
||||||
|
# will run the "voight_kampff" integration test suite.
|
||||||
|
#
|
||||||
FROM builder as voight_kampff
|
FROM builder as voight_kampff
|
||||||
# Add the mycroft core virtual environment to the system path.
|
# Add the mycroft core virtual environment to the system path.
|
||||||
ENV PATH /opt/mycroft/mycroft-core/.venv/bin:$PATH
|
ENV PATH /opt/mycroft/mycroft-core/.venv/bin:$PATH
|
||||||
WORKDIR /opt/mycroft/mycroft-core/test/integrationtests/voight_kampff
|
# Install required packages for test environments
|
||||||
|
RUN mycroft-core/.venv/bin/python -m pip install -r mycroft-core/test-requirements.txt
|
||||||
|
RUN mycroft-core/.venv/bin/python -m pip install --no-deps /opt/mycroft/mycroft-core
|
||||||
|
RUN mkdir ~/.mycroft/allure-result
|
||||||
|
|
||||||
# Install Mark I default skills
|
# Install Mark I default skills
|
||||||
RUN msm -p mycroft_mark_1 default
|
RUN msm -p mycroft_mark_1 default
|
||||||
|
|
||||||
# The behave feature files for a skill are defined within the skill's
|
# The behave feature files for a skill are defined within the skill's
|
||||||
# repository. Copy those files into the local feature file directory
|
# repository. Copy those files into the local feature file directory
|
||||||
# for test discovery.
|
# for test discovery.
|
||||||
RUN python -m test.integrationtests.voight_kampff.test_setup -c default.yml
|
WORKDIR /opt/mycroft/mycroft-core
|
||||||
RUN mkdir ~/.mycroft/allure-result
|
# Generate hash of required packages
|
||||||
|
RUN md5sum requirements.txt test-requirements.txt dev_setup.sh > .installed
|
||||||
|
RUN python -m test.integrationtests.voight_kampff.test_setup -c test/integrationtests/voight_kampff/default.yml
|
||||||
|
|
||||||
# Setup and run the integration tests
|
# Setup and run the integration tests
|
||||||
|
WORKDIR /opt/mycroft/mycroft-core/test/integrationtests/voight_kampff
|
||||||
ENTRYPOINT "./run_test_suite.sh"
|
ENTRYPOINT "./run_test_suite.sh"
|
||||||
|
|
Loading…
Reference in New Issue