Use new `libraries` subprojects variables to statically link then
[platform/upstream/gstreamer.git] / .gitlab-ci.yml
index b70e406..a1bf171 100644 (file)
@@ -25,7 +25,7 @@ variables:
   ###
   FEDORA_TAG:  '2021-10-05.0'
   INDENT_TAG: '2021-10-04.0'
-  WINDOWS_TAG: "2021-10-04.1"
+  WINDOWS_TAG: "2021-10-12.0"
 
   GST_UPSTREAM_REPO: 'gstreamer/gstreamer'
   FDO_UPSTREAM_REPO: 'gstreamer/gstreamer'
@@ -113,15 +113,13 @@ trigger:
   rules:
     # If the MR is assigned to the Merge bot, trigger the pipeline automatically
     - if: '$CI_MERGE_REQUEST_ASSIGNEES == "gstreamer-merge-bot"'
+    # Alway run tests post merged
+    - if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
     # When the assignee isn't the merge bot, require an explicit action to trigger the pipeline
     # to avoid wasting CI resources
     - if: '$CI_MERGE_REQUEST_ASSIGNEES != "gstreamer-merge-bot"'
       when: 'manual'
       allow_failure: false
-    # If this matches, it means the pipeline is running against either the main
-    # or a stable branch, so make it manual
-    - if: '$CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
-      when: 'manual'
 
 .fedora image:
   variables:
@@ -135,6 +133,8 @@ fedora amd64 docker:
     - '.fedora image'
     - '.fdo.container-build@fedora'
   stage: 'build docker'
+  needs:
+    - "trigger"
 
 .gst-indent image:
   variables:
@@ -330,6 +330,13 @@ gst indent:
     when: "always"
     paths:
       - 'meson-logs/'
+  rules:
+    # If this matches, it means the pipeline is running against either the main
+    # or a stable branch, so make it manual
+    - if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
+      when: manual
+    - changes:
+        *modules_changes
 
 .build fedora x86_64:
   extends:
@@ -340,9 +347,6 @@ gst indent:
     - "fedora amd64 docker"
   variables:
     MESON_ARGS: *simple_build
-  rules:
-    - changes:
-        *modules_changes
 
 build nodebug fedora x86_64:
   extends:
@@ -389,6 +393,10 @@ build clang fedora x86_64:
       -Dgst-plugins-base:pango=enabled
       -Dgst-plugins-good:cairo=enabled
   rules:
+    # If this matches, it means the pipeline is running against either the main
+    # or a stable branch, so make it manual
+    - if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
+      when: manual
     - changes:
         *modules_changes
   before_script:
@@ -430,26 +438,17 @@ build msys2 :
     # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-6
     - $ErrorActionPreference = "Stop"
 
-    # For some reason docker build hangs if this is included in the image, needs more troubleshooting
-    - $env:PATH += ';C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\msys64\mingw32\bin'
-    # Copied from https://github.com/msys2/setup-msys2/blob/master/main.js#L98
-    - C:\msys64\usr\bin\bash -c "pacman-key --init && pacman-key --populate msys2 && pacman-key --refresh-keys || true"
-    - C:\msys64\usr\bin\bash -c "sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf"
-    - echo "Updating MSYS2"
-    - C:\msys64\usr\bin\bash -c "pacman -Syuu --noconfirm || echo Update failed, ignoring"
-    - echo "Killing all MSYS2 processes"
-    - taskkill /F /FI "MODULES eq msys-2.0.dll"
-    - echo "Completing MSYS2 update"
-    - C:\msys64\usr\bin\bash -c "pacman -Suu --noconfirm"
-    - echo "Installing needed MSYS2 packages"
-    - C:\msys64\usr\bin\bash -c "pacman -Sy --noconfirm --needed mingw-w64-x86_64-toolchain ninja"
-
+    # Configure MSYS2 to use the UCRT64 environment, start in the same directory
+    # and inherit PATH
+    - $env:MSYSTEM = "UCRT64"
+    - $env:CHERE_INVOKING = "1"
+    - $env:MSYS2_PATH_TYPE = "inherit"
     # For some reason, options are separated by newline instead of space, so we
     # have to replace them first.
     - $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
     # Replace forward slashes with backwards so bash doesn't complain
     - $env:_PROJECT_DIR = $env:CI_PROJECT_DIR.replace('\','/')
-    - C:\msys64\usr\bin\bash -c "meson build $env:MESON_ARGS && ninja -C build"
+    - C:\msys64\usr\bin\bash -lc "meson build $env:MESON_ARGS && ninja -C build"
 
 # ---- Tests ----- #
 
@@ -481,6 +480,7 @@ build msys2 :
     - >
       ./gst-env.py
       gst-validate-launcher ${TEST_SUITE}
+      --check-bugs
       --dump-on-failure
       --mute
       --shuffle
@@ -521,7 +521,7 @@ integration testsuites fedora:
   extends: '.test fedora x86_64'
   parallel: 4
   variables:
-    EXTRA_VALIDATE_ARGS: "--timeout-factor=2 --retry-on-failures --check-bugs --parts=${CI_NODE_TOTAL} --part-index=${CI_NODE_INDEX}"
+    EXTRA_VALIDATE_ARGS: "--timeout-factor=2 --retry-on-failures --parts=${CI_NODE_TOTAL} --part-index=${CI_NODE_INDEX} --sync"
     TEST_SUITE: "validate ges"
 
 # gstreamer-full:
@@ -536,10 +536,14 @@ gstreamer-full:
       -Dintrospection=disabled
       $MESON_GST_WERROR
   rules:
+    # If this matches, it means the pipeline is running against either the main
+    # or a stable branch, so make it manual
+    - if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
+      when: manual
     - changes:
       - "*"
       - scripts/*
-      - subprojects/gst-ci/**/*
+      - ci/**/*
 
   script:
   - *build
@@ -567,8 +571,6 @@ gstreamer-full-minimal:
       -Dgst-full-device-providers=alsa:alsadeviceprovider
       -Dgst-full-dynamic-types=pbtypes:video_multiview_flagset
       $MESON_GST_WERROR
-  rules:
-    - if: '$CI_PROJECT_NAME =~ /^(gst-build|gst-ci)$/'
 
   script:
   - *build
@@ -591,25 +593,29 @@ gstreamer-full-minimal:
 
 valgrind core:
   extends: '.valgrind fedora x86_64'
+  parallel: 2
   variables:
     TEST_SUITE: "check.gstreamer\\..*"
+    EXTRA_VALIDATE_ARGS: "--valgrind --parts=${CI_NODE_TOTAL} --part-index=${CI_NODE_INDEX}"
   rules:
     - changes:
       - "*"
       - scripts/*
-      - subprojects/gst-ci/**/*
+      - ci/**/*
       - subprojects/gst-devtools/**/*
       - subprojects/gstreamer/**/*
 
 valgrind base:
   extends: '.valgrind fedora x86_64'
+  parallel: 4
   variables:
     TEST_SUITE: "check.gst-plugins-base\\..*"
+    EXTRA_VALIDATE_ARGS: "--valgrind --parts=${CI_NODE_TOTAL} --part-index=${CI_NODE_INDEX}"
   rules:
     - changes:
       - "*"
       - scripts/*
-      - subprojects/gst-ci/**/*
+      - ci//**/*
       - subprojects/gst-devtools/**/*
       - subprojects/gstreamer/**/*
       - subprojects/gst-plugins-base/**/*
@@ -624,7 +630,7 @@ valgrind good:
     - changes:
       - "*"
       - scripts/*
-      - subprojects/gst-ci/**/*
+      - ci/**/*
       - subprojects/gst-devtools/**/*
       - subprojects/gstreamer/**/*
       - subprojects/gst-plugins-base/**/*
@@ -638,7 +644,7 @@ valgrind ugly:
     - changes:
       - "*"
       - scripts/*
-      - subprojects/gst-ci/**/*
+      - ci/**/*
       - subprojects/gst-devtools/**/*
       - subprojects/gstreamer/**/*
       - subprojects/gst-plugins-base/**/*
@@ -653,7 +659,7 @@ valgrind bad:
     - changes:
       - "*"
       - scripts/*
-      - subprojects/gst-ci/**/*
+      - ci/**/*
       - subprojects/gst-devtools/**/*
       - subprojects/gstreamer/**/*
       - subprojects/gst-plugins-base/**/*
@@ -668,7 +674,7 @@ valgrind ges:
     - changes:
       - "*"
       - scripts/*
-      - subprojects/gst-ci/**/*
+      - ci/**/*
       - subprojects/gst-devtools/**/*
       - subprojects/gstreamer/**/*
       - subprojects/gst-plugins-base/**/*
@@ -702,7 +708,7 @@ valgrind ges:
     - plugins-cache-diffs/
 
 #
-# This jobs runs in gsrtreamer namespace when after the merge into main branch.
+# This jobs runs in gstreamer namespace when after the merge into main branch.
 # The produced artifact is later used to automatically update the web page.
 #
 documentation:
@@ -724,6 +730,9 @@ build documentation:
   needs:
     - "trigger"
   rules:
+    # Never run post merge, we have the `documentation` always running for that
+    - if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
+      when: never
     - changes:
       - .gitlab-ci.yml
       - ci/gitlab/freedesktop_doc_importer.sh
@@ -754,6 +763,9 @@ cerbero trigger:
     - ci/gitlab/trigger_cerbero_pipeline.py
 
   rules:
+    # Never run post merge
+    - if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
+      when: never
     - changes:
       - .gitlab-ci.yml
       - ci/gitlab/trigger_cerbero_pipeline.py