misc: Add script to fetch build artifacts and impersonate jenkins environment
[lttng-ci.git] / scripts / lttng-modules / master.groovy
index 3ce6f9a723dfeea033586e1be909fdc39afe9932..92fb0c355755e384e4ba7609aaf908008f050116 100644 (file)
@@ -163,6 +163,120 @@ class VanillaKVersion implements Comparable<VanillaKVersion> {
   }
 }
 
+class SlesKVersion implements Comparable<SlesKVersion> {
+  Integer major = 0
+  Integer minor = 0
+  Integer patch = 0
+  Integer slesrelease = 0
+  Integer slesmajor = 0
+  Integer slesminor = 0
+
+  SlesKVersion() {}
+
+  SlesKVersion(version) {
+    this.parse(version)
+  }
+
+  static SlesKVersion minKVersion() {
+    return new SlesKVersion("rpm-0.0.0-0.0.0")
+  }
+
+  static SlesKVersion maxKVersion() {
+    return new SlesKVersion("rpm-" + Integer.MAX_VALUE + ".0.0-0.0.0")
+  }
+
+  static SlesKVersion factory(version) {
+    return new SlesKVersion(version)
+  }
+
+  def parse(version) {
+    this.major = 0
+    this.minor = 0
+    this.patch = 0
+    this.slesrelease = 0
+    this.slesmajor = 0
+    this.slesminor = 0
+
+    if (!version) {
+      throw new EmptyKVersionException("Empty kernel version")
+    }
+
+    // Eg. 5.14.21-150400.22
+    // Eg. 5.14.21-150400.24.100.2
+    // From tag: rpm-5.14.21-150400.24.100 -> 5.14.21-150400.24.100
+    def match = version =~ /^(rpm-)??(\d+)\.(\d+)\.(\d+)-(\d+)\.(\d+)(\.\d+)??$/
+    if (!match) {
+      throw new InvalidKVersionException("Invalid kernel version: ${version}")
+    }
+
+    this.major = Integer.parseInt(match.group(2))
+    this.minor = Integer.parseInt(match.group(3))
+    this.patch = Integer.parseInt(match.group(4))
+    this.slesrelease = Integer.parseInt(match.group(5))
+    this.slesmajor = Integer.parseInt(match.group(6))
+
+    if (match.group(7) != null) {
+      this.slesminor = Integer.parseInt(match.group(7).drop(1))
+    }
+  }
+
+  Boolean isRC() {
+    return false
+  }
+
+  Boolean isSameStable(SlesKVersion o) {
+    if (this.major != o.major) {
+      return false
+    }
+    if (this.minor != o.minor) {
+      return false
+    }
+    if (this.patch != o.patch) {
+      return false
+    }
+    if (this.slesrelease != o.slesrelease) {
+      return false
+    }
+    if (this.slesmajor != o.slesmajor) {
+      return false
+    }
+    if (this.slesminor != o.slesminor) {
+      return false
+    }
+    return true
+  }
+
+  @Override int compareTo(SlesKVersion o) {
+    if (this.major != o.major) {
+      return Integer.compare(this.major, o.major)
+    }
+    if (this.minor != o.minor) {
+      return Integer.compare(this.minor, o.minor)
+    }
+    if (this.patch != o.patch) {
+      return Integer.compare(this.patch, o.patch)
+    }
+    if (this.slesrelease != o.slesrelease) {
+      return Integer.compare(this.slesrelease, o.slesrelease)
+    }
+    if (this.slesmajor != o.slesmajor) {
+      return Integer.compare(this.slesmajor, o.slesmajor)
+    }
+    if (this.slesminor != o.slesminor) {
+      return Integer.compare(this.slesminor, o.slesminor)
+    }
+    return 0
+  }
+
+  String toString() {
+    String vString = "rpm-${this.major}.${this.minor}.${patch}-${this.slesrelease}.${this.slesmajor}"
+    if (this.slesminor != 0) {
+      vString = vString.concat(".${this.slesminor}")
+    }
+    return vString
+  }
+}
+
 class UbuntuKVersion implements Comparable<UbuntuKVersion> {
 
   Integer major = 0
@@ -316,6 +430,7 @@ def kverfloor_raw = build.buildVariableResolver.resolve('kverfloor')
 def kverceil_raw = build.buildVariableResolver.resolve('kverceil')
 def kverfilter = build.buildVariableResolver.resolve('kverfilter')
 def kverrc = build.buildVariableResolver.resolve('kverrc')
+def slesversion = build.buildVariableResolver.resolve('slesversion')
 def uversion = build.buildVariableResolver.resolve('uversion')
 def job = Hudson.instance.getJob(build.buildVariableResolver.resolve('kbuildjob'))
 def currentJobName = build.project.getFullDisplayName()
@@ -342,7 +457,27 @@ def matchStrs = []
 def blacklist = []
 def kversionFactory = ""
 
-if (uversion != null) {
+if (slesversion != null) {
+  kversionFactory = new SlesKVersion()
+  switch (slesversion) {
+    case 'sles15sp4':
+      matchStrs = [
+        ~/^refs\/tags\/(rpm-5.14.21-150400\.22(\.\d+)?(\.\d+)?)$/,
+        ~/^refs\/tags\/(rpm-5.14.21-150400\.24(\.\d+)?(\.\d+)?)$/,
+      ]
+      blacklist = [
+        // "Retracted", @see https://www.suse.com/support/kb/doc/?id=000019587#SLE15SP4
+        'rpm-5.14.21-150400.24.49',
+        'rpm-5.14.21-150400.24.84',
+      ]
+      break
+
+    default:
+      println "Unsupported SLES version: ${slesversion}"
+      throw new InterruptedException()
+      break
+  }
+} else if (uversion != null) {
   kversionFactory = new UbuntuKVersion()
   switch (uversion) {
     case 'jammy':
@@ -357,6 +492,13 @@ if (uversion != null) {
       matchStrs = [
         ~/^refs\/tags\/(Ubuntu-5\.4\.0-\d{1,3}?\.[\d]+)$/,
         ~/^refs\/tags\/(Ubuntu-hwe-5\.13-5\.13\.0-.*_20\.04\.\d+)$/,
+        ~/^refs\/tags\/(Ubuntu-hwe-5\.15-5\.15\.0-.*_20\.04\.\d+)$/,
+      ]
+      break
+
+    case 'noble':
+      matchStrs = [
+        ~/^refs\/tags\/(Ubuntu-6\.8\.0-\d{1,3}?\.[\d]+)$/,
       ]
       break
 
@@ -436,14 +578,27 @@ switch (kverfilter) {
     println('Filter kernel versions to keep only the latest point release of each lts branch and the current stable.')
 
     def lts_kversions = []
+    // Old LTS entries are kept so that "lts-head" is still meaningful in kernel
+    // version ranges that are supported by lttng-modules but no longer supported
+    // upstream, eg. lttng-modules stable-2.13 supports >= 3.0
+    lts_kversions.add(kversionFactory.factory("v3.0"))  // LTS until October 2013
+    lts_kversions.add(kversionFactory.factory("v3.2"))  // LTS until May 2018
+    lts_kversions.add(kversionFactory.factory("v3.4"))  // LTS until October 2016
+    lts_kversions.add(kversionFactory.factory("v3.10")) // LTS until November 2017
+    lts_kversions.add(kversionFactory.factory("v3.12")) // LTS until May 2017
+    lts_kversions.add(kversionFactory.factory("v3.14")) // LTS until August 2016
+    lts_kversions.add(kversionFactory.factory("v3.16")) // LTS until October 2014
+    lts_kversions.add(kversionFactory.factory("v3.18")) // LTS until January 2017
+    lts_kversions.add(kversionFactory.factory("v4.1"))  // LTS until May 2018
     lts_kversions.add(kversionFactory.factory("v4.4"))  // SLTS until 2026
     lts_kversions.add(kversionFactory.factory("v4.9"))  // LTS until January 2023
     lts_kversions.add(kversionFactory.factory("v4.14")) // LTS until January 2024
     lts_kversions.add(kversionFactory.factory("v4.19")) // LTS until December 2024
     lts_kversions.add(kversionFactory.factory("v5.4"))  // LTS until December 2025
     lts_kversions.add(kversionFactory.factory("v5.10")) // LTS until December 2026
-    lts_kversions.add(kversionFactory.factory("v5.15")) // LTS until October 2026
+    lts_kversions.add(kversionFactory.factory("v5.15")) // LTS until December 2026
     lts_kversions.add(kversionFactory.factory("v6.1"))  // LTS until December 2026
+    lts_kversions.add(kversionFactory.factory("v6.6"))  // LTS until December 2026
 
     // First filter the head of each branch
     for (i = 0; i < kversions.size(); i++) {
This page took 0.028991 seconds and 4 git commands to generate.