Xcode 将Jenkins管道拆分为环境部分和阶段部分作为模板
我们使用Jenkins服务器使用Unity和Xcode创建多个iOS/Android项目。目前,我们在项目存储库的每个根目录中都有一个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
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配置中。这也解决了版本问题,因为您可以定义在文件中导入库模板时使用哪个分支/标记/哈希
谢谢。您熟悉共享库吗?