这是我正在玩的代码
node {
stage 'build'
echo 'build'
stage 'tests'
echo 'tests'
stage 'end-to-end-tests'
def e2e = build job:'end-to-end-tests', propagate: false
result = e2e.result
if (result.equals("SUCCESS")) {
stage 'deploy'
build 'deploy'
} else {
?????? I want to just fail this stage
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让我将"端到端测试"阶段标记为失败,而不会使整个工作失败?传播假只是总是将舞台标记为真,这不是我想要的,但传播真实标志着失败的工作,我也不想要.
背景
我想在不同的模拟器上对Jenkins运行我的Android Instrumented测试.假设我有100个测试和4个模拟器,我想在每个上运行25个测试.
我./gradlew connectedDebugAndroidTest在Jenkins Pipeline中为4个模拟器执行并行操作
stage('Instrumented Tests') {
parallel(
emu1: {
runInstrumentedTestOnEmu(...)
},
emu2: {
runInstrumentedTestOnEmu(...)
}
...
)
}
Run Code Online (Sandbox Code Playgroud)
connectedDebugAndroidTest 将生成其他命令以设置运行检测测试的环境.
...
:app:transformNativeLibsWithMergeJniLibsForDebugAndroidTest
:app:processDebugAndroidTestJavaRes NO-SOURCE
:app:transformResourcesWithMergeJavaResForDebugAndroidTest
:app:validateSigningDebugAndroidTest
:app:packageDebugAndroidTest
:app:assembleDebugAndroidTest
:app:connectedDebugAndroidTest
Run Code Online (Sandbox Code Playgroud)
当环境准备就绪时,:app:connectedDebugAndroidTest它会在仿真器上开始运行测试.
我不想为所有并行调用运行这些过程(在这种情况下,它将是其中的4个),因为显然我多次完成相同的工作.从理论上讲,最好的选择是parallel在所有内容准备好运行测试之前和之后执行设置,然后进入parallel步骤并在每个模拟器上开始测试.
题
是否可以在不执行任何操作的情况下执行所有预设置步骤connectedDebugAndroidTest?
此外,如果我connectedDebugAndroidTest在4个仿真器上并行运行,则构建崩溃,因为intermediate当其他并行构建已删除该文件时,gradle会尝试从目录中读取文件,从而导致崩溃.
我想在Jenkins声明性管道语法中定义多个阶段,这些阶段可以继续通过它们中的任何一个失败.我找不到任何真正重复的现有问题,因为它们都假定或允许脚本化语法.
pipeline {
agent any
stages {
stage('stage 1') {
steps {
echo "I need to run every time"
}
}
stage('stage 2') {
steps {
echo "I need to run every time, even if stage 1 fails"
}
}
stage('stage 3') {
steps {
echo "Bonus points if the solution is robust enough to allow me to continue *or* be halted based on previous stage status"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了澄清,我不是在寻找如何在脚本语法中完成此任务.我试图理解这种流控制是否实际上是在声明性语法中支持和形式化的.为此,我将尝试准确定义我正在寻找的内容:
post step恶作剧.我想要真正的多个阶段,而不是一个post always …简化的管道如下所示:
1. build
2. unit test
3. deploy to dev
4. integration tests
5. deploy to prod
Run Code Online (Sandbox Code Playgroud)
对于步骤5,我设置了Jenkins管道输入命令。我们不会在每次提交时都将产品部署到产品上,因此,如果我们中止所有这些工作,它将有大量的灰色版本。是否可以使用跳过选项,以使构建仍可以显示为绿色蓝色?