Что я должен написать в файле jenkins?

#java #jenkins #automation #jenkins-pipeline

#java #дженкинс #автоматизация #дженкинс-конвейер

Вопрос:

У меня есть проект автоматизации, написанный на Java с использованием Junit, и я пытаюсь создать свой новый конвейер заданий Jenkins. Я создал конвейер и новый файл Jenkins, но я не знаю, что должен содержать этот файл. Мне нужно —

  1. создайте проект
  2. Запускайте тесты по категориям (я не хочу запускать все тесты в одном задании)
  3. Развернуть

Я нашел это в документации Jenkins

 pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building..'
            }
        }
        stage('Test') {
            steps {
                /* `make check` returns non-zero on test failures,
                * using `true` to allow the Pipeline to continue nonetheless
                */
                sh 'make check || true'
                junit 'pom.xml'
             }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
            }
        }
    }
}
 

Но я получил это сообщение:
«Отчеты об испытаниях были найдены, но ни один из них не является новым. Запускались ли конечные узлы? »

Итак, как мне заставить это работать? и как я могу указать точную категорию для запуска?

Комментарии:

1. Почему вы пытаетесь развернуть, даже если make завершается неудачно? (И почему вы все равно пытаетесь использовать make с Java?)

2. IDK, я взял этот пример из документации по конвейеру Jenkins

3. Есть ли у вас экземпляр maven в youyr jenkins? Или вы можете использовать агенты docker?

4. Я думаю, что у меня есть экземпляр maven в моем Jenkins…

Ответ №1:

Есть несколько вещей, которые вам нужно будет настроить в первую очередь. Например, учетные данные jdk, maven, git. Тогда ваш конвейер будет выглядеть примерно так.

    pipeline {

  agent {
        node { 
            label 'the label of your agen or have "any" if you didnt specidy one'
        }
    }
  environment {
      //maven home as it is configured in Global Configuration
       mvnHome = tool 'maven'

       
    }
    
 options{
    // remove older builds and artifacts if they exceed 15 builds
    buildDiscarder(logRotator(numToKeepStr: '100', artifactNumToKeepStr: '100'))
    //add the time stamp to the logs
    timestamps()
 }

   
   
   stages {
    stage("Git CheckOut") {
      steps {
        script{
        //CheckOut from the repository
        def scmVars = checkout([$class: 'GitSCM', 
        branches: [[name: 'master']], //here you can enter branch name or SHA code
        userRemoteConfigs: [[credentialsId: 'credential that  you set for you git here', 
        url: "your git url here"]]]) 
        }
      }

    } 
    
    stage('Build Artifacts') {
        steps {
        sh "echo Packaging the artifacts!"
        //packaging the project
        sh "${mvnHome}/bin/mvn clean package  "
        //archiving the artifacts after the build
        sh "echo Archiving the artifacts!"
        archiveArtifacts 'target/*.war' // you can deploy to nexus if you setup nexus
        
        }
    }

    stage('Unit Test') {
        steps {
        //running the unit tests
        sh "${mvnHome}/bin/mvn clean test"
        }
        
    }


     
     
        stage('Transfer war file to Servers') {
            steps {
                sshagent(['agent name that was setup in your server where you want to deploy artifacts']) { 
                sh "echo Trasnfering files to servers!"
                //copy war file  servers
                    sh 'scp -o StrictHostKeyChecking=no $projPath/target/your war file /your server path'

                }
            }
        }
    
   }
   
   
    post {

        always {
            sh "echo Jenkins Job is Done"

        }
        success {
            sh "echo Sending Success Email!"
        }
        failure {
            sh "echo Sending Failed Email!"
          
        }
    }
   
}
 
 

Комментарии:

1. Большое спасибо за ваш ответ! Однако у меня есть несколько вопросов. 1) Как я могу найти свой git credentialId? я погуглил и не нашел никакого ответа. может быть, это токен git? 2) на этапе тестирования могу ли я добавить это: чистый тест -e -f /home/omgili/jenkins/automation/pom.xml -Dgroups=категории.регрессия? 3) Что такое метка и где я могу определить метку?

2. Хорошо, итак, я попробовал это, но я удалил учетные данные, потому что я установил их в Jenkins. и я удалил этап («Передача файла войны на серверы»), потому что я не знал, что там писать … и я получил это сообщение: WorkflowScript: 34: Неопределенный раздел «этап» @ строка 34, столбец 5. этап («Создание артефактов») { WorkflowScript: 46: множественные вхождения раздела этапа @ строка 46, столбец 5. этап (‘Модульный тест’) { WorkflowScript: 46: Неопределенный раздел «этап» @ строка 46, столбец 5. этап (‘Модульный тест’) { WorkflowScript: 1: отсутствует обязательный раздел «этапы»@ строка 1, столбец 1.

3. Код, которым я поделился, основан на некоторой предварительной конфигурации, которую вам нужно выполнить. Например, вам необходимо настроить jdk в вашей глобальной конфигурации, также вам нужно настроить maven в том же месте. Для git вам нужно будет добавить его в вашу глобальную конфигурацию. но для этого вам сначала понадобится плагин git. Я посоветую вам просмотреть несколько видеороликов YouTube для настройки каждого раздела, после чего вы сможете использовать мой код и изменять его в соответствии с вашими потребностями.

4. Спасибо, я проверю, смогу ли я найти что-нибудь на youtube. Есть ли у меня какой-либо способ связаться с вами по личным вопросам?

5. извините, но я не могу поделиться своей информацией об этой платформе. Если у вас возникнут какие-либо проблемы, просто отправьте сообщение здесь, и я свяжусь с вами. Или, если вы хотите поделиться своим адресом электронной почты, я могу отправить вам электронное письмо.