Allow dput job to only upload version-specific .deb files for beta/devel builds
authorChristoph Berg <myon@debian.org>
Fri, 1 Jan 2016 19:33:18 +0000 (20:33 +0100)
committerChristoph Berg <myon@debian.org>
Fri, 1 Jan 2016 19:33:18 +0000 (20:33 +0100)
jenkins/dput-pgdg
jenkins/pgapt-jobs.yaml

index 3e9de03d8f330ea0950e9dcfcc995fff32ede7b8..3b9b045ace09a943d45040c8a60376756ceb5f1c 100755 (executable)
@@ -14,8 +14,18 @@ set -eux
 CHANGES="$(find . -name '*.changes')"
 
 dcmd chmod a+r $CHANGES
+
 # work around reprepro #808558
 perl -i -pe 's/ (\S+)/ $1 $1-dbgsym/g if /^Binary:/' $CHANGES
+
+# upload only version-specific .deb files when requested
+if [ "${upload:-all}" = "extension-only" ]; then
+       for c in $CHANGES; do
+               NONEXTDEBS=$(dcmd --deb echo $c | xargs -n1 | egrep -v -- '[^_]-[1-9][0-9]?\.[0-9][-_]' | sed -e 's!.*/!!')
+               changestool $c dumbremove $NONEXTDEBS
+       done
+fi
+
 dcmd rsync -av $CHANGES $HOST:/srv/apt/$QUEUE
 
 # call processincoming once for all packages uploaded
index 53d726a3885db22f0e7dcad63a48a7bb787cbc4c..c58bb193bd17aaef281d3714e439c3db8add2059 100644 (file)
                     - normal
             description: 'snapshot: if changelog is UNRELEASED, build a snapshot tarball with a ~date version. With snapshot-dot, use a .date version.'
 
+    upload_choice: &upload_choice
+            name: upload
+            choices:
+                    - all
+                    - extension-only
+            description: 'all: upload all .deb files built, extension-only: upload PostgreSQL-version-specific .deb files only'
+
     arch_axis: &arch_axis
             type: user-defined
             name: architecture
         project-type: matrix
         parameters:
                 - choice: *queue_choice
+                - choice: *upload_choice
         execution-strategy: &binaries_execution_strategy
                 combination-filter: '{dist-filter}'
                 touchstone:
                 - trigger-parameterized-builds: &next_job_trigger
                         - project: '{next-job}'
                           condition: SUCCESS
-                          predefined-parameters: "binaries=$JOB_NAME\nqueue=$queue"
+                          predefined-parameters: |
+                                binaries=$JOB_NAME
+                                queue=$queue
+                                upload=$upload
                 - groovy-postbuild: *add_version_tag
                 - workspace-cleanup
 
                 - trigger-parameterized-builds:
                         - project: '{name}-binaries-beta'
                           condition: SUCCESS
-                          predefined-parameters: "queue=$queue"
+                          predefined-parameters: |
+                                queue=$queue
+                                upload=extension-only
                 - trigger-parameterized-builds:
                         - project: '{name}-binaries-devel'
                           condition: SUCCESS
-                          predefined-parameters: "queue=$queue"
+                          predefined-parameters: |
+                                queue=$queue
+                                upload=extension-only
                 - groovy-postbuild: *add_version_tag
                 - workspace-cleanup
 
                 - trigger-parameterized-builds:
                         - project: 'dput'
                           condition: SUCCESS
-                          predefined-parameters: "binaries={name}-binaries\nqueue=$queue"
+                          predefined-parameters: |
+                                binaries={name}-binaries
+                                queue=$queue
+                                upload=$upload
                 - workspace-cleanup
 
 - job-template:
                 - trigger-parameterized-builds:
                         - project: 'dput'
                           condition: SUCCESS
-                          predefined-parameters: "binaries={source-name}-binaries-sid-amd64\nqueue=$queue"
+                          predefined-parameters: |
+                                  binaries={source-name}-binaries-sid-amd64
+                                  queue=$queue
+                                  upload=$upload
                 - workspace-cleanup
 
 # upgrade test template
                         name: binaries
                         description: Name of binaries job to copy artifacts from (including -binaries suffix)
                 - choice: *queue_choice
+                - choice: *upload_choice
         builders:
                 - shell: 'rm -rf *'
                 - copyartifact:
                         message-type: summary-params
                 - groovy-postbuild: 'manager.addShortText("${manager.build.environment.binaries} (${manager.build.environment.queue})")'
 
+# variant of dput that handles each configuration separately
+# (needed after using matrixreloaded on build jobs)
 - job:
         <<: *dput
         name: dput-matrixreloaded