我有几个jenkins管道,在我的情况下,在构建结束时调用“docker-compose up”来运行容器/应用程序。现在,我不需要容器/应用程序一直处于启动状态,我想从jenkins管道页面到关闭(docker-compose stop)应用程序的一种方式来为其他构建释放资源。你知道有什么好方法可以做到吗?Jenkins管道自定义脚本(关闭应用程序)
0
A
回答
0
这是我做它看着 Converting Conditional Build Steps to Jenkins Pipeline的方式。
pipeline {
agent any
parameters {
choice(
choices: 'full_deploy_and_run_docker_container\nrun_docker_containers\nstop_docker_containers',
description: '',
name: 'REQUESTED_ACTION')
}
tools {
maven 'Maven x.x.x'
jdk 'jdkYuWZ'
}
environment {
SVN_URL = 'http://svn.myexample.com/svn/myproject/trunk/'
DOCKER_PROJECT_DIR = '/home/myuser/docker/containers/myproject/trunk'
}
stages {
stage ('Initialize') {
steps {
sh '''
echo "Initialize..."
'''
}
}
stage ('Checkout') {
when {
expression { params.REQUESTED_ACTION == 'full_deploy_and_run_docker_container' }
}
steps {
checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: ' something here ', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: "$SVN_URL"]], workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
stage ('Build') {
when {
expression { params.REQUESTED_ACTION == 'full_deploy_and_run_docker_container' }
}
steps {
sh 'mvn clean package'
}
}
stage ('Test') {
when {
expression { params.REQUESTED_ACTION == 'full_deploy_and_run_docker_container' }
}
steps {
sh 'echo "Other tests..."'
}
}
stage ('Deploy') {
when {
expression { params.REQUESTED_ACTION == 'full_deploy_and_run_docker_container' }
}
steps {
sh 'echo "The deploy here"'
}
}
stage ('Docker compose run') {
when {
expression { params.REQUESTED_ACTION == 'full_deploy_and_run_docker_container' ||
params.REQUESTED_ACTION == 'run_docker_containers'
}
}
steps {
sh '''
cd $DOCKER_PROJECT_DIR
docker-compose up -d
'''
}
}
stage ('Docker compose stop') {
when {
expression { params.REQUESTED_ACTION == 'stop_docker_containers' }
}
steps {
sh '''
cd $DOCKER_PROJECT_DIR
docker-compose stop
'''
}
}
stage ('Cleanup') {
steps {
cleanWs()
}
}
}
}
0
您可以在Jenkins作业中声明choice parameter (ex: stop_containers)
,值为YES
和NO
,该作业负责停止容器。
然后在Build
部分选择Execute shell
,并添加下面的脚本给它:
#!/bin/bash
if [ "$stop_containers" = "YES" ]
then
//Command for stopping containers....
else
echo "Do Nothing."
fi
现在,只要您将运行你的工作,它会问,如果你想停止容器或没有。如果您想停止容器,请选择所需的选项YES
。
如果是Pipeline Job
那么您可以定义一个阶段来执行停止容器操作。
stage('stop containers') {
properties(
[parameters([choice(choices: ["YES", "NO"].join("\n"),
description: 'Some choice parameter',
name: 'STOP_CONTAINERS')])])
agent label:'some-node'
when {
expression {
return env.STOP_CONTAINERS = 'YES';
}
}
steps {
//command to stop containers
}
}
0
一种简单的方法,你可以在詹金斯管道使用sh命令这一点。
node {
stage('stop') {
sh "ssh [email protected]"
sh "cd /diretorio_do_docker-compose/"
sh "docker-compose stop"
}
}
相关问题
- 1. Jenkins脚本管道的自定义触发器
- 2. 自定义Jenkins管道舞台视图
- 3. Artifactory - 使用Jenkins管道脚本上传
- 4. 如何在jenkins管道脚本中指定jenkins master git地址
- 5. 如何使用Linux管道为用户自定义Shell脚本
- 6. Jenkins 2管道工作区xxx @脚本
- 7. 在Jenkins中调试Groovy脚本管道
- 8. Jenkins管道脚本 - 更改git分支
- 9. Visual Basic窗体应用程序自定义关闭按钮
- 10. Android自定义列表,意外关闭应用程序
- 11. OnBackPressed MvvmCross的自定义处理 - 请勿关闭应用程序
- 12. 应用程序脚本:自定义数字格式与文本
- 13. 自定义管道
- 14. Angular2在自定义管道中使用基本管道
- 15. 将退出程序自动关闭管道?
- 16. 应用程序没有关闭游标,尽管关闭
- 17. 当WPF应用程序关闭时关闭非托管资源
- 18. 创建自定义触发器谷歌应用程序脚本
- 19. Rails 4应用程序中的自定义脚本
- 20. 运行Apple脚本自定义应用程序时出错-10661
- 21. 按需自动关闭应用程序
- 22. Android应用程序自动关闭
- 23. Android应用程序自动关闭
- 24. ps aux自动关闭应用程序
- 25. Android com.android.camera.action.CROP应用程序自动关闭
- 26. 自动关闭WPF应用程序
- 27. Python脚本自动关闭
- 28. Spacy.io多线程与自定义管道
- 29. Jenkins 2管道+ maven版本
- 30. Jenkins管道中的自定义更改日志
您能详细说明吗?就像你想停止容器一样?从流水线上你是怎么做'码头'组成的? – ANIL
我想在需要时停止容器,最好的想法是菜单条目“关闭”或类似“自定义脚本 - >关闭”。关于“docker-compose up”在构建的部署阶段被调用。 – mauros
那么,你有声明性的管道工作吗? – ANIL