Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 将Jenkins管道拆分为环境部分和阶段部分作为模板_Xcode_Unity3d_Jenkins_Continuous Integration_Jenkins Pipeline - Fatal编程技术网

Xcode 将Jenkins管道拆分为环境部分和阶段部分作为模板

Xcode 将Jenkins管道拆分为环境部分和阶段部分作为模板,xcode,unity3d,jenkins,continuous-integration,jenkins-pipeline,Xcode,Unity3d,Jenkins,Continuous Integration,Jenkins Pipeline,我们使用Jenkins服务器使用Unity和Xcode创建多个iOS/Android项目。目前,我们在项目存储库的每个根目录中都有一个Jenkins文件,在一个文件中包含整个配置和构建步骤: pipeline { agent any environment { REPOSITORY_URL = 'ssh://git@XYZ.git' PROJECT_SUBDIR = '' BUILD_FOR_ANDROID = 'true' BUILD_FOR_IOS

我们使用Jenkins服务器使用Unity和Xcode创建多个iOS/Android项目。目前,我们在项目存储库的每个根目录中都有一个Jenkins文件,在一个文件中包含整个配置和构建步骤:

pipeline {
  agent any

  environment {
    REPOSITORY_URL = 'ssh://git@XYZ.git'
    PROJECT_SUBDIR = ''
    BUILD_FOR_ANDROID = 'true'
    BUILD_FOR_IOS = 'true'
    UNITY_VERSION = '2018.4.0f1'
  }

  // how to load this from a template file? -->
  stages {
    stage('Checkout') {
      steps {
        script {
          if (env.PROJECT_SUBDIR) {
            env.PROJECT_DIR = sh(
              script: "echo ${env.WORKSPACE}/${env.PROJECT_SUBDIR}",
              returnStdout: true
            ).trim()
          } else {
            env.PROJECT_DIR = sh(
              script: "echo ${env.WORKSPACE}",
              returnStdout: true
            ).trim()
          }
        }

        // more stuff ...

      }
    }
  }
  // <--
}
是否可以在构建过程中从另一个文件(例如模板)加载零件阶段?这会将依赖于项目的配置部分与公共阶段部分分开,并且我可以在单个或版本化的模板文件中更新所有项目存储库的构建过程


它如何处理环境变量?它们仍然在同一个环境中,还是我必须通过它们?

这是一个很好的建议

我使用本页上提到的最后一种方法进行管理:

因此,我将管道复制到名为

/vars/run_pipeline_template.groovy
在我的新存储库中。在此之前,我称之为pipeline.groovy,这不是我的最佳想法,因为这是一个受保护的关键字。我将环境变量的定义保留在以前的Jenkins文件中。它们仍然可以通过env.VAR_NAME访问,而无需将它们转发到库脚本。该库位于其自己的Git存储库中,我在“全局管道库”一节中将该库添加到Jenkins配置中。这也解决了版本问题,因为您可以定义在文件中导入库模板时使用哪个分支/标记/哈希


谢谢。

您熟悉共享库吗?