diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f076999936..971027ff7f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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' diff --git a/docker/build-base-images/Dockerfile-fedora b/docker/build-base-images/Dockerfile-fedora deleted file mode 100644 index 2c15aec403..0000000000 --- a/docker/build-base-images/Dockerfile-fedora +++ /dev/null @@ -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/ diff --git a/docker/fedora/Dockerfile b/docker/fedora/Dockerfile new file mode 100644 index 0000000000..0e80c32fa0 --- /dev/null +++ b/docker/fedora/Dockerfile @@ -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 diff --git a/docker/fedora/cleanup.sh b/docker/fedora/cleanup.sh new file mode 100644 index 0000000000..73d62c773e --- /dev/null +++ b/docker/fedora/cleanup.sh @@ -0,0 +1,7 @@ +set -eu + +echo "Removing DNF cache" +dnf clean all + +rm -R /root/* +rm -rf /var/cache/dnf /var/log/dnf* diff --git a/docker/fedora/prepare.sh b/docker/fedora/prepare.sh new file mode 100644 index 0000000000..9de5b6d6a1 --- /dev/null +++ b/docker/fedora/prepare.sh @@ -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/ \ No newline at end of file diff --git a/docker/runtime-images/Dockerfile-fedora b/docker/runtime-images/Dockerfile-fedora deleted file mode 100644 index 936ffb9514..0000000000 --- a/docker/runtime-images/Dockerfile-fedora +++ /dev/null @@ -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 \ No newline at end of file