使用之前的静态html项目来做pipeline。
1、pipeline概念
2、Jenkins file
有两种语法分别为 脚本式和声明式 。 这里使用声明式语法,下面是个demo
pipeline {
agent any
stages {
stage('get code') {
steps {
echo 'get code from scm'
}
}
stage('package') {
steps {
echo 'package code'
}
}
stage('deploy') {
steps {
echo 'deploy package to node1'
}
}
}
}
General —> 丢弃旧的构建 依旧设置5天
pipeline处粘贴上面的demo代码。立即构建
有报错: (怎么感觉当时那个默认配置漏了很多东西没安装)
Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: any for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:271)
at org.kohsuke.groovy.sandbox.impl.Checker$7.call(Checker.java:353)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:357)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
根据 No such property: any for class: groovy.lang.Binding提示,没有安装对应插件groovy postbuild
参考:https://blog.csdn.net/dieyong/article/details/105075172
但好像又不是插件那边的问题。
“No such property: manager for class: groovy.lang.Binding” :是要安装插件
No such property: demotest for class: groovy.lang.Binding : 是由于demotest 这值, 没加上单/双引号
No such property:: any for class: groovy.lang.Binding: 难道是我any没写对?
=== 分割线========
此时使用pipeline script from SCM ,配置如下:
此时要去到gitlab的monitor项目下编写Jenkinsfile ,内容如下:
pipeline {
agent any
stages {
stage('get code') {
steps {
echo 'get code from scm'
}
}
stage('package') {
steps {
sh 'sudo tar zcf /opt/web-${BUILD_ID}.tar.gz ./* --exclude=.git --exclude=./Jenkinsfile'
}
}
stage('deploy') {
steps {
sh 'echo `whoami`'
sh 'sudo ssh 192.168.26.136 "cd /srv/nginx && mkdir web-${BUILD_ID}"'
sh 'sudo scp /opt/web-${BUILD_ID}.tar.gz 192.168.26.136:/srv/nginx/web-${BUILD_ID}'
sh 'sudo ssh 192.168.26.136 "cd /srv/nginx/web-${BUILD_ID} && tar xf web-${BUILD_ID}.tar.gz && rm -rf web-{BUILD_ID}.tar.gz"'
sh 'sudo ssh 192.168.26.136 "cd /srv/nginx/ && rm -rf html && ln -s web-${BUILD_ID} /srv/nginx/html"'
}
}
}
}
经过报错+调试,终于跑通,而且也证实,他是以Jenkins身份来运行的任务项目的。
136的nginx目录为:
END