1. 程式人生 > 其它 >DevOps:jenkens-cli增、刪、查等操作

DevOps:jenkens-cli增、刪、查等操作

技術標籤:devops其它devops

devops整合的時候,我一次性要做300+應用的程式碼掃描,除非應用本身程式碼有問題導致build失敗,否則其它關於掃描的問題全是我一個人搞定,不能打擾到開發,有時候我為了少給他們找事,有些構建失敗的甚至幫他們改一下程式碼,好像不知不覺中,我基本上一般性的程式碼問題都能搞定。時間長了,現在他們在搭建環境的時候,構建失敗,明顯的程式碼錯誤,有些開發也會找我來查原因。我只能說,現在大部分一般問題網上都有答案,搜一下,做相應改正,都能OK。
今天,我只帖程式碼了,寫了一個普通的shell指令碼,用來批量操作jenkins.實際因為我們的業務規範做的不夠,很多批量操作,並不是不會寫程式碼,而是程式碼沒辦法產生應有的功效。

注意:執行指令碼機器上,得把公鑰新增進jenkins-admin-configure的許可權中,操作參考

#!/bin/bash


###
#create by liujuan
#create date 2021-01-08
#desc:查詢jenkins上已存在的所有sonar掃描的專案
###
JENKINS_IP=192.168.x.x
JENKINS_PORT=8009
BASE_PATH=$(cd `dirname $0`;pwd)
sonar_tag="sonar_"
DATETime=$(date "+%Y-%m-%d %H:%M:%S")
#檢視sonar流水線中是否包含某個專案
if [ ! -d $BASE_PATH/logs ];then mkdir $BASE_PATH/logs fi error_tag="ERROR" ###獲取所有sonar程式碼檢查流水線 find_sonar_tags(){ if [ -f "$BASE_PATH/sonar_jobs" ];then `>sonar_jobs` fi jobs_name_list=` ssh -l admin -p $JENKINS_PORT $JENKINS_IP list-jobs ` for job in $jobs_name_list do
echo $job result=$(echo $job | grep "${sonar_tag}") if [[ "$result" != "" ]] then echo $job >> sonar_jobs else echo "name is not sonar" fi done break } ##批量增,重複也沒關係,名稱重複的會自動失敗 add_copy_job(){ add_job_list=$BASE_PATH/add_jobs for add_job in `cat $add_job_list` do if test -z "$(ssh -l admin -p $JENKINS_PORT $JENKINS_IP get-job $sonar_tag$add_job |grep -r "xml")" then echo "$sonar_$add_job is exist" else `ssh -l admin -p $JENKINS_PORT $JENKINS_IP copy-job sonar_pc_best $sonar_tag$add_job` echo "$sonar_tag$add_job added" echo "start create sonar_$add_job ,create time is $DATETime" >> $BASE_PATH/logs/add_job.log fi done break } ##單刪和批量刪 delete_jobs(){ #del-job #del_job_exec=` ssh -l admin -p $JENKINS_PORT $JENKINS_IP delete-job job-name` echo "請選擇要刪除單個job還是多個job:" echo "1.單個job輸入1," echo "2.多個job輸入2," echo "多個job讀取本地$BASE_PATH/del_jobs檔案," echo "請選擇你的操作:" read CASE_DELETE_ID_NUM case $CASE_DELETE_ID_NUM in 1) echo "你想要刪除單個job,請輸入你的job名稱(全名):" read JOB_NAME `ssh -l admin -p $JENKINS_PORT $JENKINS_IP delete-job $JOB_NAME` echo "delete $JOB_NAME sucess" echo "$JOB_NAME is deleted,delete time is $DATETime" >>$BASE_PATH/logs/del_job.log ;; 2) for job in `cat $BASE_PATH/del_jobs` do echo "start delete $job" `ssh -l admin -p $JENKINS_PORT $JENKINS_IP delete-job $job` echo "$job is deleted,delete time is $DATETime" >>$BASE_PATH/logs/del_job.log echo "delete $job sucess" done ;; *) echo "您選擇的不存在,請重新執行程式,$0" esac } #查詢流水線是否存在 check_job_isexist(){ echo "請輸入你要查詢的job-name:" read JOB_NAME #檢視sonar流水線中是否包含某個專案 if test ! -z "$(ssh -l admin -p $JENKINS_PORT $JENKINS_IP get-job $JOB_NAME |grep -r "xml")" then echo "$JOB_NAME is exist" else echo "$JOB_NAME is no exist" fi break } execute(){ echo "1.獲取所有sonar-job," echo "2.查詢應用是否已新增掃描," echo "3.新增掃描job," echo "4.刪除掃描job," echo "請選擇要進行的操作:" read CASE_ID_NUM case $CASE_ID_NUM in 1) find_sonar_tags #exec ./jenkins_batch_cli.sh echo "所有sonar-job存放目錄:$BASE_PATH/sonar_exist_jobs,請檢視!" break ;; 2) #exec ./jenkins_batch_isexist_job.sh check_job_isexist break ;; 3) echo "新增job時,請把應用名存放至:$BASE_PATH/add-jobs " #$exec ./jenkins_batch_copy_job.sh add_copy_job ;; 4) #exec ./jenkins_batch_delete_job.sh delete_jobs break ;; *) echo "您選擇的不存在,請重新執行程式,$0" break esac } while_execute(){ execute echo "繼續請按a,想要退出程式請c" read INPUT_KEY if [ $INPUT_KEY == "a" ];then execute else exit 1 fi } while_execute

結果:
在這裡插入圖片描述

在這裡插入圖片描述