当前位置: 首页 > 知识库问答 >
问题:

为什么fastlane扫描测试会继续在Jenkins管道中重建和运行?

薛涛
2023-03-14

我在Jenkins上运行了一个管道作业,它运行iOS单元测试。

当我们的测试失败时,我看到了一些非常奇怪的行为,fastlane在它的摘要中显示了失败,但随后开始重建代码并重新测试。

这种情况不断发生,我无法确定是缺少快速车道/扫描设置,还是在Jenkins管道中运行此设置。

bundle exec fastlane test在本地运行得很好,在我的扫描文件中定义的每个设备上只执行一次。

我的控制台输出如下所示:

[11:26:36]: fastlane finished with errors
[!] Test execution failed. Exit status: 65
#######################################################################
# fastlane 2.19.3 is available. You are on 2.17.0.
# It is recommended to use the latest version.
# Please update using `bundle update fastlane`.
#######################################################################
2.19.3 sigh Hotfix
* fix sigh undefined variable regression (#8457)
2.19.2 Snapshot improvements and more
* Add tests for ReportsGenerator available_devices
* Fix HTML report generation for snapshot
* Prioritize options passed to supply
* Collect logs for iOS 10+ devices
* Add row for Fabric.app-installed fastlane to env command
* Sigh reports better errors for team members
* Expand the notes_path parameter
* Update xcov intialization
2.19.1 Hot fix for provisioning profile creation/deletion
- Re-implement csrf token retrieval for provisioning profiles (#8410)
- don't attempt to create apps on the dev center and itc if mac app (#8404)
To see all new releases, open https://github.com/fastlane/fastlane/releases
Please update using `bundle update fastlane`
/Users/hudson/build/workspace/MNELastWord-PR-Pipeline@tmp/durable-ba2bbebe/script.sh: line 2: shell_session_update: command not found
Sending interrupt signal to process
▸ Cleaning Pods/CocoaLumberjack-iOS [Debug]
▸ Check Dependencies
▸ Cleaning Pods/Bento-iOS-Lib-iOS-BentoResources [Debug]
▸ Check Dependencies
▸ Cleaning Pods/AFNetworking-iOS [Debug]
▸ Check Dependencies
▸ Cleaning Pods/JSONModel-iOS [Debug]

您可以看到,在fastlane完成后,它只是以愉快的方式继续进行,并开始重建和重新测试,而不是退出作业。

基于这个输出,我认为是Fastlane中的某些东西导致了它的重新执行,因为Jenkins没有输出表明舞台再次被调用

也就是说,我在Github上的fastlane问题中没有看到任何关于这一点的内容,除了快照具有重试选项(我没有使用快照)

为了完整起见这是我的扫描文件Jenkinsfile和Fastfile

有人能帮忙吗?我尝试了最新的快速车道,旧的快速车道,仍然可以看到行为。

我的DevOps和SAs对我们非常不满,因为我们的工作永远不会结束,并且正在挂起我们的jenkins节点:)(中止/终止它们确实有问题)

共有2个答案

孟海
2023-03-14

看起来测试用例失败了,但Jenkins的工作并没有停止。这里可能有两种可能性:

>

  • 一旦测试用例失败,就尝试退出作业,这样之后它就不会继续了,因此添加了显式的exit 1 if test case execution Failes(如果测试用例执行失败)示例

    stage('Run Tests') {
    
    // Shell build step
    sh """ 
    #!/bin/bash
    echo "Executing Fastlane test lane..."
    $HOME/.fastlane/bin/fastlane tests || exit 1;
    """     
    }
    

    检查测试用例是否改变源代码文件,并将其提交回SCM,并且在提交/推送时Jenkins将进行轮询,从而导致循环。

    要解决此问题,请使用基于提交/用户/消息的轮询忽略。添加屏幕截图以供参考

    https://imgs.xnip.cn/cj/n/14/ecc39398-c0b2-4463-8cac-35d4ccb716ee.png" width="100%" height="100%" />

  • 祝允晨
    2023-03-14

    所以最终我想我已经找到了问题的根源。

    如果我将我的测试阶段包装在一个try/catch块中,那么我将从工作中获得适当的行为。

    stage 'Tests'
                try {
                        env.FASTLANE_EXPLICIT_OPEN_SIMULATOR = 1
                        bash 'bundle exec fastlane test'
                    } catch (e) {
                        currentBuild.result = 'FAILURE'
                        throw e
                    }
    

    这真的没有意义,因为我的整个部分都被一个try/catch包住了——所以如果有人知道为什么这样做,我洗耳恭听。但至少我现在能够解决这个问题。

     类似资料:
    • 问题内容: 我目前正在尝试从管道中将groovy脚本作为节点之一运行,但是遇到了以下错误: 另外,我尝试以Groovy的方式安装插件,但由于某种原因,它将无法安装。每当我刷新工具页面时,安装程​​序就会消失。我安装groovy错误吗?请帮忙! 编辑:相关数据 而且ideainspect.groovy文件是shebang的可执行文件,这可能是问题所在。 问题答案: 您的jenkins用户在使用它时会

    • 我一直在使用Jenkins,我看到了很多管道示例(声明性示例),我还看到一些使用Jenkins文件中的pollSCM属性来触发构建,如下所示: 然而,我在配置多分支管道时看到了这个扫描多分支管道触发器选项。我不知道这两者有什么区别。 我遇到了所有这些问题,因为我面临着为同一作业触发两个构建的情况,我认为这是因为我配置了这两个选项。 谁能帮我理解一下这个区别? 非常感谢。

    • 是否可以扫描多分支管道以检测具有Jenkinsfile但不执行管道的分支? 我的项目有不同的分支,当我从父管道多分支启动构建扫描时,我不希望所有带有Jenkinsfile的子管道分支都开始执行。

    • 出现此问题后,总是进行扫描。 此问题将关闭设备上的蓝牙。或者退出应用程序就会解决。当我让程序运行12小时时,出现了此问题。 似乎很少出现此问题,但我不知道是什么引发了此问题。 有人能帮助我解决此问题吗? 下面列出了终端信息、源代码和日志。 箭头M03 Android OS 6.0 'org.altbeacon:Android-beacon-library:2.16.2' 主体活动

    • 最近我一直试图在詹金斯内部建立一个管道。目标是创建一个pod并执行kubernetes部署。 但是当我运行管道作业时,它会一个接一个地创建pod,它永远不会完成作业- 设置kubernetes集群-成功 安装jenkins-成功 连接jenkins到kubernetes集群-成功 这是管道脚本- 不-Pods创建成功,kubernetes部署也成功,但jenins管道从未停止。 我的jenkins