一、单引号和双引号用法差异是什么?
使用 CODING 持续集成时经常需要在 Jenkinsfile 内拼接字符串或使用环境变量作为参数,Jenkinsfile 中的单引号和双引号在使用时,会有些许差异,以下演示常用的 echo 与 sh 两个命令的差异。
pipeline { agent any environment { MY_ENV = 'this is my env' } stages { stage('Test') { steps { script { def MY_ENV = 'define in script' echo "${env.MY_ENV}" // 输出内容为 this is my env echo "\\${env.MY_ENV}" // 输出内容为 ${env.MY_ENV} echo "${MY_ENV}" // 输出内容为 define in script echo '${MY_ENV}' // 输出内容为 ${MY_ENV} sh 'echo ${MY_ENV}' // 输出内容为 this is my env sh "echo ${MY_ENV}" // 输出内容为 define in script sh "echo ${env.MY_ENV}" // 输出内容为 this is my env } } } }}
·echo 在使用单引号时,并不会解析里面的 $ 符号,而是直接输出原文;在使用双引号时,会打印出环境变量里的 MY_ENV。
·sh 在使用单引号时,将原文当作我们平时在终端里 sh 的命令一样执行,所以可以打印出环境变量里的 MY_ENV。
二、持续集成的配置来源区别是什么?
在创建构建计划时选择使用 代码仓库中的 Jenkinsfile 与 静态配置的 Jenkinsfile 有以下区别:
·选择使用代码仓库中的 Jenkinsfile 后,该文件将存储至代码仓库中。修改 Jenkinsfile 意味着需在代码仓库中提交修改记录,若修改持续集成的触发条件,还可以自动触发集成任务。
·使用静态配置的 Jenkinsfile 后,该文件将不会存储在代码仓库中,修改 Jenkinsfile 不会更新代码仓库内容,执行构建时将统一使用静态配置,保障构建流程的一致性。
三、如何查看工作空间目录?
在持续集成的部署流程中添加执行 Shell 脚本步骤,并在其中添加 pwd 命令。持续集成运行后将输出工作空间目录。
四、如何自定义环境变量?
详细说明请参见自定义变量。
五、远程 SSH 执行命令时环境变量不生效怎么办?
由于在使用构建机连接远程 SSH 时使用了非交互非登录式连接,因此无法引用远程机器的 /etc/profile、~/.bashrc 等文件配置中的环境变量。你可以参见以下示例,使用 export 命令再设置变量且用 && 符号连续输入命令。
export PATH=/opt/jdk1.8.0_281/bin:$PATH && java -version