osmith has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ci/+/29604 )

Change subject: jobs/gerrit-binpkgs: new job for deb, rpm packages
......................................................................

jobs/gerrit-binpkgs: new job for deb, rpm packages

Build deb and rpm packages for each patch submitted to gerrit for the
projects in the list.

Example:
https://gerrit.osmocom.org/c/osmo-bsc-nat/+/29492

Related: OS#2385
Change-Id: I7ca8869c2e9f2e7c74a360933be12b5c2b47c2fc
---
A jobs/gerrit-binpkgs.yml
M jobs/gerrit-verifications.yml
2 files changed, 205 insertions(+), 9 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  osmith: Looks good to me, approved



diff --git a/jobs/gerrit-binpkgs.yml b/jobs/gerrit-binpkgs.yml
new file mode 100644
index 0000000..5c72a41
--- /dev/null
+++ b/jobs/gerrit-binpkgs.yml
@@ -0,0 +1,118 @@
+# This file holds all gerrit verifications for building deb and rpm packages.
+# https://jenkins.osmocom.org/jenkins/view/Jenkins-Gerrit/.
+# One can simply add a gerrit job by adding project's repository to repos list.
+
+- project:
+    name: gerrit-binpkgs
+    jobs:
+      - 'gerrit-binpkgs-{type}'
+    type:
+      - 'deb'
+      - 'rpm'
+
+- job-template:
+    name: 'gerrit-binpkgs-{type}'
+    project-type: freestyle
+    node: osmocom-gerrit-debian10 || osmocom-gerrit-debian11
+    concurrent: true
+    retry-count: 3 # scm checkout
+    properties:
+      - build-discarder:
+          days-to-keep: 30
+          num-to-keep: 120
+          artifact-days-to-keep: -1
+          artifact-num-to-keep: -1
+    description: |
+      {type} package job of CI for patches sent to
+      <a href="https://gerrit.osmocom.org";>gerrit</a>
+      </br></br>
+      Related issue: <a href="https://osmocom.org/issues/2385";>OS#2385</a>
+
+    parameters:
+      - string:
+          name: BRANCH_CI
+          description: |
+                osmo-ci.git branch
+          default: 'origin/master'
+      - string:
+          name: GERRIT_REPO_URL
+          description: set by gerrit verification pipeline job
+      - string:
+          name: GERRIT_BRANCH
+          description: set by gerrit verification pipeline job
+      - string:
+          name: GERRIT_REFSPEC
+          description: set by gerrit verification pipeline job
+      - string:
+          name: PROJECT_NAME
+          description: project to test, e.g. 'libosmocore' (set by pipeline)
+
+    scm:
+      - git:
+         basedir: 'code-from-gerrit'
+         url: '$GERRIT_REPO_URL'
+         credentials-id: d5eda5e9-b59d-44ba-88d2-43473cb6e42d
+         branches:
+           - $GERRIT_BRANCH
+         refspec: $GERRIT_REFSPEC
+         name:
+         choosing-strategy: gerrit
+         wipe-workspace: true
+         skip-tag: true
+         submodule:
+           recursive: false
+      - git:
+         basedir: 'osmo-ci'
+         url: 'https://gerrit.osmocom.org/osmo-ci'
+         credentials-id: d5eda5e9-b59d-44ba-88d2-43473cb6e42d
+         branches:
+           - '$BRANCH_CI'
+         wipe-workspace: true
+
+    builders:
+      - shell: |-
+          # Skip rpm build if .spec.in file is missing
+          if [ "{type}" = "rpm" ] && [ -z "$(find code-from-gerrit -name 
'*.spec.in')" ]; then
+            set +x
+            echo
+            echo "No *.spec.in file found, skipping rpm build."
+            echo
+            exit 0
+          fi
+
+          # Get distro from type
+          case "{type}" in
+          deb) distro="debian:11" ;;
+          rpm) distro="almalinux:8" ;;
+          *) echo "unknown package format: '{type}'"; exit 1 ;;
+          esac
+
+          # Move code from gerrit to build_srcpkg.py's git cache
+          cache_dir=osmo-ci/scripts/obs/_cache
+          mkdir -p $cache_dir
+          mv code-from-gerrit "$cache_dir/$PROJECT_NAME"
+
+          # Set a known branch name
+          git -C "$cache_dir/$PROJECT_NAME" checkout -B "origin/gerrit"
+
+          # Build source package
+          cd osmo-ci/scripts/obs/
+          ./build_srcpkg.py \
+            --docker \
+            --feed master \
+            --git-branch gerrit \
+            --git-skip-fetch \
+            "$PROJECT_NAME"
+
+          # Build binary package
+          ./build_binpkg.py \
+            --docker "$distro" \
+            "$PROJECT_NAME"
+    wrappers:
+    - ansicolor:
+        colormap: xterm
+    - ssh-agent-credentials:
+        users:
+        - d5eda5e9-b59d-44ba-88d2-43473cb6e42d
+
+# vim: expandtab tabstop=2 shiftwidth=2
diff --git a/jobs/gerrit-verifications.yml b/jobs/gerrit-verifications.yml
index 135e04f..5235525 100644
--- a/jobs/gerrit-verifications.yml
+++ b/jobs/gerrit-verifications.yml
@@ -67,14 +67,18 @@
     # Which jobs to run in the pipeline
     pipeline_build: true
     pipeline_lint: true
+    pipeline_binpkgs: true

     # in alphabetical order
     repos:
-      - asn1c
+      - asn1c:
+          pipeline_binpkgs: false
+
       - cellmgr-ng

       - docker-playground:
           pipeline_build: false
+          pipeline_binpkgs: false

       - libasn1c
       - libgtpnl
@@ -91,7 +95,10 @@
           cmd: '{docker_run} {docker_img} {timeout_cmd} 
/build/contrib/jenkins_arch.sh "$arch"'

       - libsmpp34
-      - libtelnet
+
+      - libtelnet:
+          pipeline_binpkgs: false
+
       - libusrp

       - openbsc:
@@ -152,6 +159,7 @@
       - osmo-e1-hardware:
           docker_img: 'registry.osmocom.org/$USER/fpga-build'
           cmd: 'docker pull {docker_img} && {docker_run} {docker_img} 
{timeout_cmd} /build/contrib/jenkins.sh'
+          pipeline_binpkgs: false

       - osmo-ggsn:
           a1_name: GTP
@@ -173,6 +181,7 @@
           repos_url: '{gerrit_url}/erlang/{repos}'
           gerrit_project: 'erlang/{repos}'
           cmd: '{docker_run} {docker_img_erlang} {timeout_cmd} 
/build/contrib/jenkins.sh'
+          pipeline_binpkgs: false

       - osmo-hlr
       - osmo-iuh
@@ -242,6 +251,7 @@
           repos_url: '{gerrit_url}/erlang/{repos}'
           gerrit_project: 'erlang/{repos}'
           cmd: '{docker_run} {docker_img_erlang} {timeout_cmd} 
/build/contrib/jenkins.sh'
+          pipeline_binpkgs: false

       - osmo-sip-connector

@@ -262,22 +272,41 @@
               -e WITH_MANUALS="$WITH_MANUALS" \
               {docker_img} {timeout_cmd} /build/contrib/jenkins.sh

-      - osmocom-bb
-      - osmo-tetra
+      - osmocom-bb:
+          pipeline_binpkgs: false
+
+      - osmo-tetra:
+          pipeline_binpkgs: false
+
       - osmo-sysmon
       - osmo-remsim
       - simtrace2
+
       - osmo-opencm3-projects:
           docker_img: '$USER/debian-bullseye-jenkins'
           cmd: '{docker_run} {docker_img} {timeout_cmd} 
/build/contrib/jenkins.sh'
-      - osmo-asf4-dfu
-      - osmo-ccid-firmware
+          pipeline_binpkgs: false
+
+      - osmo-asf4-dfu:
+          pipeline_binpkgs: false
+
+      - osmo-ccid-firmware:
+          pipeline_binpkgs: false
+
       - osmo-e1d
       - osmo-cbc
-      - osmo-e1-recorder
-      - gapk
+
+      - osmo-e1-recorder:
+          pipeline_binpkgs: false
+
+      - gapk:
+          pipeline_binpkgs: false
+
       - osmo-uecups
-      - osmo-el2tpd
+
+      - osmo-el2tpd:
+          pipeline_binpkgs: false
+
       - osmo-smlc
       - osmo-gbproxy
       - osmo-hnodeb
@@ -288,6 +317,7 @@
           slave_axis: !!python/tuple [simtester]
           concurrent: false
           cmd: '{timeout_cmd} ./contrib/jenkins.sh'
+          pipeline_binpkgs: false

       - osmo-ttcn3-hacks:
           slave_axis: !!python/tuple [ttcn3]
@@ -304,9 +334,11 @@
                 su build -c 'make clean';
                 su build -c 'make compile';
                 "
+          pipeline_binpkgs: false

       - dahdi-tools:
           pipeline_lint: false
+          pipeline_binpkgs: false

     jobs:
       - 'gerrit-{repos}'
@@ -328,6 +360,10 @@
           name: REPO_URL
           description: Clone URL, to be passed to jobs started in the pipeline
           default: '{obj:repos_url}'
+      - bool:
+          name: PIPELINE_BINPKGS
+          description: Enable the binpkgs job (build deb/rpm packages)
+          default: '{obj:pipeline_binpkgs}'
     dsl: |
       pipeline {{
         agent {{ label "osmocom-gerrit" }}
@@ -374,12 +410,54 @@
                   }}
                 }}
               }}
+              stage("deb") {{
+                when {{
+                  expression {{ params.PIPELINE_BINPKGS }}
+                }}
+                steps {{
+                  script {{
+                    // Run the binpkgs job for this repository and keep going 
on failure
+                    catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') 
{{
+                        env.PIPELINE_DEB_PASSED = "0"
+                        build job: 'gerrit-binpkgs-deb', parameters: [
+                          string(name: "GERRIT_BRANCH", value: 
"${{env.GERRIT_BRANCH}}"),
+                          string(name: "GERRIT_REFSPEC", value: 
"${{env.GERRIT_REFSPEC}}"),
+                          string(name: "GERRIT_REPO_URL", value: 
"${{env.REPO_URL}}"),
+                          string(name: "PROJECT_NAME", value: "{repos}"),
+                        ]
+                        env.PIPELINE_DEB_PASSED = "1"
+                    }}
+                  }}
+                }}
+              }}
+              stage("rpm") {{
+                  when {{
+                    expression {{ params.PIPELINE_BINPKGS }}
+                  }}
+                  steps {{
+                    script {{
+                      // Run the binpkgs job for this repository and keep 
going on failure
+                      catchError(buildResult: 'SUCCESS', stageResult: 
'FAILURE') {{
+                        env.PIPELINE_RPM_PASSED = "0"
+                        build job: 'gerrit-binpkgs-rpm', parameters: [
+                          string(name: "GERRIT_BRANCH", value: 
"${{env.GERRIT_BRANCH}}"),
+                          string(name: "GERRIT_REFSPEC", value: 
"${{env.GERRIT_REFSPEC}}"),
+                          string(name: "GERRIT_REPO_URL", value: 
"${{env.REPO_URL}}"),
+                          string(name: "PROJECT_NAME", value: "{repos}"),
+                        ]
+                        env.PIPELINE_RPM_PASSED = "1"
+                    }}
+                  }}
+                }}
+              }}
             }}
           }}
           stage("Result") {{
             steps {{
               echo "PIPELINE_BUILD_PASSED=${{env.PIPELINE_BUILD_PASSED}}"
               echo "PIPELINE_LINT_PASSED=${{env.PIPELINE_LINT_PASSED}}"
+              echo "PIPELINE_DEB_PASSED=${{env.PIPELINE_DEB_PASSED}}"
+              echo "PIPELINE_RPM_PASSED=${{env.PIPELINE_RPM_PASSED}}"
             }}
           }}
           // The end result is success if all started jobs were successful,

--
To view, visit https://gerrit.osmocom.org/c/osmo-ci/+/29604
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Change-Id: I7ca8869c2e9f2e7c74a360933be12b5c2b47c2fc
Gerrit-Change-Number: 29604
Gerrit-PatchSet: 5
Gerrit-Owner: osmith <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-CC: msuraev <[email protected]>
Gerrit-MessageType: merged

Reply via email to