Bug 1103031 - switch over to using base-test and base-build images r=lightsofapollo

This commit is contained in:
Greg Arndt 2014-11-26 10:11:40 -08:00
parent f0f26b0ff5
commit be063ac922
18 changed files with 216 additions and 129 deletions

View File

@ -1,4 +1,4 @@
FROM centos:centos7
FROM centos:centos6
MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
# Run system setup script

View File

@ -0,0 +1 @@
0.0.1

View File

@ -46,18 +46,14 @@ yum install -y \
gtk2-devel \
libstdc++-static \
libXt-devel \
mercurial \
mesa-libGL-devel \
pulseaudio-libs-devel \
wireless-tools-devel \
yasm \
python-devel \
dbus-python \
python-virtualenv \
;
yum install -y \
alsa-lib-devel \
libcurl-devel \
openssl-devel \
dbus-devel \
@ -65,21 +61,20 @@ yum install -y \
GConf2-devel \
iw \
libnotify-devel \
pulseaudio-libs-devel \
libXt-devel \
mercurial \
unzip \
uuid \
xorg-x11-server-Xvfb \
xorg-x11-server-utils \
tar \
tcl \
tk \
unzip \
zip \
;
# From Building B2G docs
yum install -y \
install \
autoconf213 \
bison \
bzip2 \
ccache \
@ -87,13 +82,11 @@ yum install -y \
flex \
gawk \
gcc-c++ \
git \
glibc-devel \
glibc-static \
libstdc++-static \
libX11-devel \
make \
mesa-libGL-devel \
ncurses-devel \
patch \
zlib-devel \
@ -105,7 +98,6 @@ yum install -y \
glibc-devel.i686 \
libstdc++.i686 \
libXrandr.i686 \
zip \
perl-Digest-SHA \
wget \
;
@ -124,6 +116,26 @@ yum install -y \
# puppetagain packages
base_url="http://puppetagain.pub.build.mozilla.org/data/repos/yum/releng/public/CentOS/6/x86_64/"
# Install Python 2.7, pip, and virtualenv (needed for things like mach)
rpm -ih $base_url/mozilla-python27-2.7.3-1.el6.x86_64.rpm
export PATH="/tools/python27-mercurial/bin:/tools/python27/bin:$PATH"
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz
tar -xvf setuptools-1.4.2.tar.gz
cd setuptools-1.4.2 && python setup.py install
cd - && rm -rf setuptools-1.4.2*
curl https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py | python -
pip install virtualenv
# Install more recent version of mercurial
rpm -ih $base_url/mozilla-python27-mercurial-3.1.2-1.el6.x86_64.rpm
# Install more recent version of git and dependencies
yum install -y \
perl-DBI \
subversion-perl \
;
rpm -ih $base_url/mozilla-git-1.7.9.4-3.el6.x86_64.rpm
# Install gcc to build gecko
rpm -ih $base_url/gcc473_0moz1-4.7.3-0moz1.x86_64.rpm
@ -133,7 +145,7 @@ rpm -ih $base_url/gcc473_0moz1-4.7.3-0moz1.x86_64.rpm
yum clean all
### Generate machine uuid file
dbus-uuidgen --ensure=/etc/machine-id
dbus-uuidgen --ensure=/var/lib/dbus/machine-id
# Remove the setup.sh setup, we don't really need this script anymore, deleting
# it keeps the image as clean as possible.

View File

@ -0,0 +1,19 @@
FROM quay.io/mozilla/ubuntu:12.04
MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
# Run system setup script
ADD system-setup.sh /tmp/system-setup.sh
RUN ["/tmp/system-setup.sh"]
# Set variable normally configured at login, by the shells parent process, these
# are taken from GNU su manual
ENV HOME /home/worker
ENV SHELL /bin/bash
ENV USER worker
ENV LOGNAME worker
# Declare default working folder
WORKDIR /home/worker
# Set a default command useful for debugging
CMD ["/bin/bash", "--login"]

View File

@ -0,0 +1 @@
0.0.1

View File

@ -0,0 +1,149 @@
#!/bin/bash -ve
################################### setup.sh ###################################
### Check that we are running as root
test `whoami` == 'root';
### Add worker user
# Minimize the number of things which the build script can do, security-wise
# it's not a problem to let the build script install things with apt-get. But it
# really shouldn't do this, so let's forbid root access.
useradd -d /home/worker -s /bin/bash -m worker;
### Install Useful Packages
# First we update and upgrade to latest versions.
apt-get update;
apt-get upgrade -y;
# Let's install some goodies, ca-certificates is needed for https with hg.
# sudo will be required anyway, but let's make it explicit. It nice to have
# sudo around. We'll also install nano, this is pure bloat I know, but it's
# useful a text editor.
apt-get install -y \
ca-certificates \
sudo \
nano \
tar \
;
# Then let's install all firefox build dependencies, this are extracted from
# mozboot. See python/mozboot/bin/bootstrap.py in mozilla-central.
apt-get install -y \
autoconf2.13 \
build-essential \
ccache \
libasound2-dev \
libcurl4-openssl-dev \
libdbus-1-dev \
libdbus-glib-1-dev \
libgconf2-dev \
libgstreamer0.10-dev \
libgstreamer-plugins-base0.10-dev \
libgtk2.0-dev \
libiw-dev \
libnotify-dev \
libpulse-dev \
libxt-dev \
mercurial \
git \
mesa-common-dev \
python-dev \
unzip \
uuid \
yasm \
xvfb \
zip \
software-properties-common \
;
### Firefox Test Setup
apt-get install -y \
alsa-base \
alsa-utils \
bluez-alsa \
bluez-alsa:i386 \
bluez-cups \
bluez-gstreamer \
g++-multilib \
gcc-multilib \
gir1.2-gnomebluetooth-1.0 \
gstreamer0.10-alsa \
libasound2-plugins:i386 \
libcanberra-pulse \
libdrm-intel1:i386 \
libdrm-nouveau1a:i386 \
libdrm-radeon1:i386 \
libdrm2:i386 \
libexpat1:i386 \
libgnome-bluetooth8 \
libllvm2.9 \
libllvm3.0:i386 \
libncurses5:i386 \
libpulse-mainloop-glib0:i386 \
libpulsedsp:i386 \
libsdl1.2debian:i386 \
libsox-fmt-alsa \
libx11-xcb1:i386 \
libxcb-glx0:i386 \
libxcb-glx0 \
libxdamage1:i386 \
libxfixes3:i386 \
libxxf86vm1:i386 \
libxxf86vm1 \
llvm \
llvm-2.9 \
llvm-2.9-dev \
llvm-2.9-runtime \
llvm-dev \
llvm-runtime \
pulseaudio-module-bluetooth \
pulseaudio-module-gconf \
pulseaudio-module-X11 \
pulseaudio \
python-pip
# Install some utilities
curl -sL https://deb.nodesource.com/setup | sudo bash -
apt-get install -y \
screen \
vim \
wget \
curl \
rlwrap \
nodejs \
;
# Mozilla-patched mesa libs required for many reftests -- see bug 975034
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_i386.deb
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_amd64.deb
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_i386.deb
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_amd64.deb
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
dpkg -i libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_amd64.deb
dpkg -i libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_i386.deb
dpkg -i libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
dpkg -i libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
dpkg -i libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_i386.deb
dpkg -i libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_amd64.deb
dpkg -i libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
dpkg -i libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
# Install releng package of nodejs that includes npm
#wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/precise/pool/main/n/nodejs/nodejs_0.10.21-1chl1~precise1_amd64.deb
#dpkg -i nodejs_0.10.21-1chl1~precise1_amd64.deb
### Clean up from setup
# Remove cached .deb packages. Cached package takes up a lot of space and
# distributing them to workers is wasteful.
apt-get clean
rm *.deb
# Remove the setup.sh setup, we don't really need this script anymore, deleting
# it keeps the image as clean as possible.
rm $0; echo "Deleted $0";
################################### setup.sh ###################################

View File

@ -1 +0,0 @@
0.0.5

View File

@ -1,7 +1,9 @@
FROM quay.io/mozilla/base:0.0.4
FROM quay.io/mozilla/base-build:0.0.1
MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
ENV PATH $PATH:/home/worker/bin/
ENV PATH /tools/python27-mercurial/bin:/tools/python27/bin:/tools/tools/buildfarm/utils:$PATH:/home/worker/bin/
ENV PYTHONPATH /tools/tools/lib/python:$PYTHONPATH
ENV TOOLTOOL_CACHE /home/worker/tools/tooltool-cache
# Add utilities and configuration

View File

@ -1 +1 @@
0.0.20
0.0.21

View File

@ -3,7 +3,7 @@
############################### system-setup.sh ###############################
home="/home/worker"
tools_dir="/tmp/tools"
tools_dir="/tools/tools"
mkdir -p $home/bin
mkdir -p $home/tools
@ -15,26 +15,16 @@ curl https://storage.googleapis.com/git-repo-downloads/repo > $home/bin/repo
chmod a+x $home/bin/repo
# Install build tools
cd /tmp
hg clone http://hg.mozilla.org/build/tools/
hg clone http://hg.mozilla.org/build/tools/ $tools_dir
cd $tools_dir
python setup.py install
# Put gittool and hgtool in the PATH
cp $tools_dir/buildfarm/utils/gittool.py $home/bin
cp $tools_dir/buildfarm/utils/hgtool.py $home/bin
chmod +x $home/bin/gittool.py
chmod +x $home/bin/hgtool.py
# Initialize git (makes repo happy)
git config --global user.email "docker@docker.com"
git config --global user.name "docker"
cd $home
# cleanup
rm -rf $tools_dir
# Remove the setup.sh setup, we don't really need this script anymore, deleting
# it keeps the image as clean as possible.
rm $0; echo "Deleted $0";

View File

@ -1,14 +1,13 @@
FROM quay.io/mozilla/base:0.0.5
FROM quay.io/mozilla/base-test:0.0.1
MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
# Add utilities and configuration
COPY b2g-desktop-config.py /home/worker/b2g-desktop-config.py
COPY test-setup.sh /tmp/test-setup.sh
COPY dot-config /home/worker/.config
COPY dot-pulse /home/worker/.pulse
COPY emulator_automation_config.py /home/worker/emulator_automation_config.py
COPY bin /home/worker/bin
COPY mozharness_configs /home/worker/mozharness_configs
ADD b2g-desktop-config.py /home/worker/b2g-desktop-config.py
ADD test-setup.sh /tmp/test-setup.sh
ADD dot-config /home/worker/.config
ADD dot-pulse /home/worker/.pulse
ADD bin /home/worker/bin
ADD mozharness_configs /home/worker/mozharness_configs
# Run test setup script
USER root

View File

@ -1 +1 @@
0.0.7
0.0.8

View File

@ -1,49 +0,0 @@
# This is a template config file for b2g emulator unittest production.
import os
config = {
# mozharness options
"application": "b2g",
"busybox_url": "http://runtime-binaries.pvt.build.mozilla.org/tooltool/sha512/0748e900821820f1a42e2f1f3fa4d9002ef257c351b9e6b78e7de0ddd0202eace351f440372fbb1ae0b7e69e8361b036f6bd3362df99e67fc585082a311fc0df",
"xre_url": "http://runtime-binaries.pvt.build.mozilla.org/tooltool/sha512/263f4e8796c25543f64ba36e53d5c4ab8ed4d4e919226037ac0988761d34791b038ce96a8ae434f0153f9c2061204086decdbff18bdced42f3849156ae4dc9a4",
"tooltool_servers": ["http://runtime-binaries.pvt.build.mozilla.org/tooltool/"],
"exes": {
'python': '/usr/bin/python',
'tooltool.py': "mozharness/mozharness/mozilla/tooltool.py",
},
"find_links": [
"http://pypi.pvt.build.mozilla.org/pub",
"http://pypi.pub.build.mozilla.org/pub",
],
"pip_index": False,
"buildbot_json_path": "buildprops.json",
"default_actions": [
'clobber',
'read-buildbot-config',
'download-and-extract',
'create-virtualenv',
'install',
'run-tests',
],
"download_symbols": "ondemand",
"download_minidump_stackwalk": True,
"default_blob_upload_servers": [
"https://blobupload.elasticbeanstalk.com",
],
"blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"),
"run_file_names": {
"jsreftest": "runreftestb2g.py",
"mochitest": "runtestsb2g.py",
"reftest": "runreftestb2g.py",
"crashtest": "runreftestb2g.py",
"xpcshell": "runtestsb2g.py"
},
# test harness options are located in the gecko tree
"in_tree_config": "config/mozharness/b2g_emulator_config.py",
"vcs_output_timeout": 1760,
}

View File

@ -1,47 +1,7 @@
#!/bin/bash -ve
### Firefox Test Setup
yum install -y \
alsa-utils \
bluez-alsa \
bluez-alsa.i686 \
bluez-cups \
curl \
dbus-devel \
dbus-glib-devel \
GConf2-devel \
iw \
libcurl-devel \
libdrm.i686 \
libdrm-devel.i686 \
libnotify-devel \
libX11.i686 \
libX11-devel \
libxcb.i686 \
libXdamage.i686 \
libXfixes.i686 \
libXxf86vm.i686 \
llvm \
llvm-devel \
ncurses-devel \
ncurses-devel.i686 \
openssl-devel \
pulseaudio-module-gconf \
pulseaudio-module-x11 \
pulseaudio \
yasm \
python-devel \
python-pip \
dbus-python \
wget \
;
# Remove cached packages. Cached package takes up a lot of space and
# distributing them to workers is wasteful.
yum clean all
mkdir Documents; mkdir Pictures; mkdir Music; mkdir Videos; mkdir artifacts
pip install virtualenv;
mkdir Documents; mkdir Pictures; mkdir Music; mkdir Videos;
hg clone http://hg.mozilla.org/build/mozharness/
echo 'Xvfb :0 -nolisten tcp -screen 0 1600x1200x24 &> /dev/null &' >> .bashrc
chown -R worker:worker /home/worker/* /home/worker/.*

View File

@ -15,6 +15,7 @@ task:
- 'docker-worker:cache:sources-mozilla-central'
- 'docker-worker:cache:sources-gaia'
- 'docker-worker:cache:build-b2g-desktop-objects'
- 'docker-worker:image:{{#docker_image}}builder{{/docker_image}}'
payload:
cache:

View File

@ -15,6 +15,7 @@ task:
- 'docker-worker:cache:sources-mozilla-central'
- 'docker-worker:cache:sources-gaia'
- 'docker-worker:cache:build-b2g-desktop-objects'
- 'docker-worker:image:{{#docker_image}}builder{{/docker_image}}'
payload:
cache:

View File

@ -13,6 +13,7 @@ task:
scopes:
- 'docker-worker:cache:build-emulator-objects'
- 'docker-worker:image:{{#docker_image}}builder{{/docker_image}}'
payload:
cache:

View File

@ -15,6 +15,7 @@ task:
- 'docker-worker:cache:sources-mozilla-central'
- 'docker-worker:cache:build-mulet-linux-objects'
- 'docker-worker:cache:tooltool-cache'
- 'docker-worker:image:{{#docker_image}}builder{{/docker_image}}'
payload:
cache: