首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fastlane.swift在范围内找不到“ENV”

fastlane.swift在范围内找不到“ENV”
EN

Stack Overflow用户
提问于 2022-05-18 20:15:39
回答 2查看 313关注 0票数 3

我是fastlane的新手,我尝试在fastfile.swift中读取环境变量,它有以下内容

代码语言:javascript
复制
import Foundation

class Fastfile: LaneFile {
    .
    .
    .

    func createRCBuildLane() {
        beforeAll()
        ensureGitBranch(branch: "qa")
        let commitMessage = "RC_Build_Version_" + getVersionNumber(target: "Example App") + "_Build_" + getBuildNumber()
        addGitTag(buildNumber: .userDefined(commitMessage), force: true)
        pushGitTags(force: true)
        createPullRequest(apiToken: "*****", repo: "Example/iOS_ble_client", title: commitMessage, base: "master")
        slackMessage(withMessage: "Example App RC Release:\n" + commitMessage)
    }

    .
    .
    .

    func beforeAll() {
//        updateFastlane()
    }

    func matchDevelopmentCertificateLane() {
        match(type: "development")
    }

    func matchAdHocCertificateLane() {
        match(type: "adhoc")
    }

    func matchDistributionCertificateLane() {
        match()
    }

    func slackMessage(withMessage message: String) {
        slack(
            message: .userDefined(message),
            channel: "#example-ios",
            slackUrl: "https://hooks.slack.com/services/###/###/###",
            payload: ["Version:": getVersionNumber(target: "Example App"), "Build:": getBuildNumber()],
            success: true
        )
    }
}

我想通过ENV通过apiToken,而不是硬编码它。有人能指出我在这里的正确方向吗?

我试过了

代码语言:javascript
复制
    func createRCBuildLane() {
        beforeAll()
        ensureGitBranch(branch: "qa")
        let commitMessage = "RC_Build_Version_" + getVersionNumber(target: "Example App") + "_Build_" + getBuildNumber()
        addGitTag(buildNumber: .userDefined(commitMessage), force: true)
        pushGitTags(force: true)
        createPullRequest(apiToken: ENV["API_TOKEN"], repo: "Example/iOS_ble_client", title: commitMessage, base: "master")
        slackMessage(withMessage: "Example App RC Release:\n" + commitMessage)
    }

但是得到这个错误Fastfile.swift:37:37: cannot find 'ENV' in scope

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-31 11:11:53

要快速访问环境变量,您应该使用ProcessInfo。例如,Fastfile.swift中有一个示例代码

代码语言:javascript
复制
class Fastfile: LaneFile {
    
    func testLane() {
        desc("Description of what the lane does")
        
        if let apiToken = ProcessInfo.processInfo.environment["API_TOKEN"] {
            NSLog("API TOKEN: \(apiToken)")
        }
        else {
            NSLog("Error: No token.")
        }
    }
}

现在您可以设置环境变量并运行您的车道:

代码语言:javascript
复制
$ export API_TOKEN='CACD1B9D-56AA-41F0-BDE3-457DDA30A8D4'
$ fastlane testLane 

产出:

代码语言:javascript
复制
...
[13:56:58]: $ ./FastlaneRunner lane testLane swiftServerPort 2000 > /dev/null
[13:56:59]: ▸ 2022-05-31 13:56:59.494 FastlaneRunner[34213:828339] API TOKEN: CACD1B9D-56AA-41F0-BDE3-457DDA30A8D4
[13:56:59]: fastlane.tools finished successfully 
票数 1
EN

Stack Overflow用户

发布于 2022-05-30 09:43:24

检查项目的.env文件夹中是否有一个fastlane隐藏文件。.env是已配置项目的环境变量,而不是系统环境变量。如果API_TOKEN.env中,则配置没有问题,您可以看到是否可以在Applefile中获得指定的环境变量值。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72295442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档