Jenkins 管道脚本全局变量
Jenkins pipeline script global variable
我正在学习 jenkins,并且正在研究示例管道
pipeline {
agent any
stages {
stage('Stage1') {
steps {
bat '''
cd C:/Users/roger/project/
python -u script1.py
'''
}
}
stage('Stage2') {
steps {
bat '''
cd cd C:/Users/roger/project/abc/
python -u script2.py
'''
}
}
stage('Stage3') {
steps {
bat '''
cd cd C:/Users/roger/project/abc/new_dir/
python -u demo.py
'''
}
}
}
}
有没有办法将项目 C:/Users/roger/project/
的基本路径存储为一个变量,以便它可以用于向其附加新路径而不是写入整个路径。
我怎样才能写在上面的阶段,这样我就不必每次都重复写相同的基本路径到每个阶段
您有多种选择,最简单的方法是在 environment
指令 (read more) 中定义参数,这将使参数可用于管道中的所有阶段,并且还将加载它到任何解释器步骤的执行环境,如 sh
、bat
和 powershell
,从而使该参数也可用于您作为环境变量执行的脚本。
此外,environment
指令支持非常有用的 credential parameters。
在您的情况下,它看起来像:
pipeline {
agent any
environment {
BASE_PATH = 'C:/Users/roger/project/'
}
stages {
stage('Stage1') {
steps {
// Using the parameter as a runtime environment variable with bat syntax %%
bat '''
cd %BASE_PATH%
python -u script1.py
'''
}
}
stage('Stage2') {
steps {
// Using groovy string interpolation to construct the command with the parameter value
bat """
cd ${env.BASE_PATH}abc/
python -u script2.py
"""
}
}
}
}
您的另一个选择是使用在管道顶部定义的全局变量,它的行为与任何 groovy 变量一样,并且可用于管道中的所有阶段(但不适用于执行解释器步骤的环境)。
类似于:
BASE_PATH = 'C:/Users/roger/project/'
pipeline {
agent any
stages {
stage('Stage1') {
steps {
// Using the parameter insdie a dir step to change directory
dir(BASE_PATH) {
bat 'python -u script1.py'
}
}
}
stage('Stage2') {
steps {
// Using groovy string interpolation to construct the command with the parameter value
bat """
cd ${BASE_PATH}abc/
python -u script2.py
"""
}
}
}
}
我正在学习 jenkins,并且正在研究示例管道
pipeline {
agent any
stages {
stage('Stage1') {
steps {
bat '''
cd C:/Users/roger/project/
python -u script1.py
'''
}
}
stage('Stage2') {
steps {
bat '''
cd cd C:/Users/roger/project/abc/
python -u script2.py
'''
}
}
stage('Stage3') {
steps {
bat '''
cd cd C:/Users/roger/project/abc/new_dir/
python -u demo.py
'''
}
}
}
}
有没有办法将项目 C:/Users/roger/project/
的基本路径存储为一个变量,以便它可以用于向其附加新路径而不是写入整个路径。
我怎样才能写在上面的阶段,这样我就不必每次都重复写相同的基本路径到每个阶段
您有多种选择,最简单的方法是在 environment
指令 (read more) 中定义参数,这将使参数可用于管道中的所有阶段,并且还将加载它到任何解释器步骤的执行环境,如 sh
、bat
和 powershell
,从而使该参数也可用于您作为环境变量执行的脚本。
此外,environment
指令支持非常有用的 credential parameters。
在您的情况下,它看起来像:
pipeline {
agent any
environment {
BASE_PATH = 'C:/Users/roger/project/'
}
stages {
stage('Stage1') {
steps {
// Using the parameter as a runtime environment variable with bat syntax %%
bat '''
cd %BASE_PATH%
python -u script1.py
'''
}
}
stage('Stage2') {
steps {
// Using groovy string interpolation to construct the command with the parameter value
bat """
cd ${env.BASE_PATH}abc/
python -u script2.py
"""
}
}
}
}
您的另一个选择是使用在管道顶部定义的全局变量,它的行为与任何 groovy 变量一样,并且可用于管道中的所有阶段(但不适用于执行解释器步骤的环境)。
类似于:
BASE_PATH = 'C:/Users/roger/project/'
pipeline {
agent any
stages {
stage('Stage1') {
steps {
// Using the parameter insdie a dir step to change directory
dir(BASE_PATH) {
bat 'python -u script1.py'
}
}
}
stage('Stage2') {
steps {
// Using groovy string interpolation to construct the command with the parameter value
bat """
cd ${BASE_PATH}abc/
python -u script2.py
"""
}
}
}
}