You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins Build iOS阶段输入参数描述中引用环境变量

解决Jenkins iOS构建中Input参数描述展示动态环境变量的问题

问题原因

Jenkins中stage级别的input参数会在stage启动前预解析,而env.APP_NUM是在第一个App Store Build Number阶段运行时才设置的,所以直接在stage的input里引用${env.APP_NUM}会无法获取到值。需要将input逻辑放到script块内部,让变量在运行时动态解析。

优化后的Jenkinsfile配置

stage('App Store Build Number') {
    steps {
        script {
            // 直接获取fastlane输出,无需写入临时文件,简化流程
            env.APP_NUM = sh(
                script: "fastlane run app_store_build_number api_key_path:\"key.json\" app_identifier:\"com.projectname.app\" | grep -o 'Latest upload for live-version.*'",
                returnStdout: true
            ).trim()
            echo "获取到的线上版本信息:${env.APP_NUM}"
            slack_send("${env.APP_NUM}")
        }
    }
}

stage('build ios') {
    steps {
        script {
            // 将input放入script块内,确保env.APP_NUM已被赋值
            def userInput = input(
                message: "是否继续构建?",
                ok: "确认继续",
                parameters: [
                    string(
                        defaultValue: "", 
                        name: 'APP_NUM', 
                        trim: true, 
                        description: "当前线上版本信息:${env.APP_NUM}"
                    )
                ]
            )
            // 可按需使用用户输入的参数,示例:
            // echo "用户确认的版本信息:${userInput.APP_NUM}"
        }
    }
}

关键修改点

  • 简化版本信息获取:去掉临时文件test的写入和读取操作,直接通过sh命令的返回值赋值给env.APP_NUM,减少不必要的IO步骤。
  • 将input移至script块:stage级别的input会提前解析变量,而script块内的input函数是在stage运行时执行的,此时env.APP_NUM已经被第一个stage正确设置,能在参数描述中正常展示。

内容的提问来源于stack exchange,提问作者Sameed Usmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:27:26