Jenkins

Testing in Jenkins is done to automate previous script executions, it can be Frontend, Backend, even executions with Vagrant.

Below is a pipeline that runs a virtual machine in Jenkins and performs the actions it needs to do.

pipeline {
    agent any
    options { 
        timestamps()
        preserveStashes(buildCount: 5)
        timeout(time: 1, unit: 'HOURS')
    }
    triggers {
        cron('* H/12 * * *')
    }
    environment {
        DATE = "${new Date().format('yyyyMMdd')}"
    }
    stages {
        stage('Install - RHEL 7') {
            options { 
                retry(2) 
            }
            steps {
                script {
                    bat """
                        cd C:/Users/antonio/Vagrant/VirtualMachine
                        vagrant up redhat7
                        vagrant ssh redhat7
                        vagrant ssh redhat7 -c "cat /etc/os-release"
                        vagrant ssh redhat7 -c "uname -a"
                        vagrant ssh redhat7 -c "cp /home/vagrant/shared/executable.run ."
                        vagrant ssh redhat7 -c "chmod 700 executable.run"
                        vagrant ssh redhat7 -c "./executable.run"
                        vagrant ssh redhat7 -c "./executable.run"
                        vagrant ssh redhat7 -c "cat /home/vagrant/field/user.inf > code.txt"
                        vagrant ssh redhat7 -c "sed -n '3p' code.txt | cut -c 6,7,8,9,10,11 >> codeUP.txt"
                        vagrant ssh redhat7 -c "cp /home/vagrant/codeUP.txt /home/vagrant/shared"
                        vagrant ssh redhat7 -c "sudo /opt/CrowdStrike/falconctl -g --aid | cut -c 6-37 > csid.txt"
                        vagrant ssh redhat7 -c "cp /home/vagrant/csid.txt /home/vagrant/shared"
                        vagrant destroy redhat7 -f
                    """
                }
            }
        }
        stage ('Verify on Firestore') {
            steps {
                script {
                    bat """ 
                        cd C:/Users/antonio/Vagrant/VirtualMachine
                        python -m verify_csid.py
                    """
                }
            }
        }
    }
    post {
        always {
            echo 'Deleting VM in VBox...'
            script {
                bat """
                    cd C:/Program Files/Oracle/VirtualBox
                    VBoxManage unregistervm box-redhat7 --delete
                    VBoxManage list vms
                """
            }
            echo 'Export LOGs'
            bat "mkdir C:\\Users\\antonio\\Documents\\${env.JOB_NAME}_${env.BUILD_NUMBER}_${DATE}"
            bat "COPY C:\\ProgramData\\Jenkins\\.jenkins\\jobs\\variables\\builds\\${env.BUILD_ID}\\log C:\\Users\\antonio\\Documents\\${env.JOB_NAME}_${env.BUILD_NUMBER}_${DATE}.txt"
        }
        regression {
            echo 'Showing VMs running on VBox & Vagrant...'
            script {
                bat """
                    cd C:/Program Files/Oracle/VirtualBox
                    VBoxManage list vms
                    cd C:/Users/antonio/Vagrant/VirtualMachine
                    vagrant status
                    vagrant global-status
                """
            }
        }
        success {
            echo 'RUN RedHat 7 => OK'
        }
        cleanup {
            echo 'Deleting code & csid .TXT'
            script {
                bat """
                    cd C:/Users/antonio/Vagrant/VirtualMachine
                    Del /F /A code.txt
                    Del /F /A csid.txt
                """
            }
        }
    }
}