ci_template: move the cerbero scripts from yaml to a new file
authorJordan Petridis <jordan@centricular.com>
Thu, 6 Aug 2020 17:21:44 +0000 (20:21 +0300)
committerJordan Petridis <jpetridis@gnome.org>
Tue, 15 Sep 2020 16:42:58 +0000 (16:42 +0000)
Its hard to manage ever growing bash scripts in yaml, and
its even harder to run them locally to reproduce the environment.

This is essentially a copy-paste of the scripts, to make review
easier. We can refactor later.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-ci/-/merge_requests/329>

gitlab/cerbero_setup.sh [new file with mode: 0644]
gitlab/ci_template.yml

diff --git a/gitlab/cerbero_setup.sh b/gitlab/cerbero_setup.sh
new file mode 100644 (file)
index 0000000..191f454
--- /dev/null
@@ -0,0 +1,72 @@
+set -ex
+
+show_ccache_sum() {
+    if [[ -n ${HAVE_CCACHE} ]]; then
+        ccache -s
+    fi
+}
+
+# Produces runtime and devel tarball packages for linux/android or .pkg for macos
+cerbero_package_and_check() {
+    $CERBERO $CERBERO_ARGS package --offline ${CERBERO_PACKAGE_ARGS} -o "$(pwd)" gstreamer-1.0
+
+    # Run gst-inspect-1.0 for some basic checks. Can't do this for cross-(android|ios)-universal, of course.
+    [[ $CONFIG == *universal* ]] || $CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX --version
+    [[ $CONFIG == *universal* ]] || $CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX
+    test "x${HAVE_CCACHE}" = "xyes" && ccache -s || true    # eat the return value from the failing test
+}
+
+cerbero_before_script() {
+    # FIXME Wrong namespace
+    # Workaround build-tools having hardcoded internal path
+    pwd
+    mkdir -p "../../gstreamer"
+    ln -sf "$(pwd)" "../../gstreamer/cerbero"
+    mkdir -p "../../${CI_PROJECT_NAMESPACE}"
+    ln -sf "$(pwd)" "../../${CI_PROJECT_NAMESPACE}/cerbero"
+    rsync -aH "${CERBERO_HOST_DIR}" .
+    echo "home_dir = \"$(pwd)/${CERBERO_HOME}\"" >> localconf.cbc
+    echo "local_sources = \"$(pwd)/${CERBERO_SOURCES}\"" >> localconf.cbc
+    ./cerbero-uninstalled --self-update manifest.xml
+}
+
+cerbero_script() {
+    test "x${HAVE_CCACHE}" = "xyes" && ccache --show-stats
+    $CERBERO $CERBERO_ARGS show-config
+    $CERBERO $CERBERO_ARGS fetch-bootstrap --build-tools-only
+    $CERBERO $CERBERO_ARGS fetch-package --deps gstreamer-1.0
+    $CERBERO $CERBERO_ARGS fetch-cache --branch "${GST_UPSTREAM_BRANCH}"
+
+    if [[ -n ${CERBERO_OVERRIDDEN_DIST_DIR} ]]; then
+        test -d "${CERBERO_HOME}/dist/${ARCH}"
+        mkdir -p "${CERBERO_OVERRIDDEN_DIST_DIR}"
+        rsync -aH "${CERBERO_HOME}/dist/${ARCH}/" "${CERBERO_OVERRIDDEN_DIST_DIR}"
+    fi
+
+    $CERBERO $CERBERO_ARGS bootstrap --offline --build-tools-only
+    cerbero_package_and_check
+}
+
+cerbero_deps_script() {
+    test "x${HAVE_CCACHE}" = "xyes" && ccache --show-stats
+    $CERBERO $CERBERO_ARGS show-config
+    $CERBERO $CERBERO_ARGS fetch-bootstrap --build-tools-only
+    $CERBERO $CERBERO_ARGS fetch-package --deps gstreamer-1.0
+    $CERBERO $CERBERO_ARGS bootstrap --offline --build-tools-only
+    $CERBERO $CERBERO_ARGS build-deps --offline \
+        gstreamer-1.0 gst-plugins-base-1.0 gst-plugins-good-1.0 \
+        gst-plugins-bad-1.0 gst-plugins-ugly-1.0 gst-rtsp-server-1.0 \
+        gst-libav-1.0 gst-devtools-1.0 gst-editing-services-1.0 libnice
+    test "x${CERBERO_OVERRIDDEN_DIST_DIR}" != "x" \
+        && mkdir -p "${CERBERO_HOME}/dist/${ARCH}" \
+        && rsync -aH "${CERBERO_OVERRIDDEN_DIST_DIR}/" "${CERBERO_HOME}/dist/${ARCH}"
+
+    $CERBERO $CERBERO_ARGS gen-cache --branch ${GST_UPSTREAM_BRANCH}
+
+    test "x${CERBERO_PRIVATE_SSH_KEY}" = "x" \
+        || $CERBERO $CERBERO_ARGS upload-cache --branch ${GST_UPSTREAM_BRANCH}
+    cerbero_package_and_check
+}
+
+# Run whichever function is asked of us
+eval "$1"
index cbc064a..bcdb6fb 100644 (file)
@@ -47,6 +47,10 @@ variables:
 
   WINDOWS_IMAGE: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v11-master'
 
+  # FIXME: after merging the script
+  # CERBERO_SCRIPT_URL: "https://gitlab.freedesktop.org/gstreamer/gst-ci/raw/${GST_UPSTREAM_BRANCH}/gitlab/cerbero_setup.sh"
+  CERBERO_SCRIPT_URL: 'https://gitlab.freedesktop.org/alatiera/gst-ci/-/raw/alatiera/cerbero-script-2/gitlab/cerbero_setup.sh'
+
   GIT_STRATEGY: none
   MESON_BUILDTYPE_ARGS: --default-library=both
   DEFAULT_MESON_ARGS: >
@@ -648,16 +652,6 @@ valgrind ges:
 # CONFIG: The name of the configuration file to use
 # ARCH: The cerbero <os>_<cpu> (used in cache key)
 #
-# Produces runtime and devel tarball packages for linux/android or .pkg for macos
-.cerbero template: &cerbero_package_and_check
-  - $CERBERO $CERBERO_ARGS package --offline ${CERBERO_PACKAGE_ARGS} -o $(pwd) gstreamer-1.0
-  # Run gst-inspect-1.0 for some basic checks. Can't do this for cross-(android|ios)-universal, of course.
-  - |-
-      [[ $CONFIG == *universal* ]] || $CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX --version
-  - |-
-      [[ $CONFIG == *universal* ]] || $CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX
-  - test "x${HAVE_CCACHE}" = "xyes" && ccache -s || true    # eat the return value from the failing test
-
 .cerbero:
   stage: "build"
   image: $CERBERO_IMAGE
@@ -690,29 +684,11 @@ valgrind ges:
     # location where cerbero is cached on the host
     CERBERO_HOST_DIR: "/cerbero/"
   before_script:
-    # FIXME Wrong namespace
-    # Workaround build-tools having hardcoded internal path
-    - pwd
-    - mkdir -p ../../gstreamer
-    - ln -sf $(pwd) ../../gstreamer/cerbero
-    - mkdir -p ../../${CI_PROJECT_NAMESPACE}
-    - ln -sf $(pwd) ../../${CI_PROJECT_NAMESPACE}/cerbero
-    - rsync -aH ${CERBERO_HOST_DIR} .
-    - echo "home_dir = \"$(pwd)/${CERBERO_HOME}\"" >> localconf.cbc
-    - echo "local_sources = \"$(pwd)/${CERBERO_SOURCES}\"" >> localconf.cbc
-    - ./cerbero-uninstalled --self-update manifest.xml
+    - curl -L -o cerbero_script.sh "${CERBERO_SCRIPT_URL}"
+    - chmod +x cerbero_script.sh
+    - ./cerbero_script.sh cerbero_before_script
   script:
-    - test "x${HAVE_CCACHE}" = "xyes" && ccache --show-stats
-    - $CERBERO $CERBERO_ARGS show-config
-    - $CERBERO $CERBERO_ARGS fetch-bootstrap --build-tools-only
-    - $CERBERO $CERBERO_ARGS fetch-package --deps gstreamer-1.0
-    - $CERBERO $CERBERO_ARGS fetch-cache --branch ${GST_UPSTREAM_BRANCH}
-    - test "x${CERBERO_OVERRIDDEN_DIST_DIR}" != "x"
-          && test -d ${CERBERO_HOME}/dist/${ARCH}
-          && mkdir -p ${CERBERO_OVERRIDDEN_DIST_DIR}
-          && rsync -aH ${CERBERO_HOME}/dist/${ARCH}/ ${CERBERO_OVERRIDDEN_DIST_DIR}
-    - $CERBERO $CERBERO_ARGS bootstrap --offline --build-tools-only
-    - *cerbero_package_and_check
+    - ./cerbero_script.sh cerbero_script
   cache:
     key: "${CI_JOB_NAME}"
     paths:
@@ -856,22 +832,7 @@ build msys2 :
   rules:
     - if: '$CI_PROJECT_NAME == "cerbero"'
   script:
-    - test "x${HAVE_CCACHE}" = "xyes" && ccache --show-stats
-    - $CERBERO $CERBERO_ARGS show-config
-    - $CERBERO $CERBERO_ARGS fetch-bootstrap --build-tools-only
-    - $CERBERO $CERBERO_ARGS fetch-package --deps gstreamer-1.0
-    - $CERBERO $CERBERO_ARGS bootstrap --offline --build-tools-only
-    - $CERBERO $CERBERO_ARGS build-deps --offline
-          gstreamer-1.0 gst-plugins-base-1.0 gst-plugins-good-1.0
-          gst-plugins-bad-1.0 gst-plugins-ugly-1.0 gst-rtsp-server-1.0
-          gst-libav-1.0 gst-devtools-1.0 gst-editing-services-1.0 libnice
-    - test "x${CERBERO_OVERRIDDEN_DIST_DIR}" != "x"
-          && mkdir -p ${CERBERO_HOME}/dist/${ARCH}
-          && rsync -aH ${CERBERO_OVERRIDDEN_DIST_DIR}/ ${CERBERO_HOME}/dist/${ARCH}
-    - $CERBERO $CERBERO_ARGS gen-cache --branch ${GST_UPSTREAM_BRANCH}
-    - test "x${CERBERO_PRIVATE_SSH_KEY}" = "x"
-          || $CERBERO $CERBERO_ARGS upload-cache --branch ${GST_UPSTREAM_BRANCH}
-    - *cerbero_package_and_check
+    - ./cerbero_script.sh cerbero_deps_script
 
 #
 # Cerbero Linux X86_64 build