文件目录相关操作
dir('/tmp'){
deleteDir()
}
script{
writeFile(file:"base64File", text:"amVua2lucyBib29r", encoding:"Base64")
def content = readFile(file:"base64File", encoding: "UTF-8")
echo "${content}"
}
修改Jenkinsfile
执行结果
amVua2lucyBib29r
是jenkins book
的Base64编码
转码
将文件保存起来,以便同一次构建的其他步骤或阶段使用。 如果整个流水线在同一台机器上执行,那stash是多余的,一般用于跨Jenkins node使用。 stash步骤会将文件存储在tar文件中,对于大文件的stash操作会消耗Jenkins master的计算资源。
/**/*.jsp
和/project/dir/*.jsp
那么会根据模式/project/dir/*.jsp
来匹配pipeline {
agent none
stages {
stage('stash') {
agent {label "master"}
steps {
writeFile file: "a.txt",text: "
stash(name: "abc", includes: "a.txt")
}
}
stage('unstash') {
agent {label "node2"}
steps {
script {
unstash("abc")
def content = readFile("a.txt")
echo "${content}"
}
}
}
}
}
error(“there is a error”)
全局工具配置
片段生成器
timeout(50) {
waitUntil{
script{
def r = sh script: 'curl http://exmple',return Status: true
return (r == 0)
}
}
}
steps {
retry(20){
script{
sh script: 'curl http://exmple',return Status: true
}
}
}
⚠️如果某次retry抛出异常,只中止当次,不会中止整个retry的执行
在执行retry的过程中,用户是无法中止流水线的timeout
类似sleep(120) // 休眠120秒
,sleep(time:'2',unit:"MINUTES") // 休眠2分钟
推荐VS Code扩展:Jenkins Pipeline Linter Connector
Jenkins Pipeline Linter Connector
配置插件
配置CSRF
运行校验
故意写错了进行校验:
错误进行校验
Errors encountered validating Jenkinsfile:
WorkflowScript: 14: unexpected token: } @ line 14, column 1.
}
^