def task_dir = '/opt/jenkins/workspace/${JOB_NAME}/tasks'
def code_dir = '/opt/jenkins/workspace/${JOB_NAME}'
def env_name = 'DaYu_1+1+3'
pipeline{
agent{
node{
label 'ansible-agent-test'
}
}
parameters {
choice(
description: 'canBeModifyByXingyun,Release version',
name: 'release_version',
choices:['iMasterDaYuV200R023C10','iMasterDaYuV200R023C30','iMasterDaYuV200R024C00','iMasterDaYuV200R024C10','iMasterDaYuV200R025C00','iMasterDaYuV200R026C00']
)
string(
description: 'canBeModifyByXingyun,CloudSOP version',
name: 'version',
defaultValue:'V100R023C00SPC410B030',
)
string(
description: 'canBeModifyByXingyun,uniep_version',
name: 'uniep_version',
defaultValue:'V100R023C00',
)
string(
description: 'canBeModifyByXingyun,DaYu version',
name: 'DaYu_version',
defaultValue:'V200R023C30B018',
)
choice(
description: 'canBeModifyByXingyun,下载大禹包时是否指定下载其Suse12版本,如果是,选择true;默认false,下载euler版本',
name: 'is_Suse_pkg',
choices:['false','true']
)
string(
description: 'canBeModifyByXingyun,FI 版本号,R23C10和C30所有版本固定填 V100R021C10B022, R24的版本填大禹的版本号',
name: 'fi_version',
defaultValue: 'V100R021C10B022',
)
choice(
description: 'canBeModifyByXingyun,大禹取包地址',
name: 'DaYu_cmc_path',
choices: ['CloudSOP','DaYu']
)
string(
description: 'canBeModifyByXingyun,DaYu测试包版本,默认:V200R024C10SPC100B004',
name: 'Test_Package_version',
defaultValue:'V200R024C10SPC100B004',
)
string(
description: 'canBeModifyByXingyun,产品名称',
name: 'Product_Scene',
defaultValue: 'NCE',
)
choice(
description: 'canBeModifyByXingyun,是否安装大禹测试服务,true:安装,false:不安装',
name: 'DaYu_Test',
choices:['false','true']
)
choice(
description: 'canBeModifyByXingyun,是否是否绿区机器',
name: 'is_green',
choices:['false','true']
)
choice(
description: 'canBeModifyByXingyun,安装模式: install为安装, upgrade为升级, rollback为回滚',
name: 'way',
choices:['install','upgrade2','rollback','dayuDRPreOperation']
)
choice(
description: 'canBeModifyByXingyun,升级模式: 一段式升级, 二段式升级 默认为二段式',
name: 'upgradeMethod',
choices:['Two-stage-upgrade','One-stage-upgrade']
)
choice(
description: 'canBeModifyByXingyun,秘钥开关,KMC | CloudSOP | Cipher',
name: 'cipherMode',
choices:['KMC','CloudSOP','Cipher']
)
choice(
description: 'canBeModifyByXingyun,操作内容:服务启动策略,默认为AUTO',
name: 'startupPolicy',
choices: ['AUTO','MANUAL'],
)
string(
description: 'canBeModifyByXingyun,【必填】管理节点IP',
name: 'Management_ip',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【选填】管理节点IP6地址,如无需要,默认为空即可',
name: 'Managementipv6',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】业务节点IP',
name: 'Business_ip',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】业务节点IP6地址,如无需要,默认为空即可',
name: 'Businessipv6',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】FI01',
name: 'FI01_ip',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】FI01节点IP6地址,如无需要,默认为空即可',
name: 'FI01ipv6',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】FI02',
name: 'FI02_ip',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】FI02节点IP6地址,如无需要,默认为空即可',
name: 'FI02ipv6',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】FI03',
name: 'FI03_ip',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【必填】FI03节点IP6地址,如无需要,默认为空即可',
name: 'FI03ipv6',
defaultValue: '',
)
choice(
description: 'canBeModifyByXingyun,是否快速升级回滚,选择true升级回滚时不带备份恢复、添加节点、上传升级数据',
name: 'isQuickUpgradeRollback',
choices: ['false','true']
)
choice(
description: 'canBeModifyByXingyun,是否跳过下载包阶段,选择true跳过下载(仅下载成功,安装失败时可选)',
name: 'ignore_download',
choices: ['false','true']
)
choice(
description: 'canBeModifyByXingyun,是否预置数据(安装、升级时选true可预置数据,回滚时选true会删除Phoenix表)',
name: 'presetData',
choices: ['false', 'true']
)
string(
description: 'canBeModifyByXingyun,FTP服务器IP. 配置当前环境节点, 则为适配服务部署的节点IP(NMS节点); 配置为三方节点, 需保证备份路径存在',
name: 'ftp_serverip',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,FTP服务器ftpuser明文密码',
name: 'ftp_passwd',
defaultValue: 'Changeme_123',
)
string(
description: 'canBeModifyByXingyun,FTP备份路径, FTP服务器配置当前环境适配服务部署的节点IP(NMS节点), 默认为ftproot/backup; 配置为三方节点, 需保证备份路径存在',
name: 'ftp_backuppath',
defaultValue: 'ftproot/backup',
)
choice(
description: 'canBeModifyByXingyun,Uniep中英文部署选择',
name: 'lang',
choices:['zh_CN','en_US'],
)
choice(
description: 'canBeModifyByXingyun,是否安装sop产品',
name: 'install_sop_product',
choices:['true','false'],
)
choice(
description: 'canBeModifyByXingyun,是否安装大禹',
name: 'install_dayu',
choices:['true','false'],
)
choice(
description: 'canBeModifyByXingyun,大禹部署模板',
name: 'dayu_install_template',
choices:['NCE-Bigdata','NCE-Bigdata-Hbase','NCE-Bigdata-Redis','NCE-Bigdata-Single'],
)
string(
description: 'canBeModifyByXingyun,realm_name',
name: 'realm_name',
defaultValue: 'MYTEST',
)
choice(
description: 'canBeModifyByXingyun,ossadm/ossuser用户是否使用复杂密码',
name: 'isComplexPwd',
choices:['false','true']
)
string(
description: 'canBeModifyByXingyun,输入ossadm/ossuser用户复杂密码',
name: 'complex_pwd',
defaultValue: 'Changeme_123'
)
choice(
description: 'canBeModifyByXingyun,是否开启大数据组件用户管理菜单',
name: 'is_show_usermgmt',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性NCE-Bigdata-Hbase是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_Hbase',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性NCE-Bigdata-Redis是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_Redis',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性flink是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_Flink',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性FTP是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_FTP',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性Ranger是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_Ranger',
choices:['false','true']
)
choice(
description: 'canBeModifyByXingyun,大禹特性ClickHouse是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_ClickHouse',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性Flume是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_Flume',
choices:['false','true']
)
choice(
description: 'canBeModifyByXingyun,大禹特性ES是否安装,true:安装,false:不安装[如不清楚如何选择,按默认即可]',
name: 'NCE_Bigdata_ES',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性StarRocks是否安装,true:安装,false:不安装[仅R25版本生效]',
name: 'NCE_Bigdata_StarRocks',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性Zookeeper是否安装,true:安装,false:不安装[仅R25版本生效]',
name: 'NCE_Bigdata_Zookeeper',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性YARN是否安装,true:安装,false:不安装[仅R25版本生效]',
name: 'NCE_Bigdata_YARN',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性HDFS是否安装,true:安装,false:不安装[仅R25版本生效]',
name: 'NCE_Bigdata_HDFS',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性Hive是否安装,true:安装,false:不安装[仅R25版本生效]',
name: 'NCE_Bigdata_Hive',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性Spark是否安装,true:安装,false:不安装[仅R25版本生效]',
name: 'NCE_Bigdata_Spark',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,大禹特性Kafka是否安装,true:安装,false:不安装[仅R25版本生效]',
name: 'NCE_Bigdata_Kafka',
choices:['true','false']
)
choice(
description: 'canBeModifyByXingyun,可选组件随机安装,选true后上面可选组件全不生效,不能与SparkLocal模式同时安装',
name: 'randomService',
choices: ['false','true']
)
choice(
description: 'canBeModifyByXingyun,是否开启故障注入.默认值为 false',
name: 'fault_inject_dayu',
choices: ['false','true'],
)
choice(
description: 'canBeModifyByXingyun,网管安装路径',
name: 'INSTALL_ROOT',
choices: ['/opt/oss','/opt/cloud']
)
choice(
description: 'canBeModifyByXingyun,定制share路径',
name: 'sharepath',
choices: ['/opt/oss/share','/var/share/oss','/var/share','/export/home/ossshare','/opt/ossshare','/custom/share','/opt/share/oss','/opt/share']
)
choice(
description: 'canBeModifyByXingyun,定制log目录',
name: 'logpath',
choices: ['/opt/oss/log','/var/log/oss','/var/log','/export/home/osslog','/custom/log','/opt/log/oss','/opt/osslog']
)
choice(
description: 'canBeModifyByXingyun,定制tmp目录',
name: 'tmppath',
choices: ['/opt/oss/tmp','/var/tmp','/tmp/oss','/tmp/oss','/custom/tmp','/tmp/opt/oss']
)
choice(
description: 'canBeModifyByXingyun,安装模式: false 普通安装模式[不做容灾的,选false] || true 容灾安装[会进行大禹包定制与容灾前置操作]',
name: 'dayuDR',
choices:['false','true']
)
choice(
description: 'canBeModifyByXingyun,是否定制多个目录及student表,false创建2个目录10个表',
name: 'isCustomDR',
choices:['false','true']
)
string(
description: 'canBeModifyByXingyun,【选填】集群容灾场景,填写对端站点的0号fi节点ip',
name: 'peerSiteFI01',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【选填】集群容灾场景,填写对端站点的1号fi节点ip',
name: 'peerSiteFI02',
defaultValue: '',
)
string(
description: 'canBeModifyByXingyun,【选填】集群容灾场景,填写对端站点的2号fi节点ip',
name: 'peerSiteFI03',
defaultValue: '',
)
}
stages{
stage('generate task info'){
steps{
script{
sh """
mkdir -p ${task_dir}/${BUILD_NUMBER}
touch ${task_dir}/${BUILD_NUMBER}/env.ini
echo "JOB_NAME=${JOB_NAME}">> ${task_dir}/${BUILD_NUMBER}/env.ini
"""
params.each {param ->
if (param.toString().contains('_ip')){
sh """
set +x
echo "${param.key}"
if [ -z "`grep --no-filename ${param.value} /opt/public/*.cfg | awk 'END {print}'`" ]; then
exit 1
else
echo `grep --no-filename ${param.value} /opt/public/*.cfg | awk 'END {print}'` >> ${task_dir}/${BUILD_NUMBER}/hosts.cfg
fi
echo "[${param.key}]" >> ${task_dir}/${BUILD_NUMBER}/hosts >> ${task_dir}/${BUILD_NUMBER}/hosts
echo "${param.value}" >> ${task_dir}/${BUILD_NUMBER}/hosts >> ${task_dir}/${BUILD_NUMBER}/hosts
echo "${param.key}=${param.value}" >> ${task_dir}/${BUILD_NUMBER}/env.ini
"""
}else if (param.toString().contains('Nodes')){
if(!param.value.toString().isEmpty()){
sh """
echo "${param.key}=${param.value}" >> ${task_dir}/${BUILD_NUMBER}/env.ini
"""
String[] array=param.value.toString().split(',');
def nodes = [:]
for(int i= 0;i<array.length;i++){
nodes[i] = array[i]
}
nodes.each {node ->
sh """
echo "${node.key}"
if [ -z "`grep --no-filename ${node.value} /opt/public/*.cfg | awk 'END {print}'`" ]; then
exit 1
else
echo `grep --no-filename ${node.value} /opt/public/*.cfg | awk 'END {print}'` >> ${task_dir}/${BUILD_NUMBER}/hosts.cfg
fi
echo "[${node.key}]" >> ${task_dir}/${BUILD_NUMBER}/hosts >> ${task_dir}/${BUILD_NUMBER}/hosts
echo "${node.value}" >> ${task_dir}/${BUILD_NUMBER}/hosts >> ${task_dir}/${BUILD_NUMBER}/hosts
echo "${node.key}=${node.value}" >> ${task_dir}/${BUILD_NUMBER}/env.ini
"""
}
}
}
else{
sh """
echo "${param.key}=${param.value}" >> ${task_dir}/${BUILD_NUMBER}/env.ini
"""
}
}
}
}
}
// 以下为安装流程
stage('安装初始化节点, 安装欧方'){
when {
anyOf {
environment name: 'way', value: 'install'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/initnodenaie.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('获取安装配置'){
when {
anyOf {
environment name: 'way', value: 'install'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/getconfigs.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('下载安装包'){
when {
anyOf {
environment name: 'way', value: 'install'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/getPackagesnaie.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('exec ansible preparedayu'){
when {
anyOf {
environment name: 'way', value: 'install'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/preparedayu.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('exec ansible installmanager'){
when {
environment name: 'way', value: 'install'
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/installmanager.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('exec ansible addnodes'){
when {
anyOf {
environment name: 'way', value: 'install'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/addnodes.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('exec ansible scanpackages'){
when {
anyOf {
environment name: 'way', value: 'install'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/scanpackages.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('exec ansible installproduct_cloudsop'){
when {
environment name: 'way', value: 'install'
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/installproduct_cloudsop.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('备份前置动作'){
when {
anyOf {
environment name: 'way', value: 'install'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore_pre.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=copy_files"
"""
}
}
stage('安装后预置数据'){
when {
allOf {
environment name: 'way', value: 'install'
environment name: 'presetData', value: 'true'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/presetData.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
// 以上为安装流程
// 以下为升级流程
stage('升级前初始化'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/initnode_upgrade_cmc.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('获取升级配置'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/getconfigs.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('升级前预置数据'){
when {
allOf {
environment name: 'way', value: 'upgrade2'
environment name: 'presetData', value: 'true'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/presetData.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('下载升级包'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/getPackagesnaie.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('扫描升级包'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/scanpackages.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('升级前备份前置动作'){
when {
allOf {
environment name: 'way', value: 'upgrade2'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=pre_backup"
"""
}
}
stage('备份数据库软件'){
when {
allOf {
environment name: 'way', value: 'upgrade2'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=backup_db_software"
"""
}
}
stage('备份管理面'){
when {
allOf {
environment name: 'way', value: 'upgrade2'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=backup_uniep"
"""
}
}
stage('备份产品数据'){
when {
allOf {
environment name: 'way', value: 'upgrade2'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=backup_product"
"""
}
}
stage('管理面任务状态检查'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/operate_omp_schedule_jobs.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=disable"
"""
}
}
stage('升级管理面'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/upgrademanager.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('管理面升级后置检查'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/mgr_check.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('升级后备份管理面'){
when {
allOf {
environment name: 'way', value: 'upgrade2'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=backup_uniep"
"""
}
}
stage('添加升级节点'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/addnodes.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
//将升级运维面拆分为三个阶段
// stage('升级运维面数据库'){
// when {
// anyOf {
// environment name: 'way', value: 'upgrade2'
// }
// }
// steps{
// sh """
// echo hello
// ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/upgradezenith.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
// """
// }
// }
// stage('运维面服务升级第一段'){
// when {
// anyOf {
// environment name: 'way', value: 'upgrade2'
// }
// }
// steps{
// sh """
// echo hello
// ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/upgrade_product_firstphase.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
// """
// }
// }
stage('升级运维面服务'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/upgradeproduct_cloudsop.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('上传产品升级数据'){
when {
allOf {
environment name: 'way', value: 'upgrade2'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/upload_product_backup_packsges.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
// stage('运维面服务升级第二段'){
// when {
// anyOf {
// environment name: 'way', value: 'upgrade2'
// }
// }
// steps{
// sh """
// echo hello
// ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/upgrade_product_secondphase.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
// """
// }
// }
stage('升级后启动产品服务'){
when {
anyOf{
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/operate_app_db.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=start_app"
"""
}
}
stage('启用管理面定时任务'){
when {
anyOf {
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/operate_omp_schedule_jobs.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=enable"
"""
}
}
stage('后置检查'){
when {
anyOf{
environment name: 'way', value: 'upgrade2'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/post_check.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
// 以上为升级流程
// 以下为回滚流程
stage('回退欧方'){
when {
anyOf {
environment name: 'way', value: 'rollback'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/initnode_rollback_cmc.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('获取回滚配置'){
when {
anyOf {
environment name: 'way', value: 'rollback'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/getconfigs_rollback_cmc.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('回滚运维面'){
when {
anyOf {
environment name: 'way', value: 'rollback'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/rollbackproduct_cloudsop.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('恢复数据库应用程序'){
when {
allOf {
environment name: 'way', value: 'rollback'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=restore_db_software"
"""
}
}
stage('回滚管理面'){
when {
anyOf {
environment name: 'way', value: 'rollback'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/rollbackmanager.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir}"
"""
}
}
stage('恢复产品升级数据'){
when {
allOf {
environment name: 'way', value: 'rollback'
environment name: 'isQuickUpgradeRollback', value: 'false'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/backup_restore.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=restore_product"
"""
}
}
stage('恢复后启动产品服务'){
when {
anyOf{
environment name: 'way', value: 'rollback'
}
}
steps{
sh """
echo hello
ansible-playbook ${code_dir}/CloudSOP-common/ansible-files/operate_app_db.yml -i ${task_dir}/${BUILD_NUMBER}/hosts --extra-vars "task_id=${BUILD_NUMBER} env_name=${env_name} task_dir=${task_dir} code_dir=${code_dir} operation=start_app"
"""
}
}
// 以上为回滚流程
}
}