【问题标题】:why fastlane working directory different than what I set为什么 fastlane 工作目录与我设置的不同
【发布时间】:2018-01-04 07:21:52
【问题描述】:

使用 Jenkins 的 fastlane。 Jenkins 将 pwd 设置为一个目录,我们称之为 directory1,它具有标准的 Fastfile 和 fastlane 子文件夹,如下所示:

MacBook-Pro:directory1 user$ tree

├── fastlane
│   ├── Deliverfile
│   
├── Fastfile

Jenkins 然后从该目录执行 fastlane。使用需要路径的 fastlane 操作时,如果我使用假定工作目录为 directory1 的路径,则一切正常。但我不明白的是,为什么当我从 fastlane 查询密码时,无论是通过使用 sh 操作还是直接使用 Ruby Dir.pwd,都给了我值 /MacBook-Pro/directory1/fastlane 而不是工作我设置的目录 /MacBook-Pro/directory1。关于 fastlane 对这里的目录所做的事情,我错过了什么?

【问题讨论】:

    标签: macos jenkins directory fastlane


    【解决方案1】:

    在使用sh() 运行 shell 命令时,Fastlane 有一些奇怪的目录行为。解决方法是更改​​目录,或者在运行 pwd 等 shell 命令时在路径前添加 ..

    根据official docs

    ...每个动作和每个插件的代码都在项目的根目录中运行,而 Fastfile 中的所有用户代码都在 ./fastlane 目录中运行。在将现有代码从您的 Fastfile 迁移到您自己的操作或插件时,考虑这一点很重要。要手动更改目录,您可以使用标准 Ruby 块:

    Dir.chdir("..") do # code here runs in the parent directory end

    这种行为不是很好,从 fastlane 的早期开始就是这样。尽管我们很想对其进行更改,但没有好的方法可以在不破坏数千个生产设置的情况下进行更改,因此我们决定暂时保持原样。

    【讨论】:

    • 哇,我本来可以省下最后两杯黑咖啡的。谢谢!
    猜你喜欢
    • 2017-12-02
    • 2012-08-20
    • 2023-03-17
    • 2019-09-21
    • 2011-07-12
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    相关资源
    最近更新 更多