#java #jenkins #automation #jenkins-pipeline
#java #дженкинс #автоматизация #дженкинс-конвейер
Вопрос:
У меня есть проект автоматизации, написанный на Java с использованием Junit, и я пытаюсь создать свой новый конвейер заданий Jenkins. Я создал конвейер и новый файл Jenkins, но я не знаю, что должен содержать этот файл. Мне нужно —
- создайте проект
- Запускайте тесты по категориям (я не хочу запускать все тесты в одном задании)
- Развернуть
Я нашел это в документации 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. извините, но я не могу поделиться своей информацией об этой платформе. Если у вас возникнут какие-либо проблемы, просто отправьте сообщение здесь, и я свяжусь с вами. Или, если вы хотите поделиться своим адресом электронной почты, я могу отправить вам электронное письмо.