Added vagrant setup for a Jenkins system for ONAP
Add a set of vagrant scripts that will set up a
local Jenkins environment with pre-defined jobs
to build all the ONAP java code and docker images.
Change-Id: I67ed254bcb38a7be989b7c2861fd3ea4ec9c66f2
Signed-off-by: Gary Wu <gary.i.wu@huawei.com>
diff --git a/bootstrap/jenkins/vagrant/Vagrantfile b/bootstrap/jenkins/vagrant/Vagrantfile
new file mode 100644
index 0000000..02b3ec1
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/Vagrantfile
@@ -0,0 +1,75 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# All Vagrant configuration is done below. The "2" in Vagrant.configure
+# configures the configuration version (we support older styles for
+# backwards compatibility). Please don't change it unless you know what
+# you're doing.
+Vagrant.configure(2) do |config|
+ # The most common configuration options are documented and commented below.
+ # For a complete reference, please see the online documentation at
+ # https://docs.vagrantup.com.
+
+ # Every Vagrant development environment requires a box. You can search for
+ # boxes at https://atlas.hashicorp.com/search.
+ config.vm.box = "ubuntu/xenial64"
+
+ # Disable automatic box update checking. If you disable this, then
+ # boxes will only be checked for updates when the user runs
+ # `vagrant box outdated`. This is not recommended.
+ # config.vm.box_check_update = false
+
+ # Create a forwarded port mapping which allows access to a specific port
+ # within the machine from a port on the host machine. In the example below,
+ # accessing "localhost:8080" will access port 80 on the guest machine.
+ config.vm.network "forwarded_port", guest: 8080, host: 8080
+
+ # Create a private network, which allows host-only access to the machine
+ # using a specific IP.
+ config.vm.network "private_network", ip: "192.168.33.10"
+
+ # Create a public network, which generally matched to bridged network.
+ # Bridged networks make the machine appear as another physical device on
+ # your network.
+ # config.vm.network "public_network"
+
+ # Share an additional folder to the guest VM. The first argument is
+ # the path on the host to the actual folder. The second argument is
+ # the path on the guest to mount the folder. And the optional third
+ # argument is a set of non-required options.
+ # config.vm.synced_folder "../data", "/vagrant_data"
+
+ # Provider-specific configuration so you can fine-tune various
+ # backing providers for Vagrant. These expose provider-specific options.
+ # Example for VirtualBox:
+ #
+ config.vm.provider "virtualbox" do |vb|
+ # # Display the VirtualBox GUI when booting the machine
+ # vb.gui = true
+ #
+ # # Customize the amount of memory on the VM:
+ vb.memory = "8192"
+ end
+ #
+ # View the documentation for the provider you are using for more
+ # information on available options.
+
+ # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
+ # such as FTP and Heroku are also available. See the documentation at
+ # https://docs.vagrantup.com/v2/push/atlas.html for more information.
+ # config.push.define "atlas" do |push|
+ # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
+ # end
+
+ # Enable provisioning with a shell script. Additional provisioners such as
+ # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
+ # documentation for more information about their specific syntax and use.
+ # config.vm.provision "shell", inline: <<-SHELL
+ # sudo apt-get update
+ # sudo apt-get install -y apache2
+ # SHELL
+ config.vm.provision :shell, path: "bootstrap.sh"
+
+ # requires vagrant plugin install vagrant-disksize
+ config.disksize.size = '80GB'
+end
diff --git a/bootstrap/jenkins/vagrant/bootstrap.sh b/bootstrap/jenkins/vagrant/bootstrap.sh
new file mode 100755
index 0000000..ab5c45f
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/bootstrap.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+sed -i 's|archive\.ubuntu\.com|mirrors.ocf.berkeley.edu|g' /etc/apt/sources.list
+
+echo "192.168.33.1 nexus-proxy" >> /etc/hosts
+
+
+cat >> /etc/inputrc <<EOF
+set show-all-if-ambiguous on
+set show-all-if-unmodified on
+set match-hidden-files off
+set mark-symlinked-directories on
+EOF
+
+
+apt-get update
+apt-get -y install git
+git config --global user.email "gary.i.wu@huawei.com"
+git config --global user.name "Gary Wu"
+apt-get -y install curl openjdk-8-jdk maven unzip
+
+# install Jenkins
+wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
+sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
+apt-get update
+apt-get -y install jenkins jenkins-job-builder python-pip
+
+apt-get -y install docker.io
+sudo usermod -aG docker ubuntu
+sudo usermod -aG docker jenkins
+
+su -l jenkins -c "/vagrant/jenkins-init-1.sh"
+
+sudo systemctl restart jenkins
+sleep 5
+
+su -l jenkins -c "/vagrant/jenkins-init-2.sh"
+
+sudo systemctl restart jenkins
+sleep 5
+
+su -l jenkins -c "/vagrant/jjb-init.sh"
+
diff --git a/bootstrap/jenkins/vagrant/build-all-docker.sh b/bootstrap/jenkins/vagrant/build-all-docker.sh
new file mode 100755
index 0000000..081bb12
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/build-all-docker.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# build all jobs
+cd ~jenkins
+for d in jobs/docker*; do
+ JOB=$(basename "$d")
+ echo build "$JOB"
+ java -jar jenkins-cli.jar -s http://localhost:8080/ -auth jenkins:jenkins build "$JOB"
+done
diff --git a/bootstrap/jenkins/vagrant/build-all-java.sh b/bootstrap/jenkins/vagrant/build-all-java.sh
new file mode 100755
index 0000000..67333b7
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/build-all-java.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# build all jobs
+cd ~jenkins
+for d in jobs/java*; do
+ JOB=$(basename "$d")
+ echo build "$JOB"
+ java -jar jenkins-cli.jar -s http://localhost:8080/ -auth jenkins:jenkins build "$JOB"
+done
diff --git a/bootstrap/jenkins/vagrant/jenkins-init-1.sh b/bootstrap/jenkins/vagrant/jenkins-init-1.sh
new file mode 100755
index 0000000..a5599a7
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jenkins-init-1.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+git config --global user.email "jenkins@localhost"
+git config --global user.name "jenkins"
+
+cd ~/jenkins
+
+cp /etc/skel/.profile .
+cat > .bashrc <<EOF
+alias ls='ls --color -F'
+EOF
+
+git init
+
+git add -A
+git commit -m 'Initial installation config'
+
+mkdir -p ~/.m2
+cp /vagrant/settings.xml ~/.m2
+rm -f secrets/initialAdminPassword
+rm -rf users/admin
+rsync -avP /vagrant/jenkins/ .
+
+git add -A
+git commit -m 'Set up jenkins user'
+
diff --git a/bootstrap/jenkins/vagrant/jenkins-init-2.sh b/bootstrap/jenkins/vagrant/jenkins-init-2.sh
new file mode 100755
index 0000000..eb0efe6
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jenkins-init-2.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+cd ~jenkins
+ln -s /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar
+
+# Get the update center ourself
+curl -L http://updates.jenkins-ci.org/update-center.json | sed '1d;$d' | curl -X POST -H 'Accept: application/json' -d @- http://localhost:8080/updateCenter/byId/default/postBack
+
+java -jar jenkins-cli.jar -s http://localhost:8080/ -auth jenkins:jenkins install-plugin git
+java -jar jenkins-cli.jar -s http://localhost:8080/ -auth jenkins:jenkins install-plugin ws-cleanup
+java -jar jenkins-cli.jar -s http://localhost:8080/ -auth jenkins:jenkins install-plugin envinject
+
+git add -A
+git commit -m 'Install initial plugins'
+
diff --git a/bootstrap/jenkins/vagrant/jenkins/jenkins.install.InstallUtil.lastExecVersion b/bootstrap/jenkins/vagrant/jenkins/jenkins.install.InstallUtil.lastExecVersion
new file mode 100644
index 0000000..00030ea
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jenkins/jenkins.install.InstallUtil.lastExecVersion
@@ -0,0 +1 @@
+2.46.3
diff --git a/bootstrap/jenkins/vagrant/jenkins/users/jenkins/config.xml b/bootstrap/jenkins/vagrant/jenkins/users/jenkins/config.xml
new file mode 100644
index 0000000..be836f2
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jenkins/users/jenkins/config.xml
@@ -0,0 +1,38 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<user>
+ <fullName>jenkins</fullName>
+ <properties>
+ <jenkins.security.ApiTokenProperty>
+ <apiToken>{AQAAABAAAAAwQAGpldGajxw//dhxd53gZGv4w0JnZYDETTLBQdpotQXt02s0lq13YrhyaytbLFMflb98hzWY9YBlDIThZt7u+Q==}</apiToken>
+ </jenkins.security.ApiTokenProperty>
+ <com.cloudbees.plugins.credentials.UserCredentialsProvider_-UserCredentialsProperty plugin="credentials@2.1.13">
+ <domainCredentialsMap class="hudson.util.CopyOnWriteMap$Hash"/>
+ </com.cloudbees.plugins.credentials.UserCredentialsProvider_-UserCredentialsProperty>
+ <hudson.model.MyViewsProperty>
+ <views>
+ <hudson.model.AllView>
+ <owner class="hudson.model.MyViewsProperty" reference="../../.."/>
+ <name>all</name>
+ <filterExecutors>false</filterExecutors>
+ <filterQueue>false</filterQueue>
+ <properties class="hudson.model.View$PropertyList"/>
+ </hudson.model.AllView>
+ </views>
+ </hudson.model.MyViewsProperty>
+ <org.jenkinsci.plugins.displayurlapi.user.PreferredProviderUserProperty plugin="display-url-api@2.0">
+ <providerId>default</providerId>
+ </org.jenkinsci.plugins.displayurlapi.user.PreferredProviderUserProperty>
+ <hudson.model.PaneStatusProperties>
+ <collapsed/>
+ </hudson.model.PaneStatusProperties>
+ <hudson.search.UserSearchProperty>
+ <insensitiveSearch>false</insensitiveSearch>
+ </hudson.search.UserSearchProperty>
+ <hudson.security.HudsonPrivateSecurityRealm_-Details>
+ <passwordHash>#jbcrypt:$2a$10$Esc9z/mnK/CQ8crgFbE3/eP1EI6pvzIHRBe3SSik7rrNt.DDftON2</passwordHash>
+ </hudson.security.HudsonPrivateSecurityRealm_-Details>
+ <hudson.tasks.Mailer_-UserProperty plugin="mailer@1.20">
+ <emailAddress>jenkins@localhost</emailAddress>
+ </hudson.tasks.Mailer_-UserProperty>
+ </properties>
+</user>
diff --git a/bootstrap/jenkins/vagrant/jenkins_jobs.ini b/bootstrap/jenkins/vagrant/jenkins_jobs.ini
new file mode 100644
index 0000000..5cc6dc9
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jenkins_jobs.ini
@@ -0,0 +1,13 @@
+[job_builder]
+ignore_cache=True
+keep_descriptions=False
+include_path=.:scripts:~/git/
+recursive=False
+exclude=.*:manual:./development
+allow_duplicates=False
+
+[jenkins]
+user=jenkins
+password=jenkins
+url=http://localhost:8080
+query_plugins_info=False
diff --git a/bootstrap/jenkins/vagrant/jjb-init.sh b/bootstrap/jenkins/vagrant/jjb-init.sh
new file mode 100755
index 0000000..01cfcfa
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jjb-init.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+git add -A
+git commit -m 'Installed plugins, restarted Jenkins'
+
+
+mkdir -p ~/.config/jenkins_jobs
+cp /vagrant/jenkins_jobs.ini ~/.config/jenkins_jobs
+
+pip install --user jenkins-job-builder
+
+jenkins-job-builder update -r /vagrant/jjb
+
+cat > .gitignore <<EOF
+jobs/*/builds
+jobs/*/last*
+workspace/
+.m2/repository/
+logs/
+EOF
+
+git add -A
+git commit -m 'Set up initial jobs'
+
+
+# pull 3rd party docker images
+docker pull ubuntu:14.04
+docker pull ubuntu:16.04
+docker pull openjdk:8-jre
+docker pull tomcat:8.0-jre8
+docker pull jetty:9.3-jre8
+docker pull frolvlad/alpine-oraclejdk8:slim
+docker pull java:openjdk-8-jre
+docker pull node:4.6.0
diff --git a/bootstrap/jenkins/vagrant/jjb/docker-jobs.yaml b/bootstrap/jenkins/vagrant/jjb/docker-jobs.yaml
new file mode 100644
index 0000000..5925b5d
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jjb/docker-jobs.yaml
@@ -0,0 +1,76 @@
+- project:
+ name: onap-docker-with-pom
+ jobs:
+ - 'docker-with-pom'
+ project:
+ - 'aai_aai-service_ajsc-aai':
+ repo: 'aai/aai-service'
+ pom: 'ajsc-aai/pom.xml'
+ mvn-options: 'docker:build'
+ - 'aai_data-router':
+ repo: 'aai/data-router'
+ pom: 'pom.xml'
+ mvn-options: 'docker:build'
+ - 'aai_model-loader':
+ repo: 'aai/model-loader'
+ pom: 'pom.xml'
+ mvn-options: 'docker:build'
+ - 'aai_resources_aai-resources':
+ repo: 'aai/resources'
+ pom: 'aai-resources/pom.xml'
+ mvn-options: 'docker:build'
+ - 'aai_search-data-service':
+ repo: 'aai/search-data-service'
+ mvn-options: 'docker:build'
+ - 'aai_sparky-be':
+ repo: 'aai/sparky-be'
+ mvn-options: 'docker:build'
+ - 'aai_traversal_aai-traversal':
+ repo: 'aai/traversal'
+ pom: 'aai-traversal/pom.xml'
+ mvn-options: 'docker:build'
+ - 'appc':
+ repo: 'appc/deployment'
+ mvn-options: '-P docker'
+ - 'dcae_dcae-controller':
+ repo: 'dcae/demo'
+ shell-cmd: 'bash dcae-demo-controller/src/main/docker-build/build.sh'
+ - 'dcae_dcae-dmaapbc':
+ repo: 'dcae/dmaapbc'
+ shell-cmd: 'docker build -f ./Dockerfile .'
+ - 'dcae_dcae-inventory':
+ repo: 'dcae/dcae-inventory'
+ mvn-options: 'docker:build'
+ - 'mso':
+ repo: 'mso'
+ pom: 'packages/docker/pom.xml'
+ mvn-options: '-P docker'
+ - 'policy':
+ repo: 'policy/docker'
+ shell-cmd: './docker_build.sh'
+ - 'portal_ecomp-portal-widget-ms':
+ repo: 'portal'
+ pom: 'ecomp-portal-widget-ms/pom.xml'
+ mvn-options: 'docker:build'
+ - 'sdc':
+ repo: 'sdc'
+ pom: 'pom.xml'
+ mvn-options: '-P docker'
+ - 'sdnc':
+ repo: 'sdnc/oam'
+ mvn-options: '-P docker'
+ - 'vid':
+ repo: 'vid'
+ mvn-options: '-P docker'
+
+- project:
+ name: onap-docker-without-pom
+ jobs:
+ - 'docker-without-pom'
+ project:
+ - 'dcae_dcae-orch-dispatcher':
+ repo: 'dcae/orch-dispatcher'
+ shell-cmd: 'docker build -f ./Dockerfile .'
+ - 'portal':
+ repo: 'portal'
+ shell-cmd: 'git -C ecompsdkos pull || git clone $GIT_NO_PROJECT/ecompsdkos; git -C dmaapbc pull || git clone $GIT_NO_PROJECT/ui/dmaapbc dmaapbc; cd deliveries; chmod +x *.sh; ./run.sh'
diff --git a/bootstrap/jenkins/vagrant/jjb/include-docker-login.sh b/bootstrap/jenkins/vagrant/jjb/include-docker-login.sh
new file mode 100644
index 0000000..561a91f
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jjb/include-docker-login.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+# vim: ts=4 sw=4 sts=4 et :
+
+DOCKER_REPOSITORIES="nexus3.onap.org:10001 \
+ nexus3.onap.org:10002 \
+ nexus3.onap.org:10003 \
+ nexus3.onap.org:10004"
+
+for DOCKER_REPOSITORY in $DOCKER_REPOSITORIES;
+do
+ echo $DOCKER_REPOSITORY
+ docker login $DOCKER_REPOSITORY -u "anonymous" -p "anonymous"
+done
diff --git a/bootstrap/jenkins/vagrant/jjb/java-jobs.yaml b/bootstrap/jenkins/vagrant/jjb/java-jobs.yaml
new file mode 100644
index 0000000..570802e
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jjb/java-jobs.yaml
@@ -0,0 +1,167 @@
+- project:
+ name: onap-java
+ jobs:
+ - 'java-{project}'
+ project:
+ - 'aai_aai-common':
+ repo: 'aai/aai-common'
+ pom: 'pom.xml'
+ - 'aai_aai-service':
+ repo: 'aai/aai-service'
+ pom: 'pom.xml'
+ - 'aai_data-router':
+ repo: 'aai/data-router'
+ pom: 'pom.xml'
+ - 'aai_logging-service':
+ repo: 'aai/logging-service'
+ pom: 'pom.xml'
+ - 'aai_model-loader':
+ repo: 'aai/model-loader'
+ pom: 'pom.xml'
+ - 'aai_resources':
+ repo: 'aai/resources'
+ pom: 'pom.xml'
+ - 'aai_rest-client':
+ repo: 'aai/rest-client'
+ pom: 'pom.xml'
+ - 'aai_router-core':
+ repo: 'aai/router-core'
+ pom: 'pom.xml'
+ - 'aai_search-data-service':
+ repo: 'aai/search-data-service'
+ pom: 'pom.xml'
+ - 'aai_sparky-fe':
+ repo: 'aai/sparky-fe'
+ pom: 'pom.xml'
+ - 'aai_traversal':
+ repo: 'aai/traversal'
+ pom: 'pom.xml'
+ - 'appc':
+ repo: 'appc'
+ pom: 'pom.xml'
+ - 'appc_deployment':
+ repo: 'appc/deployment'
+ pom: 'pom.xml'
+ - 'dcae_apod_analytics':
+ repo: 'dcae/apod/analytics'
+ pom: 'pom.xml'
+ - 'dcae_collectors_ves':
+ repo: 'dcae/collectors/ves'
+ pom: 'pom.xml'
+ - 'dcae_controller':
+ repo: 'dcae/controller'
+ pom: 'pom.xml'
+ - 'dcae_controller_analytics':
+ repo: 'dcae/controller/analytics'
+ pom: 'pom.xml'
+ - 'dcae_dcae-inventory':
+ repo: 'dcae/dcae-inventory'
+ pom: 'pom.xml'
+ - 'dcae_demo':
+ repo: 'dcae/demo'
+ pom: 'pom.xml'
+ - 'dcae_dmaapbc':
+ repo: 'dcae/dmaapbc'
+ pom: 'pom.xml'
+ - 'dcae_operation_utils':
+ repo: 'dcae/operation/utils'
+ pom: 'pom.xml'
+ - 'dcae_pgaas_cdf_src_cdf-prop-value_cdf-prop-value':
+ repo: 'dcae/pgaas'
+ pom: 'cdf/src/cdf-prop-value/cdf-prop-value/pom.xml'
+ - 'dcae_pgaas_cdf_src_cdf-prop-value_cdf-util':
+ repo: 'dcae/pgaas'
+ pom: 'cdf/src/cdf-prop-value/cdf-util/pom.xml'
+ - 'demo':
+ repo: 'demo'
+ pom: 'pom.xml'
+ - 'ecompsdkos_ecomp-sdk':
+ repo: 'ecompsdkos'
+ pom: 'ecomp-sdk/pom.xml'
+ - 'mso':
+ repo: 'mso'
+ pom: 'pom.xml'
+ - 'mso_libs':
+ repo: 'mso/libs'
+ pom: 'pom.xml'
+ - 'ncomp_cdap':
+ repo: 'ncomp/cdap'
+ pom: 'pom.xml'
+ - 'ncomp_core':
+ repo: 'ncomp/core'
+ pom: 'pom.xml'
+ - 'ncomp_docker':
+ repo: 'ncomp/docker'
+ pom: 'pom.xml'
+ - 'ncomp_maven':
+ repo: 'ncomp/maven'
+ pom: 'pom.xml'
+ - 'ncomp_openstack':
+ repo: 'ncomp/openstack'
+ pom: 'pom.xml'
+ - 'ncomp_sirius_manager':
+ repo: 'ncomp/sirius/manager'
+ pom: 'pom.xml'
+ - 'ncomp_utils':
+ repo: 'ncomp/utils'
+ pom: 'pom.xml'
+ - 'policy_common':
+ repo: 'policy/common'
+ pom: 'pom.xml'
+ - 'policy_docker':
+ repo: 'policy/docker'
+ pom: 'pom.xml'
+ - 'policy_drools-applications':
+ repo: 'policy/drools-applications'
+ pom: 'pom.xml'
+ - 'policy_drools-pdp':
+ repo: 'policy/drools-pdp'
+ pom: 'pom.xml'
+ - 'policy_engine':
+ repo: 'policy/engine'
+ pom: 'pom.xml'
+ - 'portal':
+ repo: 'portal'
+ pom: 'pom.xml'
+ - 'sdc':
+ repo: 'sdc'
+ pom: 'pom.xml'
+ - 'sdc_jtosca':
+ repo: 'sdc/jtosca'
+ pom: 'pom.xml'
+ - 'sdc_sdc-distribution-client':
+ repo: 'sdc/sdc-distribution-client'
+ pom: 'pom.xml'
+ - 'sdc_sdc-titan-cassandra':
+ repo: 'sdc/sdc-titan-cassandra'
+ pom: 'pom.xml'
+ - 'sdc_sdc-tosca':
+ repo: 'sdc/sdc-tosca'
+ pom: 'pom.xml'
+ - 'sdc_sdc_common':
+ repo: 'sdc/sdc_common'
+ pom: 'pom.xml'
+ - 'sdnc_adaptors':
+ repo: 'sdnc/adaptors'
+ pom: 'pom.xml'
+ - 'sdnc_core':
+ repo: 'sdnc/core'
+ pom: 'pom.xml'
+ - 'sdnc_northbound':
+ repo: 'sdnc/northbound'
+ pom: 'pom.xml'
+ - 'sdnc_oam':
+ repo: 'sdnc/oam'
+ pom: 'pom.xml'
+ - 'sdnc_plugins':
+ repo: 'sdnc/plugins'
+ pom: 'pom.xml'
+ - 'ui_dmaapbc':
+ repo: 'ui/dmaapbc'
+ pom: 'pom.xml'
+ - 'vid':
+ repo: 'vid'
+ pom: 'pom.xml'
+ - 'vid_asdcclient':
+ repo: 'vid/asdcclient'
+ pom: 'pom.xml'
diff --git a/bootstrap/jenkins/vagrant/jjb/template.yaml b/bootstrap/jenkins/vagrant/jjb/template.yaml
new file mode 100644
index 0000000..e035583
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/jjb/template.yaml
@@ -0,0 +1,76 @@
+- builder:
+ name: docker-login
+ builders:
+ - shell: !include-raw: include-docker-login.sh
+
+- job-template:
+ name: 'java-{project}'
+ project-type: freestyle
+ scm:
+ - git:
+ url: 'http://gerrit.onap.org/r/{repo}'
+ branches:
+ - '*/master'
+ wipe-workspace: false
+ skip-tag: true
+ timeout: 30
+ builders:
+ - maven-target:
+ goals: '-B clean install'
+ pom: '{pom}'
+ properties:
+ - skipTests=true
+
+- job-template:
+ id: docker-with-pom
+ name: 'docker-{project}'
+ project-type: freestyle
+ pom: 'pom.xml'
+ mvn-options: ''
+ shell-cmd: ''
+ scm:
+ - git:
+ url: 'http://gerrit.onap.org/r/{repo}'
+ branches:
+ - '*/master'
+ wipe-workspace: false
+ skip-tag: true
+ timeout: 30
+ properties:
+ - inject:
+ properties-content: |
+ GIT_NO_PROJECT=http://gerrit.onap.org/r
+ builders:
+ - docker-login
+ - maven-target:
+ goals: '-B clean package {mvn-options}'
+ pom: '{pom}'
+ properties:
+ - skipTests=true
+ - docker.pull.registry=nexus3.onap.org:10001
+ - docker.push.registry=nexus3.onap.org:10003
+ - shell: "{shell-cmd}"
+
+- job-template:
+ id: docker-without-pom
+ name: 'docker-{project}'
+ project-type: freestyle
+ shell-cmd: ''
+ scm:
+ - git:
+ url: 'http://gerrit.onap.org/r/{repo}'
+ branches:
+ - '*/master'
+ wipe-workspace: false
+ skip-tag: true
+ timeout: 30
+ properties:
+ - inject:
+ properties-content: |
+ GIT_NO_PROJECT=http://gerrit.onap.org/r
+ GLOBAL_SETTINGS_FILE=/var/lib/jenkins/.m2/settings.xml
+ SETTINGS_FILE=/var/lib/jenkins/.m2/settings.xml
+ MVN=mvn
+ builders:
+ - docker-login
+ - shell: "{shell-cmd}"
diff --git a/bootstrap/jenkins/vagrant/settings.xml b/bootstrap/jenkins/vagrant/settings.xml
new file mode 100644
index 0000000..41da9be
--- /dev/null
+++ b/bootstrap/jenkins/vagrant/settings.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2016 Huawei Technologies Co., Ltd. and others. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+
+ <profiles>
+ <profile>
+ <id>onap-snapshots</id>
+ <repositories>
+ <repository>
+ <id>onap-snapshots</id>
+ <name>onap-snapshots</name>
+ <url>https://nexus.onap.org/content/repositories/snapshots/</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>onap-snapshots</id>
+ <name>onap-snapshots</name>
+ <url>https://nexus.onap.org/content/repositories/snapshots/</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ <profile>
+ <id>onap-staging</id>
+ <repositories>
+ <repository>
+ <id>onap-staging</id>
+ <name>onap-staging</name>
+ <url>https://nexus.onap.org/content/repositories/staging/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>onap-staging</id>
+ <name>onap-staging</name>
+ <url>https://nexus.onap.org/content/repositories/staging/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ <profile>
+ <id>onap-releases</id>
+ <repositories>
+ <repository>
+ <id>onap-releases</id>
+ <name>onap-releases</name>
+ <url>https://nexus.onap.org/content/repositories/releases/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>onap-releases</id>
+ <name>onap-releases</name>
+ <url>https://nexus.onap.org/content/repositories/releases/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ <profile>
+ <id>onap-public</id>
+ <repositories>
+ <repository>
+ <id>onap-public</id>
+ <name>onap-public</name>
+ <url>https://nexus.onap.org/content/repositories/public/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>onap-public</id>
+ <name>onap-public</name>
+ <url>https://nexus.onap.org/content/repositories/public/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ <profile>
+ <id>local-public</id>
+ <repositories>
+ <repository>
+ <id>local-public</id>
+ <name>local-public</name>
+ <url>http://nexus-proxy:8081/nexus/content/repositories/public/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>local-public</id>
+ <name>local-public</name>
+ <url>http://nexus-proxy:8081/nexus/content/repositories/public/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ </profiles>
+
+ <activeProfiles>
+ <activeProfile>onap-snapshots</activeProfile>
+ <activeProfile>onap-staging</activeProfile>
+ <activeProfile>onap-releases</activeProfile>
+ <!-- <activeProfile>onap-public</activeProfile> -->
+ <activeProfile>local-public</activeProfile>
+ </activeProfiles>
+
+</settings>