aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jjb/ci-management/ci-management.yaml132
-rw-r--r--jjb/global-defaults.yaml3
-rw-r--r--jjb/global-macros.yaml55
3 files changed, 189 insertions, 1 deletions
diff --git a/jjb/ci-management/ci-management.yaml b/jjb/ci-management/ci-management.yaml
index a519b75f..07811ea5 100644
--- a/jjb/ci-management/ci-management.yaml
+++ b/jjb/ci-management/ci-management.yaml
@@ -4,10 +4,20 @@
jobs:
- 'ci-management-verify-jjb'
- 'ci-management-merge'
+ - 'ci-management-verify-packer'
+ - 'ci-management-merge-packer-{platforms}-{templates}'
project: 'ci-management'
branch: master
+ platforms:
+ - ubuntu-16.04
+
+ templates:
+ - basebuild-agl-test-slave
+ - basebuild-control-slave
+ - basebuild
+
- job-template:
name: ci-management-verify-jjb
@@ -35,6 +45,7 @@
- gerrit-trigger-patch-submitted:
name: '{project}'
branch: '{branch}'
+ files: '**/**'
builders:
- shell: |
@@ -65,7 +76,7 @@
choosing-strategy: 'default'
wrappers:
- - agl-infra-wrappers:
+ - agl-infra-wrappers:
build-timeout: '{build-timeout}'
triggers:
@@ -76,3 +87,122 @@
builders:
- shell:
!include-raw-escape: include-raw-jjb-update.sh
+
+
+- job-template:
+ name: 'ci-management-verify-packer'
+ project-type: freestyle
+ node: control-slave
+ concurrent: true
+
+ properties:
+ - agl-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ build-num-to-keep: '{build-num-to-keep}'
+
+
+ parameters:
+ - agl-infra-parameters:
+ project: '{project}'
+ branch: 'master'
+ refspec: 'refs/heads/master'
+
+ scm:
+ - gerrit-trigger-scm:
+ refspec: '$GERRIT_REFSPEC'
+ choosing-strategy: 'gerrit'
+
+ wrappers:
+ - agl-infra-wrappers:
+ build-timeout: '{build-timeout}'
+
+ triggers:
+ - gerrit-trigger-patch-submitted:
+ name: 'AGL/AGL-repo'
+ branch: '{branch}'
+ files: 'packer/**'
+
+ builders:
+ - packer-validate:
+
+ publishers:
+ - archive:
+ artifacts: 'packer/*.log'
+ allow-empty: 'true'
+ only-if-success: 'true'
+
+- job-template:
+ name: 'ci-management-merge-packer-{platforms}-{templates}'
+ project-type: freestyle
+ node: control-slave
+
+ properties:
+ - agl-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ build-num-to-keep: '{build-num-to-keep}'
+
+ parameters:
+ - agl-infra-parameters:
+ project: '{project}'
+ branch: 'master'
+ refspec: 'refs/heads/master'
+
+ scm:
+ - gerrit-trigger-scm:
+ refspec: '$GERRIT_REFSPEC'
+ choosing-strategy: 'gerrit'
+
+ wrappers:
+ - ssh-agent-credentials:
+ users:
+ - '{ssh-credentials}'
+ - agl-infra-wrappers:
+ build-timeout: '{build-timeout}'
+
+ triggers:
+ - timed: '00 10 1 * *'
+ - gerrit:
+ trigger-on:
+ - change-merged-event
+ - comment-added-contains-event:
+ comment-contains-value: 'remerge'
+ projects:
+ - project-compare-type: 'ANT'
+ project-pattern: 'ci-management'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ file-paths:
+ - compare-type: ANT
+ pattern: 'packer/vars/{platforms}.json'
+ - compare-type: ANT
+ pattern: 'packer/templates/{templates}.json'
+ - compare-type: ANT
+ pattern: 'packer/provision/{templates}.sh'
+ - compare-type: ANT
+ pattern: 'packer/provision/system_reseal.sh'
+ - compare-type: ANT
+ pattern: 'packer/provision/rh-user_data.sh'
+ - compare-type: ANT
+ pattern: 'packer/provision/baseline.sh'
+ - compare-type: ANT
+ pattern: 'packer/provision/null_data.sh'
+ - compare-type: ANT
+ pattern: 'packer/provision/agl_dependencies.sh'
+ - compare-type: ANT
+ pattern: 'packer/provision/agl_mirror.sh'
+ - compare-type: ANT
+ pattern: 'packer/provision/basebuild-no-tmpfs.sh'
+
+
+ builders:
+ - packer-validate:
+ - packer-build:
+ platform: '{platforms}'
+ template: '{templates}'
+
+ publishers:
+ - archive:
+ artifacts: 'packer/*.log'
+ allow-empty: 'true'
+ only-if-success: 'true'
diff --git a/jjb/global-defaults.yaml b/jjb/global-defaults.yaml
index 4e25be0f..e019b2ff 100644
--- a/jjb/global-defaults.yaml
+++ b/jjb/global-defaults.yaml
@@ -11,3 +11,6 @@
# Timeout in minutes
build-timeout: 420
ssh-credentials: 'agl-jobbuilder'
+
+ # AGL branch defaults
+ branch: master
diff --git a/jjb/global-macros.yaml b/jjb/global-macros.yaml
index b84eedf6..c73bd861 100644
--- a/jjb/global-macros.yaml
+++ b/jjb/global-macros.yaml
@@ -104,6 +104,9 @@
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
+ file-paths:
+ - compare-type: ANT
+ pattern: '{files}'
- trigger:
name: gerrit-trigger-patch-submitted-manual-verified-silent
@@ -431,3 +434,55 @@
- ansicolor
- openstack:
single-use: false
+
+- property:
+ name: agl-infra-properties
+ properties:
+ - build-discarder:
+ days-to-keep: '{build-days-to-keep}'
+ num-to-keep: '{build-num-to-keep}'
+
+- builder:
+ name: packer-validate
+ builders:
+ - config-file-provider:
+ files:
+ - file-id: 'packer-cloud-env'
+ variable: 'CLOUDENV'
+ - shell: |
+ #!/bin/bash -x
+ cd packer
+ varfiles="../packer/vars/*"
+ templates="../packer/templates/*"
+ provision="../packer/provision/*.sh"
+ for v in $varfiles; do
+ [[ "${v##*/}" =~ ^(cloud-env.*|README.*)$ ]] && continue
+ for t in $templates; do
+ export PACKER_LOG="yes" && \
+ export PACKER_LOG_PATH="packer-validate-${v##*/}-${t##*/}.log" && \
+ packer.io validate -var-file=$CLOUDENV \
+ -var-file=$v $t
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ done
+ done
+ for p in $provision; do
+ /bin/bash -n $p > provision-validate-${p##*/}.log 2>&1
+ done
+
+- builder:
+ name: packer-build
+ builders:
+ - config-file-provider:
+ files:
+ - file-id: 'packer-cloud-env'
+ variable: 'CLOUDENV'
+ - shell: |
+ cd packer
+ export PACKER_LOG="yes" && \
+ export PACKER_LOG_PATH="packer-build.log" && \
+ packer.io build -color=false -var-file=$CLOUDENV \
+ -var-file=../packer/vars/{platform}.json \
+ -parallel=false \
+ ../packer/templates/{template}.json