【发布时间】:2021-06-04 19:07:21
【问题描述】:
我必须创建一个 jenkins 作业来自动执行某些任务,这些任务将执行某些操作,例如更新公共站点、将公共版本更改为最新的公共版本、更新公共站点上的软件和重新启动服务器,这些包括某些操作,例如将文件复制到一个 tmp 文件夹,登录到本地服务器,转到该文件夹并解压缩文件等。 我创建了 jenkinsfile 如下:
pipeline {
options {
skipDefaultCheckout()
timestamps()
}
parameters {
string(name: 'filename', defaultValue: 'abc', description: 'Enter the file name that needs to be copied')
string(database: 'database', defaultValue: 'abc', description: 'Enter the database that needs to be created')
choice(name: 'Run', choices: '', description: 'Data migration')
}
agent {
node { label 'aws && build && linux && ubuntu' }
}
triggers {
pollSCM('H/5 * * * *')
}
stages {
stage('Clean & Clone') {
steps {
cleanWs()
checkout scm
}
}
stage('Updating the public site'){
steps{
sh "scp ./${filename}.zip <user>@<server name>:/tmp"
sh "ssh <user>@<server name>"
sh "cp ./tmp/${filename}.zip ./projects/xyz/xyz-site/"
sh "cd ./projects/xyz/xyz-site/ "
sh "unzip ./${filename}.zip"
sh "cp -R ./${filename}/* ./"
}
stage('Changing public version to latest public release') {
steps {
sh "scp ./${filename}.sql.gz <user>@<server name>:/tmp"
sh "ssh <user>@<server name>"
sh "mysql -u root -p<PASSWORD>"
sh "show databases;"
sh "create database ${params.database};"
sh "GRANT ALL PRIVILEGES ON <newdb>.* TO 'ixxyz'@'localhost' WITH GRANT OPTION;"
sh "exit;"
sh "zcat tmp/${filename}.sql.gz | mysql -u root -p<PASSWORD> <newdb>"
sh "db.default.url="jdbc:mysql://localhost:3306/<newdb>""
sh "ps aux|grep monitor.sh|awk '{print "kill "$2}' |bash"
}
}
stage('Updating Software on public site') {
steps {
sh "scp <user>@<server>:/tmp/abc<version>_empty_h2.zip"
sh "ssh <user>@<server name>"
sh "su <user>"
sh "mv tmp/<version>_empty_h2.zip ./xyz/projects/xyz"
sh "cd xyz/projects/xyz"
sh "cp latest/conf/local.conf <version>_empty_h2/conf/"
}
}
stage('Restarting Server') {
steps {
sh "rm latest/RUNNING_PID"
sh "bash reload.sh"
sh "nohup bash monitor.sh &"
}
}
}
}
有没有办法可以动态获取根文件夹中的 zip 文件名?我使用了${filename}.zip ,但它似乎不起作用。
另外,有没有更好的方法来使用 jenkins 执行这些操作?非常感谢任何帮助。
【问题讨论】:
-
尝试使用 ${filename}.zip 的绝对路径
标签: bash shell jenkins jenkins-pipeline jenkins-groovy