docker: Add a unified image for fedora

This is meant to replace both the runtime and build images.
Spliting it in two increasing the maintainance required without
any big benefits.
This commit is contained in:
Jordan Petridis 2018-11-25 02:03:29 +02:00
parent 3cc8d5efb5
commit 72ec8cd33f
No known key found for this signature in database
GPG key ID: 902CC06D159744F5
6 changed files with 106 additions and 149 deletions

View file

@ -1,6 +1,8 @@
stages:
- "build runtime"
- "build base"
# Eventually will replace both of the above stages
- "build docker"
- "preparation"
# Test just one basic build, if succeds procced to test the rest
- "build"
@ -74,29 +76,17 @@ alpine amd64 manifest builder docker:
- 'docker/runtime-images/Dockerfile-manifest-builder'
- 'gitlab/build_manifest.py'
fedora amd64 run docker:
stage: "build runtime"
fedora amd64 docker:
stage: "build docker"
variables:
ARCH: "amd64"
TAG: "fedora-runtime"
CONTEXT_DIR: "docker/runtime-images/"
DOCKERFILE: "docker/runtime-images/Dockerfile-fedora"
TAG: "fedora"
CONTEXT_DIR: "docker/fedora/"
DOCKERFILE: "docker/fedora/Dockerfile"
extends: .base
only:
changes:
- 'docker/runtime-images/Dockerfile-fedora'
fedora amd64 build docker:
stage: "build base"
variables:
ARCH: "amd64"
TAG: "fedora-build"
CONTEXT_DIR: "docker/build-base-images/"
DOCKERFILE: "docker/build-base-images/Dockerfile-fedora"
extends: .base
only:
changes:
- 'docker/build-base-images/Dockerfile-fedora'
- 'docker/fedora/*'
ubuntu amd64 run docker:
stage: "build runtime"
@ -128,7 +118,7 @@ include: "gitlab/ci_template.yml"
build fedora x86_64 local:
extends: '.build'
stage: 'build'
image: "${CI_REGISTRY_IMAGE}/amd64/fedora-build:latest"
image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
build ubuntu x86_64 local:
extends: '.build'

View file

@ -1,70 +0,0 @@
FROM registry.freedesktop.org/gstreamer/gst-ci/amd64/fedora-runtime
# Add rpmfusion repositories and install all build dependencies of GStreamer
RUN dnf builddep -y \
gstreamer1 \
gstreamer1-plugins-base \
gstreamer1-plugins-good \
gstreamer1-plugins-good-extras \
gstreamer1-plugins-ugly \
gstreamer1-plugins-ugly-free \
gstreamer1-plugins-bad-nonfree \
gstreamer1-plugins-bad-free \
gstreamer1-plugins-bad-free-extras \
gstreamer1-plugins-bad-freeworld \
gstreamer1-libav \
gstreamer1-rtsp-server \
gstreamer1-vaapi \
python3-gstreamer1 \
&& \
rpm -e \
gstreamer1-devel \
gstreamer1-plugins-base-devel \
gstreamer1-plugins-bad-free-devel \
&& \
dnf install -y \
ccache \
gcc \
gcc-c++ \
gdb \
git \
ffmpeg \
ffmpeg-libs \
ffmpeg-devel \
procps-ng \
patch \
redhat-rpm-config \
json-glib \
json-glib-devel \
libnice \
libnice-devel \
libunwind \
libunwind-devel \
opencv \
opencv-devel \
openjpeg2 \
openjpeg2-devel \
x264 \
x264-libs \
x264-devel \
pygobject3-devel \
python3-gobject \
python3-cairo \
python3-cairo-devel \
xorg-x11-server-utils \
xorg-x11-server-Xvfb \
ninja-build \
cmake && \
dnf clean all && \
pip3 install meson hotdoc && \
export PATH="$PATH:/usr/local/lib/python3.6/site-packages"
ENV GST_BUILD_PATH="/gst-build/"
# Configure git for various usage
RUN git config --global user.email "gst-build@gstreamer.net" && git config --global user.name "Gstbuild Runner"
# get gst-build and make all subprojects available
RUN git clone git://anongit.freedesktop.org/gstreamer/gst-build $GST_BUILD_PATH && \
cd $GST_BUILD_PATH && \
meson build/ && \
rm -rf build/

6
docker/fedora/Dockerfile Normal file
View file

@ -0,0 +1,6 @@
FROM fedora:29
COPY prepare.sh cleanup.sh /root/
RUN /usr/bin/sh /root/prepare.sh && \
/usr/bin/sh /root/cleanup.sh

7
docker/fedora/cleanup.sh Normal file
View file

@ -0,0 +1,7 @@
set -eu
echo "Removing DNF cache"
dnf clean all
rm -R /root/*
rm -rf /var/cache/dnf /var/log/dnf*

84
docker/fedora/prepare.sh Normal file
View file

@ -0,0 +1,84 @@
set -eu
dnf install -y git ninja-build dnf-plugins-core
# Configure git for various usage
git config --global user.email "gst-build@gstreamer.net"
git config --global user.name "Gstbuild Runner"
# Add rpm fusion repositories in order to access all of the gst plugins
dnf install -y "http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-29.noarch.rpm" \
"http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-29.noarch.rpm"
rpm --import "/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-nonfree-fedora-29"
rpm --import "/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-29"
dnf upgrade -y
# Enable the cisco openh264 repo
dnf config-manager --set-enabled fedora-cisco-openh264
# install rest of the extra deps
dnf install -y ccache \
cmake \
elfutils \
gcc \
gcc-c++ \
gdb \
gtk3 \
gtk3-devel \
ffmpeg \
ffmpeg-libs \
ffmpeg-devel \
procps-ng \
patch \
redhat-rpm-config \
json-glib \
json-glib-devel \
libnice \
libnice-devel \
libunwind \
libunwind-devel \
opencv \
opencv-devel \
openjpeg2 \
openjpeg2-devel \
openh264 \
openh264-devel \
x264 \
x264-libs \
x264-devel \
python3-gobject \
python3-cairo \
python3-cairo-devel \
vulkan \
vulkan-devel \
xorg-x11-server-utils \
xorg-x11-server-Xvfb
pip3 install meson
# Add the pip3 installation to the path
export PATH="$PATH:/usr/local/lib/python3.7/site-packages"
# Install the dependencies of gstreamer
dnf builddep -y gstreamer1 \
gstreamer1-plugins-base \
gstreamer1-plugins-good \
gstreamer1-plugins-good-extras \
gstreamer1-plugins-ugly \
gstreamer1-plugins-ugly-free \
gstreamer1-plugins-bad-nonfree \
gstreamer1-plugins-bad-free \
gstreamer1-plugins-bad-free-extras \
gstreamer1-plugins-bad-freeworld \
gstreamer1-libav \
gstreamer1-rtsp-server \
gstreamer1-vaapi \
python3-gstreamer1 \
-x meson
# Remove gst-devel packages installed by builddep above
dnf remove -y "gstreamer1*devel"
# get gst-build and make all subprojects available
git clone git://anongit.freedesktop.org/gstreamer/gst-build /gst-build/
cd /gst-build && meson build/ && rm -rf build/

View file

@ -1,60 +0,0 @@
FROM fedora:29
# install the config manager
RUN dnf install -y dnf-plugins-core
# Add rpmfusion repositories and install all build dependencies of GStreamer
# and then remove the gst packages themselves
RUN echo "fastestmirror=true" >> /etc/dnf/dnf.conf && \
dnf install -y http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-29.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-29.noarch.rpm && \
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-nonfree-fedora-29 && \
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-29 && \
dnf upgrade -y && \
dnf install -y \
dnf-plugins-core \
git \
meson \
json-glib \
libnice \
libunwind \
openjpeg2 \
procps-ng \
x264 \
x264-libs \
python3-gobject \
python3-cairo \
ffmpeg \
ffmpeg-libs \
xorg-x11-server-utils \
xorg-x11-server-Xvfb \
&& \
dnf install -y \
gstreamer1 \
gstreamer1-plugins-base \
gstreamer1-plugins-good \
gstreamer1-plugins-good-extras \
gstreamer1-plugins-ugly \
gstreamer1-plugins-ugly-free \
gstreamer1-plugins-bad-nonfree \
gstreamer1-plugins-bad-free \
gstreamer1-plugins-bad-free-extras \
gstreamer1-plugins-bad-freeworld \
gstreamer1-libav \
gstreamer1-rtsp-server \
&& \
rpm -e \
gstreamer1 \
gstreamer1-plugins-base \
gstreamer1-plugins-good \
gstreamer1-plugins-good-extras \
gstreamer1-plugins-ugly \
gstreamer1-plugins-ugly-free \
gstreamer1-plugins-bad-nonfree \
gstreamer1-plugins-bad-free \
gstreamer1-plugins-bad-free-extras \
gstreamer1-plugins-bad-freeworld \
gstreamer1-rtsp-server \
gstreamer1-libav \
&& \
dnf clean all