Jenkins流水线配置
pipeline {environment {check = sh(script: "echo `date '+%Y%m%d%H%M%S'`", returnStdout: true).trim()buildNumber = "${env.BUILD_NUMBER}"job_name = "${env.JOB_NAME}"}agent {label "saturn5_node"}stages {stage('git clone') {steps {script {echo "start git clone"git branch: 'feat-soft-testing-dev-v2.5-daily_rebuild', credentialsId: '8c0a2604-409f-4a86-bd8f-231e6d385ca4', url: 'git@jh-gitlab.hobot.cc:proj/saturnv/qa.git'echo "git clone done"}}}stage('debian代码目录预处理(可失败)') {steps {script {catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {echo "copy new_test_tools directory to target machine"// 创建目标目录sh """ansible -i ${ansible_file_name} ${ansible_host_key} -m file -a 'path=/userdata/software_group state=directory' > copy_code.log 2>&1"""// 修改权限sh """ansible -i ${ansible_file_name} ${ansible_host_key} -m file -a 'path=/userdata/software_group state=directory' > copy_code.log 2>&1"""}}}}stage('Copy Code To Testline') {steps {script {catchError(buildResult: 'FAILURE', stageResult: 'FAILURE'){echo "copy new_test_tools directory to target mechine"sh """ansible -i ${ansible_file_name} ${ansible_host_key} -m synchronize -a 'src=${env.WORKSPACE}/software_group/new_test_tools dest=/userdata/software_group rsync_opts="--exclude=logs"' >> copy_code.log 2>&1"""}}}}stage('解除依赖包限制文件(可失败)') {steps {script {catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {echo "update limits of authority"// 备份文件sh """ansible -i ${ansible_file_name} ${ansible_host_key} -f 20 -m shell -a 'echo "Saturnv123!" | sudo -S mv -f /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.bak'"""}}}}stage('pip install') {steps {script {catchError(buildResult: 'FAILURE', stageResult: 'FAILURE'){echo "install"sh """ansible -i ${ansible_file_name} ${ansible_host_key} -f 20 -m command -a 'chdir=/userdata/software_group/new_test_tools/ python3 -m pip install -r requirements.txt -i https://pypi.hobot.cc/simple --ignore-installed'"""}}}}stage('up_down_power_check') {steps {script {catchError(buildResult: 'FAILURE', stageResult: 'FAILURE'){echo "start up_down_power_check"sh "ansible -i ${ansible_file_name} ${ansible_host_key} -f 20 -m command -a 'chdir=/userdata/software_group/new_test_tools python3 swtool.py task start -c up_down_power_check -i \"{\\\"start_task_time\\\":\\\"${check}\\\",\\\"count\\\":\\\"${count}\\\",\\\"sleep_time\\\":\\\"${sleep_time}\\\",\\\"pack_path\\\":\\\"${pack_path}\\\",\\\"linux_log_path\\\":\\\"${linux_log_path}\\\",\\\"version_line\\\":\\\"${version_line}\\\",\\\"mode\\\":\\\"${mode}\\\",\\\"no_migration\\\":\\\"${no_migration}\\\",\\\"project\\\":\\\"${project}\\\"}\"'"}}}}stage('create report') {steps {script {catchError(buildResult: 'FAILURE', stageResult: 'FAILURE'){echo "start create report"sh """cd ${env.WORKSPACE}/software_group/new_test_toolspython3 swtool.py task start -c up_down_power_report -i '{"start_task_time":"${check}"}'"""}}}}stage('流水线结束通知') {steps {echo "start feishu_notify"sh """cd ${env.WORKSPACE}/software_group/new_test_toolspython3 swtool.py task start -c feishu_notifier -i '{"job_id":"${buildNumber}","jenkins_name":"${job_name}","jenkins_username":"${currentBuild.getBuildCauses()[0].userId}"}'"""}}} }