Я сталкиваюсь с уникальной ситуацией в Jenkins, когда задание нижестоящего конвейера (задание TestNG) при вызове из задания восходящего конвейера внезапно завершается и передает управление восходящему заданию со статусом FAILED.
Но это же нижестоящее задание успешно выполняется при запуске в качестве отдельного задания или при воспроизведении этапа из вышестоящего задания.
Вот сценарий восходящего конвейера:
pipeline{
agent{
label "ABC"
}
stages{
stage("Source Code Checkout"){ }
stage("Compilation"){
tools{
jdk "JDK1.7"
}
steps{
echo "Now proceeding for source compilation using maven executable"
bat label: 'maven-phase', script: '"D:\\Apache Build Tools\\apache-maven-3.6.1-bin\\apache-maven-3.6.1\\bin\\mvn" -o -f source_code/parent/pom.xml clean install -e'
}
post{
success{
echo "Successfully compiled the code"
}
failure{
echo "Unable to compile the code. There were some errors"
}
}
}
stage("JUnit"){ }
stage("SonarQube Analysis"){ }
stage("Sonar Quality Gates"){ }
/*stage("Publish Artifacts to Nexus Repo"){ }
stage("fileutil"){ }
stage("Deployment"){{ agent labal 'GHI' }....}
stage("Pre-FTA Approval"){}
stage("FTA"){
steps{
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE'){
echo 'performing TA tests'
build job: 'test', propagate: true, wait: true
echo 'TA is successful'
}
}
post{
success{
echo "TA is successful"
}
failure{
echo "TA is unsuccessful"
/*script{
unsuccessfulTestTransitionIssue()
}*/
}
}
}
stage("UAT Approval"){
steps{
input id: '200', message: 'Continue post TA?', ok: 'Approved', submitter: 'ganesh'
}
}
stage("UAT"){
steps{
echo "UAT is WIP"
}
}
}
post{
success{
echo "========pipeline executed successfully ========"
script{
currentBuild.result = "SUCCESS"
}
}
failure{
echo "There were some failures in overall execution. Please rectify them"
script{
currentBuild.result = "FAILURE"
}
}
unstable{
echo "The build has become unstable"
script{
currentBuild.result = "UNSTABLE"
}
}
}
}
Вот сценарий нисходящего конвейера:
node(‘DEF’){
env.JAVA_HOME="${tool 'JDK18_84'}"
env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"
//deleteDir()
stage('Pre-TA'){
echo 'this is pre-ta'
}
stage('Build TA'){
bat label: 'source code checkout', script: 'svn export --non-interactive --no-auth-cache --username xxxx --password xxxx https://svn.repo.com/svn/T010/ABC /Other_Documents/TA_SCRIPTS/ D:\\jenkins\\workspace\\ABC\\test --trust-server-cert --force'
withAnt(installation: 'Ant_84', jdk: 'JDK18_84') {
bat label: '', script: 'ant -verbose -d testng-exec'
}
}
stage('post ta'){
echo 'Done!'
}
}
Вот вывод консоли нижестоящего задания, когда он выполняется как часть восходящего конвейера:
12:41:21
12:41:21 The ' characters around the executable and arguments are
12:41:21 not part of the command.
12:41:23 [testng] Started InternetExplorerDriver server (32-bit)
12:41:23 [testng] 3.9.0.0
12:41:23 [testng] Listening on port 16216
12:41:23 [testng] Only local connections are allowed
12:41:25 [testng] Sep 28, 2019 12:41:22 PM org.openqa.selenium.remote.ProtocolHandshake createSession
12:41:25 [testng] INFO: Detected dialect: W3C
12:41:40 [testng] Landed on Login Page
12:41:42 [testng] Role Has Been Selected
12:42:04 [testng]
12:42:04 [testng] ===============================================
12:42:04 [testng] Suite
12:42:04 [testng] Total tests run: 1, Failures: 1, Skips: 0
12:42:04 [testng] ===============================================
12:42:04 [testng]
12:42:04 Finding class org.testng.internal.ExitCode
12:42:04 Loaded from D:\jenkins\workspace\ABC\test\lib\testng-6.14.3.jar org/testng/internal/ExitCode.class
12:42:04 Class org.testng.internal.ExitCode loaded from ant loader (parentFirst)
12:42:04
12:42:04 BUILD FAILED
12:42:04 D:\jenkins\workspace\ABC\test\build.xml:45: The tests failed.
12:42:04 at org.testng.TestNGAntTask.actOnResult(TestNGAntTask.java:747)
12:42:04 at org.testng.TestNGAntTask.execute(TestNGAntTask.java:538)
12:42:04 at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
12:42:04 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12:42:04 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
12:42:04 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
12:42:04 at java.lang.reflect.Method.invoke(Method.java:498)
12:42:04 at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
12:42:04 at org.apache.tools.ant.Task.perform(Task.java:350)
12:42:04 at org.apache.tools.ant.Target.execute(Target.java:449)
12:42:04 at org.apache.tools.ant.Target.performTasks(Target.java:470)
12:42:04 at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1391)
12:42:04 at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
12:42:04 at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
12:42:04 at org.apache.tools.ant.Project.executeTargets(Project.java:1254)
12:42:04 at org.apache.tools.ant.Main.runBuild(Main.java:830)
12:42:04 at org.apache.tools.ant.Main.startAnt(Main.java:223)
12:42:04 at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
12:42:04 at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
12:42:04
12:42:04 Total time: 42 seconds
12:42:04 [Pipeline] }
12:42:04 [Pipeline] // withAnt
12:42:04 [Pipeline] }
12:42:04 [Pipeline] // stage
12:42:04 [Pipeline] }
12:42:04 [Pipeline] // node
12:42:04 [Pipeline] End of Pipeline
12:42:04 [BFA] Scanning build for known causes...
12:42:04 [BFA] No failure causes found
12:42:04 [BFA] Done. 0s
12:42:04 ERROR: script returned exit code 1
12:42:04 Finished: FAILURE
Вот результат нижестоящего конвейерного задания, когда он выполняется как отдельное задание или если этап FTA воспроизводится из вышестоящего задания (это успешно):
12:43:13 [testng] Started InternetExplorerDriver server (32-bit)
12:43:13 [testng] 3.9.0.0
12:43:13 [testng] Listening on port 34067
12:43:13 [testng] Only local connections are allowed
12:43:15 [testng] Sep 28, 2019 12:43:11 PM org.openqa.selenium.remote.ProtocolHandshake createSession
12:43:15 [testng] INFO: Detected dialect: W3C
12:43:20 [testng] Landed on Login Page
12:43:22 [testng] Role Has Been Selected
12:43:29 [testng] Disbursement Selected,Domestic LSM / IBG Operations Memo Is Selected
12:43:55 [testng] Status Saved Has Been Selected
12:45:03 [testng] Company Has Been Selected
12:45:50 [testng] Filled Home Tab Details
12:46:29 [testng] LSM Changes Have Been Saved
12:46:29 [testng]
12:46:29 [testng] ===============================================
12:46:29 [testng] Suite
12:46:29 [testng] Total tests run: 1, Failures: 0, Skips: 0
12:46:29 [testng] ===============================================
12:46:29 [testng]
12:46:29 Finding class org.testng.internal.ExitCode
12:46:29 Loaded from D:\jenkins\workspace\ABC\test\lib\testng-6.14.3.jar org/testng/internal/ExitCode.class
12:46:29 Class org.testng.internal.ExitCode loaded from ant loader (parentFirst)
12:46:29
12:46:29 BUILD SUCCESSFUL
12:46:29 Total time: 3 minutes 17 seconds
12:46:30 Finished: SUCCESS
Я полностью сбит с толкупо этому и нет ответа.С кем бы я ни советовался, никогда не сталкивался с такой проблемой или понятия не имею.
Мне нужна ваша помощь, чтобы разрешить эту загадочную ситуацию.
С уважением