blob: 8ae0ae617cdb77d971a3254cef5aa03a0ddd5012 [file] [log] [blame]
Tomáš Kukrále8ebe792017-01-09 10:24:00 +01001/**
Tomáš Kukrál511be612017-02-20 14:50:18 +01002 * DO NOT USE THIS OUTDATED PIPELINE - add your steps to mk-lab-pipeline
Tomáš Kukrále8ebe792017-01-09 10:24:00 +01003 *
4 * Launch heat stack with basic k8s
5 *
6 * Expected parameters:
7 * HEAT_TEMPLATE_URL URL to git repo with Heat templates
8 * HEAT_TEMPLATE_CREDENTIALS Credentials to the Heat templates repo
9 * HEAT_TEMPLATE_BRANCH Heat templates repo branch
10 * OPENSTACK_API_URL OpenStack API address
11 * OPENSTACK_API_CREDENTIALS Credentials to the OpenStack API
12 * OPENSTACK_API_PROJECT OpenStack project to connect to
13 * OPENSTACK_API_CLIENT Versions of OpenStack python clients
14 * OPENSTACK_API_VERSION Version of the OpenStack API (2/3)
15 * SALT_MASTER_CREDENTIALS Credentials to the Salt API
16 * HEAT_STACK_NAME Heat stack name
17 * HEAT_STACK_TEMPLATE Heat stack HOT template
18 * HEAT_STACK_ENVIRONMENT Heat stack environmental parameters
19 * HEAT_STACK_ZONE Heat stack availability zone
20 * HEAT_STACK_PUBLIC_NET Heat stack floating IP pool
Tatyana Leontovich3754a902017-01-20 18:48:55 +020021 * CONFORMANCE_IMAGE Path to docker image with conformance e2e tests
22 * K8S_API_SERVER Kubernetes API address
Tomáš Kukrál9f3f8872017-01-25 10:30:27 +010023 * RUN_TESTS Run test (0/1)
24 * HEAT_STACK_DELETE Delete Heat stack when finished (0/1)
Tomáš Kukrále8ebe792017-01-09 10:24:00 +010025 */
26
27git = new com.mirantis.mk.git()
28openstack = new com.mirantis.mk.openstack()
29salt = new com.mirantis.mk.salt()
30
31node {
32
33 // connection objects
34 def openstackCloud
35 def saltMaster
36
37 // value defaults
38 def openstackVersion = OPENSTACK_API_CLIENT ? OPENSTACK_API_CLIENT : "liberty"
39 def openstackEnv = "${env.WORKSPACE}/venv"
40
Tomáš Kukrál00c7bf42017-01-13 13:27:23 +010041 if (HEAT_STACK_NAME == "") {
Tomáš Kukrál7568ca72017-01-16 09:40:35 +010042 HEAT_STACK_NAME = JOB_NAME + "-b" + BUILD_NUMBER
Tomáš Kukrál00c7bf42017-01-13 13:27:23 +010043 }
44
Tomáš Kukrále8ebe792017-01-09 10:24:00 +010045 stage ('Download Heat templates') {
46 git.checkoutGitRepository('template', HEAT_TEMPLATE_URL, HEAT_TEMPLATE_BRANCH, HEAT_TEMPLATE_CREDENTIALS)
47 }
48
49 stage('Install OpenStack env') {
50 openstack.setupOpenstackVirtualenv(openstackEnv, openstackVersion)
51 }
52
53 stage('Connect to OpenStack cloud') {
54 openstackCloud = openstack.createOpenstackEnv(OPENSTACK_API_URL, OPENSTACK_API_CREDENTIALS, OPENSTACK_API_PROJECT)
55 openstack.getKeystoneToken(openstackCloud, openstackEnv)
56 }
57
58 stage('Launch new Heat stack') {
59 envParams = [
60 'availability_zone': HEAT_STACK_ZONE,
61 'public_net': HEAT_STACK_PUBLIC_NET
62 ]
63 openstack.createHeatStack(openstackCloud, HEAT_STACK_NAME, HEAT_STACK_TEMPLATE, envParams, HEAT_STACK_ENVIRONMENT, openstackEnv)
64 }
65
66 stage("Connect to Salt master") {
67 saltMasterHost = openstack.getHeatStackOutputParam(openstackCloud, HEAT_STACK_NAME, 'salt_master_ip', openstackEnv)
68 saltMasterUrl = "http://${saltMasterHost}:8000"
69 saltMaster = salt.createSaltConnection(saltMasterUrl, SALT_MASTER_CREDENTIALS)
70 }
71
72 stage("Install core infra") {
73 salt.installFoundationInfra(saltMaster)
74 salt.validateFoundationInfra(saltMaster)
75 }
76
77 stage("Install Kubernetes infra") {
78 salt.installOpenstackMcpInfra(saltMaster)
79 }
80
81 stage("Install Kubernetes control") {
82 salt.installOpenstackMcpControl(saltMaster)
83 }
84
Tomáš Kukrál75d4bb12017-01-25 10:40:28 +010085 if (RUN_TESTS == "1") {
Tomáš Kukrál060ddc22017-02-20 00:55:08 +010086 sleep(30000)
Tomáš Kukrál023a40b2017-02-20 00:17:00 +010087 stage('Run k8s bootstrap tests') {
88 salt.runConformanceTests(saltMaster, K8S_API_SERVER, 'tomkukral/k8s-scripts')
89 }
90
Tomáš Kukrál9f3f8872017-01-25 10:30:27 +010091 stage("Run k8s conformance e2e tests") {
92 salt.runConformanceTests(saltMaster, K8S_API_SERVER, CONFORMANCE_IMAGE)
93 }
Tatyana Leontovich3754a902017-01-20 18:48:55 +020094 }
95
Tomáš Kukrál7568ca72017-01-16 09:40:35 +010096 if (HEAT_STACK_DELETE == "1") {
97 stage('Trigger cleanup job') {
98 build job: 'mk-k8s-cleanup', parameters: [[$class: 'StringParameterValue', name: 'HEAT_STACK_NAME', value: HEAT_STACK_NAME]]
99 }
Tomáš Kukrálaba0a7d2017-01-13 14:05:12 +0100100 }
Tomáš Kukrále8ebe792017-01-09 10:24:00 +0100101
102}