Add helm-chart publishing script 03/60803/17
authorJeremy Phelps <jphelps@linuxfoundation.org>
Wed, 15 Aug 2018 21:26:12 +0000 (16:26 -0500)
committerJessica Wagantall <jwagantall@linuxfoundation.org>
Thu, 23 Aug 2018 16:05:45 +0000 (16:05 +0000)
Issue-ID: CIMAN-164
Change-Id: Iae6f765c2f8a7953a308f2ce81e79e4f633a1a2e
Signed-off-by: Jeremy Phelps <jphelps@linuxfoundation.org>
jjb/global-templates-helm.yaml
jjb/oom/oom-helm.yaml
shell/publish_helm_charts.sh [new file with mode: 0755]

index 038b359..396a28d 100644 (file)
@@ -14,6 +14,7 @@
 
     # default params for helm jobs
     pre_build_script: ''
+    build_script: ''
     post_build_script: ''
 
     #####################
     publishers:
       - lf-infra-publish
 
-- helm_verify_boiler_plate: &helm_verify_boiler_plate
-    name: helm_verify_boiler_plate
+#################
+# JOB TEMPLATES #
+#################
+- job-template:
+    name: '{project-name}-{stream}-verify-helm'
+    # Job template for helm verify jobs
 
-    concurrent: true
+    <<: *helm_job_boiler_plate
 
     scm:
       - gerrit-trigger-scm:
           project: '{project}'
           branch: '{branch}'
           files: '{files}'
+      - gerrit:
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: '^verify-helm$'
+
+    builders:
+      - shell: '{obj:pre_build_script}'
+      - shell: '{obj:build_script}'
+
+- job-template:
+    name: '{project-name}-{stream}-merge-helm'
+    # Job template for Helm merge jobs
 
-- helm_merge_boiler_plate: &helm_merge_boiler_plate
-    name: helm_merge_boiler_plate
+    <<: *helm_job_boiler_plate
 
     scm:
       - gerrit-trigger-scm:
           files: '{files}'
       - pollscm:
           cron: ''
-
-#################
-# JOB TEMPLATES #
-#################
-- job-template:
-    name: '{project-name}-{stream}-verify-helm'
-    # Job template for helm verify jobs
-
-    <<: *helm_job_boiler_plate
-    # yamllint disable-line rule:key-duplicates
-    <<: *helm_verify_boiler_plate
+      - gerrit:
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: '^remerge-helm$'
 
     builders:
-      - shell: '{pre_build_script}'
-      - shell: '{build_script}'
-      - shell: '{post_build_script}'
+      - lf-provide-maven-settings:
+          global-settings-file: '{mvn-global-settings}'
+          settings-file: '{mvn-settings}'
+      - shell: '{obj:pre_build_script}'
+      - shell: '{obj:build_script}'
+      - lf-infra-create-netrc:
+          server-id: oom-helm
+      - inject:
+          properties-content: |
+            BUILD_TYPE=snapshot
+      - shell: '{obj:post_build_script}'
+      - lf-provide-maven-settings-cleanup
 
 - job-template:
-    name: '{project-name}-{stream}-merge-helm'
-    # Job template for Helm merge jobs
+    name: '{project-name}-{stream}-stage-helm'
+    # Job template for Helm stage jobs
 
     <<: *helm_job_boiler_plate
-    # yamllint disable-line rule:key-duplicates
-    <<: *helm_merge_boiler_plate
+
+    scm:
+      - gerrit-trigger-scm:
+          refspec: '$GERRIT_REFSPEC'
+          choosing-strategy: 'default'
+          submodule-recursive: '{submodule-recursive}'
+
+    triggers:
+      - pollscm:
+          cron: '0 22 * * *'
+      - gerrit:
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: '^stage-helm$'
 
     builders:
-      - shell: '{pre_build_script}'
-      - shell: '{build_script}'
-      - shell: '{post_build_script}'
+      - lf-provide-maven-settings:
+          global-settings-file: '{mvn-global-settings}'
+          settings-file: '{mvn-settings}'
+      - shell: '{obj:pre_build_script}'
+      - shell: '{obj:build_script}'
+      - lf-infra-create-netrc:
+          server-id: oom-helm
+      - inject:
+          properties-content: |
+            BUILD_TYPE=staging
+      - shell: '{obj:post_build_script}'
+      - lf-provide-maven-settings-cleanup
 
 - job-template:
     name: '{project-name}-{subproject}-{stream}-verify-helm'
     # Job template for helm verify jobs
 
     <<: *helm_job_boiler_plate
-    # yamllint disable-line rule:key-duplicates
-    <<: *helm_verify_boiler_plate
 
     builders:
       - shell: '{pre_build_script}'
     # Job template for helm merge jobs
 
     <<: *helm_job_boiler_plate
-    # yamllint disable-line rule:key-duplicates
-    <<: *helm_merge_boiler_plate
 
     builders:
       - shell: '{pre_build_script}'
index 11a9ac3..467c166 100644 (file)
@@ -4,9 +4,22 @@
     project-name: oom
     project: oom
     mvn-settings: oom-settings
+    mvn-global-settings: global-settings
     archive-artifacts: ''
     build-node: ubuntu1604-helm-2c-1g
     pre_build_script: !include-raw-escape: shell/helm-repo-init.sh
+    oom_build_script: |
+        #!/bin/bash
+        set -e -o pipefail
+        cd kubernetes/
+        make all
+    subproject_build_script: |
+        #!/bin/bash
+        cd kubernetes/
+        make common
+        make {subproject}'
+    oom_post_build_script: !include-raw-escape: shell/publish_helm_charts.sh
+
     stream:
       - 'master':
           branch: 'master'
 
     jobs:
       - '{project-name}-{stream}-verify-helm':
-          build_script: 'cd kubernetes/ && make all'
+          build_script: '{oom_build_script}'
           files: '**'
       - '{project-name}-{stream}-merge-helm':
-          build_script: 'cd kubernetes/ && make all'
+          build_script: '{oom_build_script}'
+          post_build_script: !include-raw-escape: shell/publish_helm_charts.sh
+          files: '**'
+      - '{project-name}-{stream}-stage-helm':
+          build_script: '{oom_build_script}'
+          post_build_script: !include-raw-escape: shell/publish_helm_charts.sh
           files: '**'
+
+      # Below jobs disabled until future need.
       - '{project-name}-{subproject}-{stream}-verify-helm':
-          build_script: 'cd kubernetes/ && make common && make {subproject}'
+          disabled: true
+          build_script: '{subproject_build_script}'
       - '{project-name}-{subproject}-{stream}-merge-helm':
-          build_script: 'cd kubernetes/ && make common && make {subproject}'
+          disabled: true
+          build_script: '{subproject_build_script}'
       - '{project-name}-{stream}-update-helm-weekly':
+          disabled: true
+          build_script: '{oom_build_script}'
           files: '**'
-          build_script: 'cd kubernetes/ && make all'
diff --git a/shell/publish_helm_charts.sh b/shell/publish_helm_charts.sh
new file mode 100755 (executable)
index 0000000..02a0c74
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -e -o pipefail
+cd kubernetes/dist/packages/ || exit
+helm_charts=()
+while IFS= read -a line; do
+    helm_charts+=( "$line" )
+done < <( ls )
+
+for chart in "${helm_charts[@]}"; do
+  chart=$(echo "$chart" | xargs)
+  case "$BUILD_TYPE" in
+    'snapshot')
+      echo "-n --upload-file $chart https://nexus.onap.org/content/sites/oom-helm-$BUILD_TYPE/$chart"
+      curl -n --upload-file "$chart" "https://nexus.onap.org/content/sites/oom-helm-$BUILD_TYPE/$chart"
+      curl -n --upload-file "$chart" "https://nexus.onap.org/content/sites/oom-helm-$BUILD_TYPE/$GIT_COMMIT/$chart"
+      ;;
+    'staging')
+      curl -n --upload-file "$chart" "https://nexus.onap.org/content/sites/oom-helm-$BUILD_TYPE/$chart"
+      curl -n --upload-file "$chart" "https://nexus.onap.org/content/sites/oom-helm-$BUILD_TYPE/$GIT_COMMIT/$chart"
+      ;;
+    'release')
+      echo "Release automation not implemented yet."
+      exit 1
+        ;;
+    *)
+      echo "You must set BUILD_TYPE to one of (snapshot, staging, release)."
+      exit 1
+      ;;
+  esac
+done
+cd ../../../