Add first version for testing deployment
oginstaller/pipeline/head There was a failure building this commit Details

malaga-automated-testing
Nicolas Arenas 2025-01-16 14:07:35 +01:00
parent 625c464ff5
commit 41add758aa
4 changed files with 149 additions and 9 deletions

55
Jenkinsfile vendored
View File

@ -2,17 +2,54 @@ pipeline {
agent {
label 'ogAdministrator'
}
parameters {
string(name: 'BRANCH', defaultValue: 'main', description: 'Deployment environment')
string(name: 'EXTRA_NAME', description: 'Some additional text to better identify the VMs within ESXi')
string(name: 'NUMBER_OF_CLIENTS', defaultValue: '1', description: 'Number of clients to deploy')
string(name: 'DEFAULT_UDS_REST_URL', defaultValue: 'https://uds-broker.evlt.uma.es/uds/rest/', description: 'UDS REST URL')
string(name: 'DEFAULT_UDS_AUTHENTICATOR' , defaultValue: 'Usuarios locales', description: 'UDS REST authenticator')
string(name: 'DEFAULT_OGLIVE' , defaultValue: 'ogLive-noble-6.8.0-31-generic-amd64-r20240716_20241014.iso', description: 'oGLive ISO image')
}
environment {
UDS_CREDENTIALS = credentials('UDS_CREDENTIALS')
BRANCH = "${params.BRANCH}"
VI_USERNAME = 'root'
VI_PASSWORD = credentials('VI_PASSWORD')
GITEA_USER = "unizar"
GITEA_TOKEN = credentials('GITEA_TOKEN')
VAGRANT_FILE = "Vagrantfile-esxi"
ESXI_PASSWORD = credentials('VI_PASSWORD')
USER_SSK_PRIVATE_KEY = credentials('ognproject-ssh-private-key')
}
stages {
stage('Build') {
stage ('Create environment') {
steps {
sh "echo root > root_passwd"
sh 'docker run --privileged -v /dev:/dev -v /run:/run -v $(pwd):/installer -w /installer --rm opengnsys/oginstallerbuilder ./builder.sh'
}
}
stage ('Upload Image to NFS')
{
steps {
sh "cp ubuntu-from-scratch.iso /mnt/srv/artefactos/oginstaller/oginstaller-${BRANCH_NAME}_${BUILD_NUMBER}.iso"
script {
sh """
echo "BRANCH: ${BRANCH}"
echo "EXTRA_NAME: ${EXTRA_NAME}"
echo "NUMBER_OF_CLIENTS: ${NUMBER_OF_CLIENTS}"
echo "DEFAULT_UDS_REST_URL: ${DEFAULT_UDS_REST_URL}"
echo "DEFAULT_UDS_AUTHENTICATOR: ${DEFAULT_UDS_AUTHENTICATOR}"
echo "DEFAULT_OGLIVE: ${DEFAULT_OGLIVE}"
echo "UDS_CREDENTIALS: ${UDS_CREDENTIALS}"
echo "VI_USERNAME: ${VI_USERNAME}"
echo "VI_PASSWORD: ${VI_PASSWORD}"
echo "GITEA_USER: ${GITEA_USER}"
echo "GITEA_TOKEN: ${GITEA_TOKEN}"
echo "VAGRANT_FILE: ${VAGRANT_FILE}"
echo "ESXI_PASSWORD: ${ESXI_PASSWORD}"
chmod 755 vagrant/provision_esxi_net.sh
cat vagrant/provision_esxi_net.sh
echo "vagrant/provision_esxi_net.sh executed"
cp $USER_SSK_PRIVATE_KEY installer/vagrant/config/id_rsa
"""
}
}
}
}

View File

@ -0,0 +1,49 @@
VAGRANTFILE_API_VERSION = "2"
ENV['VAGRANT_DEFAULT_PROVIDER'] = "vmware_esxi"
BRANCH=ENV['BRANCH'] || "main"
BRANCH_EXTRA=ENV['BRANCH_EXTRA'] || BRANCH
#OGAGENTVERSION="1.4.2"
LANGUAGE = "es_ES"
ENV['LC_ALL'] = LANGUAGE + ".UTF-8"
# NCLIENTS = ENV['NUMBER_OF_CLIENTS']|| 4
# NCLIENTS = NCLIENTS.to_i
SERVERMEM = 2048 # Minimum: 512
CLIENTMEM = 512 # Minimum: 256
MACPREFIX = ENV['OGN_MAC_PREFIX'] || '00:50:56:aa:aa'
NETPREFIX = ENV['OGN_NET_PREFIX'] || "192.168.2"
DHCPNET = ENV['DHCPNET'] || "192.168.2.0"
SERVERIP = "#{NETPREFIX}.10"
LOCALWEBPORT = 8443
ESXIPASSWORD = ENV['ESXI_PASSWORD'] || 'prompt:'
GITEA_TOKEN = ENV['GITEA_TOKEN']
GITEA_USER = ENV['GITEA_USER'] || 'unizar'
SSH_GIT_KEY_PASS = ENV['SSH_GIT_KEY_PASS'] || ''
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider :vmware_esxi do |esxi|
esxi.esxi_hostname = 'esxi-jenkins.evlt.uma.es'
esxi.esxi_username = 'root'
esxi.esxi_password = ESXIPASSWORD
esxi.esxi_virtual_network = ['vLan_742' , BRANCH_EXTRA ]
esxi.guest_mac_address = [ "#{MACPREFIX}:01", "#{MACPREFIX}:02" ]
esxi.clone_from_vm = 'template-ubuntu24'
esxi.esxi_resource_pool = "/"
esxi.local_allow_overwrite = 'True'
esxi.guest_nic_type = 'e1000'
esxi.guest_custom_vmx_settings = [['monitor.allowLegacyCPU', 'TRUE']]
esxi.guest_storage = [ 10 ]
end
config.vm.box = "esxi_clone/dummy"
config.vm.hostname = "og-#{BRANCH_EXTRA}"
end

View File

@ -0,0 +1,7 @@
network:
ethernets:
eth1:
dhcp4: false
addresses: [##ADDRESS##/24]
version: 2
renderer: networkd

View File

@ -0,0 +1,47 @@
#!/bin/bash
set -e
BRANCH=$1
BRANCH=${BRANCH:-"main"}
ESXCLI=/usr/bin/esxcli
VSWITCH="vSwitch2"
source ~/.pass
# Check if portgroup exists
function checkIfPortgroupExists () {
local i=0
PORTGROUPS=( $($ESXCLI network vswitch standard portgroup list | grep $BRANCH | awk ' { print $1 }') )
for portgroup in "${PORTGROUPS[@]}"; do
if [ $portgroup == $BRANCH ] ; then
echo "Portgroup $BRANCH is not going to be created, already exists"
echo "Please Check ESXI configuration"
exit 0
fi
done
}
function createPortGroup() {
echo Adding portgroup $BRANCH to $VSWITCH
$ESXCLI network vswitch standard portgroup add --portgroup-name=$BRANCH --vswitch-name=$VSWITCH
}
function getMaxVlan(){
PORTGROUPS=( $($ESXCLI --formatter=csv network vswitch standard portgroup list | grep $VSWITCH | cut -d "," -f3 ) )
IFS=$'\n'
MAX_VLAN=$(echo "${PORTGROUPS[*]}" | sort -nr | head -n1)
NEXT_VLAN=$(( MAX_VLAN + 1 ))
[[ $NEXT_VLAN -lt 3000 ]] && NEXT_VLAN=3000
echo VLAN assigned is $NEXT_VLAN
}
function setVlan(){
$ESXCLI network vswitch standard portgroup set -p $BRANCH --vlan-id $1
}
#### SCRIPT
checkIfPortgroupExists
createPortGroup
getMaxVlan
setVlan $NEXT_VLAN
echo portgroup $BRANCH created with vlan_id $NEXT_VLAN