From eae994e2a7d86486a386aaeccf1a355a0549a869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?= Date: Thu, 3 Oct 2024 11:25:05 +0100 Subject: [PATCH] Salt Shaker: add TF files and pipelines for Ubuntu 24.04 jobs --- ...alt-shaker-products-next-ubuntu2404-bundle | 48 ++++++++ ...-shaker-products-testing-ubuntu2404-bundle | 48 ++++++++ .../Salt-Shaker-Next-Ubuntu2404-Bundle.tf | 116 ++++++++++++++++++ .../Salt-Shaker-Testing-Ubuntu2404-Bundle.tf | 116 ++++++++++++++++++ 4 files changed, 328 insertions(+) create mode 100644 jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-next-ubuntu2404-bundle create mode 100644 jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-testing-ubuntu2404-bundle create mode 100644 terracumber_config/tf_files/salt-shaker/Salt-Shaker-Next-Ubuntu2404-Bundle.tf create mode 100644 terracumber_config/tf_files/salt-shaker/Salt-Shaker-Testing-Ubuntu2404-Bundle.tf diff --git a/jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-next-ubuntu2404-bundle b/jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-next-ubuntu2404-bundle new file mode 100644 index 000000000..e35befcfd --- /dev/null +++ b/jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-next-ubuntu2404-bundle @@ -0,0 +1,48 @@ +#!/usr/bin/env groovy + +node('salt-shaker-tests') { + properties([ + buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '3')), + disableConcurrentBuilds(), + pipelineTriggers([ + URLTrigger( + cronTabSpec: '* * * * *', + triggerLabel: "salt-shaker-tests", + labelRestriction: true, + entries: [URLTriggerEntry( + url: 'https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/bundle:/testing:/testsuite/Ubuntu_24.04/Packages', + contentTypes: [MD5Sum()] + )] + ), + cron('H 0 * * *')], + ), + parameters([ + choice(name: 'salt_flavor', choices: ['bundle'], description: 'Run testsuite for classic Salt or Salt Bundle'), + booleanParam(name: 'run_unit_tests', defaultValue: true, description: 'Run the Salt unit tests'), + booleanParam(name: 'run_integration_tests', defaultValue: true, description: 'Run the Salt integration tests'), + booleanParam(name: 'run_functional_tests', defaultValue: true, description: 'Run the Salt functional tests'), + string(name: 'cucumber_ref', defaultValue: 'master', description: 'Testsuite Git reference (branch, tag...)'), + string(name: 'skip_list_url', defaultValue: 'https://raw.githubusercontent.com/openSUSE/salt-test-skiplist/main/skipped_tests.toml', description: 'URL to the skiplist.toml file to run Salt shaker'), + string(name: 'tf_file', defaultValue: 'susemanager-ci/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Next-Ubuntu2404-Bundle.tf', description: 'Path to the tf file to be used'), + string(name: 'sumaform_gitrepo', defaultValue: 'https://github.com/uyuni-project/sumaform.git', description: 'Sumaform Git Repository'), + string(name: 'sumaform_ref', defaultValue: 'master', description: 'Sumaform Git reference (branch, tag...)'), + choice(name: 'sumaform_backend', choices: ['libvirt', 'aws'], description: 'Sumaform backend to be used (see https://github.com/uyuni-project/sumaform#backend-choice)'), + choice(name: 'terraform_bin', choices: ['/usr/bin/terraform'], description: 'Terraform binary path'), + choice(name: 'terraform_bin_plugins', choices: ['/usr/bin'], description: 'Terraform plugins path'), + string(name: 'terraform_parallelism', defaultValue: '', description: 'Advanced: Define the number of parallel resource operations for terraform'), + string(name: 'terracumber_gitrepo', defaultValue: 'https://github.com/uyuni-project/terracumber.git', description: 'Terracumber Git Repository'), + string(name: 'terracumber_ref', defaultValue: 'master', description: 'Terracumber Git ref (branch, tag...)'), + booleanParam(name: 'terraform_init', defaultValue: true, description: 'Call terraform init (needed if modules are added or changes)'), + booleanParam(name: 'terraform_taint', defaultValue: true, description: 'Call terraform taint (so the resources, except volumes, are recreated)'), + booleanParam(name: 'use_previous_terraform_state', defaultValue: true, description: 'Use previous Terraform state'), + ]) + ]) + + stage('Checkout pipeline') { + checkout scm + } + timeout(activity: false, time: 3, unit: 'HOURS') { + def pipeline = load "jenkins_pipelines/environments/common/pipeline-salt-shaker.groovy" + pipeline.run(params) + } +} diff --git a/jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-testing-ubuntu2404-bundle b/jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-testing-ubuntu2404-bundle new file mode 100644 index 000000000..c09ae5944 --- /dev/null +++ b/jenkins_pipelines/environments/salt-shaker/manager-salt-shaker-products-testing-ubuntu2404-bundle @@ -0,0 +1,48 @@ +#!/usr/bin/env groovy + +node('salt-shaker-tests') { + properties([ + buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '3')), + disableConcurrentBuilds(), + pipelineTriggers([ + URLTrigger( + cronTabSpec: '* * * * *', + triggerLabel: "salt-shaker-tests", + labelRestriction: true, + entries: [URLTriggerEntry( + url: 'https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/bundle:/testing:/testsuite/Ubuntu_24.04/Packages', + contentTypes: [MD5Sum()] + )] + ), + cron('H 0 * * *')], + ), + parameters([ + choice(name: 'salt_flavor', choices: ['bundle'], description: 'Run testsuite for classic Salt or Salt Bundle'), + booleanParam(name: 'run_unit_tests', defaultValue: true, description: 'Run the Salt unit tests'), + booleanParam(name: 'run_integration_tests', defaultValue: true, description: 'Run the Salt integration tests'), + booleanParam(name: 'run_functional_tests', defaultValue: true, description: 'Run the Salt functional tests'), + string(name: 'cucumber_ref', defaultValue: 'master', description: 'Testsuite Git reference (branch, tag...)'), + string(name: 'skip_list_url', defaultValue: 'https://raw.githubusercontent.com/openSUSE/salt-test-skiplist/main/skipped_tests.toml', description: 'URL to the skiplist.toml file to run Salt shaker'), + string(name: 'tf_file', defaultValue: 'susemanager-ci/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Testing-Ubuntu2404-Bundle.tf', description: 'Path to the tf file to be used'), + string(name: 'sumaform_gitrepo', defaultValue: 'https://github.com/uyuni-project/sumaform.git', description: 'Sumaform Git Repository'), + string(name: 'sumaform_ref', defaultValue: 'master', description: 'Sumaform Git reference (branch, tag...)'), + choice(name: 'sumaform_backend', choices: ['libvirt', 'aws'], description: 'Sumaform backend to be used (see https://github.com/uyuni-project/sumaform#backend-choice)'), + choice(name: 'terraform_bin', choices: ['/usr/bin/terraform'], description: 'Terraform binary path'), + choice(name: 'terraform_bin_plugins', choices: ['/usr/bin'], description: 'Terraform plugins path'), + string(name: 'terraform_parallelism', defaultValue: '', description: 'Advanced: Define the number of parallel resource operations for terraform'), + string(name: 'terracumber_gitrepo', defaultValue: 'https://github.com/uyuni-project/terracumber.git', description: 'Terracumber Git Repository'), + string(name: 'terracumber_ref', defaultValue: 'master', description: 'Terracumber Git ref (branch, tag...)'), + booleanParam(name: 'terraform_init', defaultValue: true, description: 'Call terraform init (needed if modules are added or changes)'), + booleanParam(name: 'terraform_taint', defaultValue: true, description: 'Call terraform taint (so the resources, except volumes, are recreated)'), + booleanParam(name: 'use_previous_terraform_state', defaultValue: true, description: 'Use previous Terraform state'), + ]) + ]) + + stage('Checkout pipeline') { + checkout scm + } + timeout(activity: false, time: 3, unit: 'HOURS') { + def pipeline = load "jenkins_pipelines/environments/common/pipeline-salt-shaker.groovy" + pipeline.run(params) + } +} diff --git a/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Next-Ubuntu2404-Bundle.tf b/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Next-Ubuntu2404-Bundle.tf new file mode 100644 index 000000000..1934d2092 --- /dev/null +++ b/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Next-Ubuntu2404-Bundle.tf @@ -0,0 +1,116 @@ +// Mandatory variables for terracumber +variable "URL_PREFIX" { + type = string + default = "https://ci.suse.de/user/manager/my-views/view/Salt%20Shaker/job/manager-salt-shaker-products-next-ubuntu2404-bundle" +} + +// Not really used as this is for --runall parameter, and we run cucumber step by step +variable "CUCUMBER_COMMAND" { + type = string + default = "echo EXECUTE SALT TESTS HERE" +} +variable "CUCUMBER_BRANCH" { + type = string + default = "master" +} + +variable "CUCUMBER_RESULTS" { + type = string + default = "/root/" +} + +variable "MAIL_SUBJECT" { + type = string + default = "Results Salt Shaker - saltstack:products:next - Ubuntu2404 Salt Bundle $status: $tests scenarios ($failures failed, $errors errors, $skipped skipped, $passed passed)" +} + +variable "MAIL_TEMPLATE" { + type = string + default = "../../mail_templates/mail-template-salt-shaker.txt" +} + +variable "MAIL_SUBJECT_ENV_FAIL" { + type = string + default = "Results Salt Shaker - saltstack:products:next - Ubuntu2404 Salt Bundle: Environment setup failed" +} + +variable "MAIL_TEMPLATE_ENV_FAIL" { + type = string + default = "../../mail_templates/mail-template-salt-shaker-env-fail.txt" +} + +variable "MAIL_FROM" { + type = string + default = "salt-ci@suse.de" +} + +variable "MAIL_TO" { + type = string + default = "salt-ci@suse.de" +} + +// sumaform specific variables +variable "SCC_USER" { + type = string + default = null // Not needed for Salt tests +} + +variable "SCC_PASSWORD" { + type = string + default = null // Not needed for Salt tests +} + +variable "GIT_USER" { + type = string + default = null // Not needed for master, as it is public +} + +variable "GIT_PASSWORD" { + type = string + default = null // Not needed for master, as it is public +} + +terraform { + required_version = "1.0.10" + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + version = "0.6.3" + } + } +} + +provider "libvirt" { + uri = "qemu+tcp://suma-04.mgr.suse.de/system" +} + +module "base" { + source = "./modules/base" + + cc_username = var.SCC_USER + cc_password = var.SCC_PASSWORD + + provider_settings = { + pool = "ssd" + network_name = null + bridge = "br0" + } + + images = [ "ubuntu2404o" ] +} + +module "salt-shaker-products-next" { + source = "./modules/salt_testenv" + base_configuration = module.base.configuration + + name = "salt-shaker-products-next-ubuntu2404-bundle" + image = "ubuntu2404o" + salt_obs_flavor = "saltstack:products:next" + provider_settings = { + mac = "aa:b2:93:01:01:ef" + } +} + +output "configuration" { + value = module.salt-shaker-products-next.configuration +} diff --git a/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Testing-Ubuntu2404-Bundle.tf b/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Testing-Ubuntu2404-Bundle.tf new file mode 100644 index 000000000..21d33d074 --- /dev/null +++ b/terracumber_config/tf_files/salt-shaker/Salt-Shaker-Testing-Ubuntu2404-Bundle.tf @@ -0,0 +1,116 @@ +// Mandatory variables for terracumber +variable "URL_PREFIX" { + type = string + default = "https://ci.suse.de/user/manager/my-views/view/Salt%20Shaker/job/manager-salt-shaker-products-testing-ubuntu2404-bundle" +} + +// Not really used as this is for --runall parameter, and we run cucumber step by step +variable "CUCUMBER_COMMAND" { + type = string + default = "echo EXECUTE SALT TESTS HERE" +} +variable "CUCUMBER_BRANCH" { + type = string + default = "master" +} + +variable "CUCUMBER_RESULTS" { + type = string + default = "/root/" +} + +variable "MAIL_SUBJECT" { + type = string + default = "Results Salt Shaker - saltstack:products:testing - Ubuntu2404 Salt Bundle $status: $tests scenarios ($failures failed, $errors errors, $skipped skipped, $passed passed)" +} + +variable "MAIL_TEMPLATE" { + type = string + default = "../../mail_templates/mail-template-salt-shaker.txt" +} + +variable "MAIL_SUBJECT_ENV_FAIL" { + type = string + default = "Results Salt Shaker - saltstack:products:testing - Ubuntu2404 Salt Bundle: Environment setup failed" +} + +variable "MAIL_TEMPLATE_ENV_FAIL" { + type = string + default = "../../mail_templates/mail-template-salt-shaker-env-fail.txt" +} + +variable "MAIL_FROM" { + type = string + default = "salt-ci@suse.de" +} + +variable "MAIL_TO" { + type = string + default = "salt-ci@suse.de" +} + +// sumaform specific variables +variable "SCC_USER" { + type = string + default = null // Not needed for Salt tests +} + +variable "SCC_PASSWORD" { + type = string + default = null // Not needed for Salt tests +} + +variable "GIT_USER" { + type = string + default = null // Not needed for master, as it is public +} + +variable "GIT_PASSWORD" { + type = string + default = null // Not needed for master, as it is public +} + +terraform { + required_version = "1.0.10" + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + version = "0.6.3" + } + } +} + +provider "libvirt" { + uri = "qemu+tcp://suma-03.mgr.suse.de/system" +} + +module "base" { + source = "./modules/base" + + cc_username = var.SCC_USER + cc_password = var.SCC_PASSWORD + + provider_settings = { + pool = "ssd" + network_name = null + bridge = "br0" + } + + images = [ "ubuntu2404o" ] +} + +module "salt-shaker-products-testing" { + source = "./modules/salt_testenv" + base_configuration = module.base.configuration + + name = "salt-shaker-products-testing-ubuntu2404-bundle" + image = "ubuntu2404o" + salt_obs_flavor = "saltstack:products:testing" + provider_settings = { + mac = "aa:b2:93:01:01:ee" + } +} + +output "configuration" { + value = module.salt-shaker-products-testing.configuration +}