我有几个jenkins管道,在我的情况下,在构建结束时调用“docker-compose up”来运行容器/应用程序。现在,我不需要容器/应用程序一直在运行,我希望从jenkins管道页面有一个方法来关闭(docker-compose stop)应用程序以释放其他构建的资源。你知道有什么好办法吗?
答案 0 :(得分:0)
您可以在Jenkins作业中声明值为choice parameter (ex: stop_containers)
和YES
的{{1}},负责停止容器。
然后在NO
部分选择Build
并添加以下脚本:
Execute shell
现在,每当你开始工作时,它会询问你是否要停止容器。如果要停止容器,请选择所需选项#!/bin/bash
if [ "$stop_containers" = "YES" ]
then
//Command for stopping containers....
else
echo "Do Nothing."
fi
。
如果是YES
,那么您可以定义一个阶段来执行停止容器操作。
Pipeline Job
答案 1 :(得分: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()
}
}
}
}
答案 2 :(得分:0)
一种简单的方法,你可以在jenkins管道中使用sh命令。
node {
stage('stop') {
sh "ssh root@host.com"
sh "cd /diretorio_do_docker-compose/"
sh "docker-compose stop"
}
}