Jenkins使用Git自動化部署Maven項目

序言

          一個業務複雜,結構複雜的項目需要自動化部署.以此爲基礎梳理下使用jenkins自動化部署的過程.

Shell

         shell腳本就是一些命令的集合。舉個例子,我想實現這樣的操作:

  1. 進入到/tmp/目錄;
  2. 列出當前目錄中所有的文件名;
  3. 把所有當前的文件拷貝到/root/目錄下;
  4. 刪除當前目錄下所有的文件。

       簡單的4步在shell窗口中需要你敲4次命令,按4次回車。這樣是不是很麻煩?當然這4步操作非常簡單,如果是更加複雜的命令設置需要幾十次操作呢?那樣的話一次一次敲鍵盤會很麻煩。所以不妨把所有的操作都記錄到一個文檔中,然後去調用文檔中的命令,這樣一步操作就可以完成。其實這個文檔呢就是shell腳本了,只是這個shell腳本有它特殊的格式。

       有一個問題需要約定一下,凡是自定義的腳本建議放到/usr/local/sbin/目錄下,這樣做的目的是,一來可以更好的管理文檔;二來以後接管你的管理員都知道自定義腳本放在哪裏,方便維護[email protected]

shell腳本的基本結構以及如何執行

        Shell腳本通常都是以.sh 爲後綴名的,這個並不是說不帶.sh這個腳本就不能執行,只是大家的一個習慣而已。所以,以後你發現了.sh爲後綴的文件那麼它一定會是一個shell腳本了。

       test.sh中第一行一定是 “#! /bin/bash” 它代表的意思是,該文件使用的是bash語法。如果不設置該行,那麼你的shell腳本就不能被執行。

       第三行和第四行的’#’表示註釋,在前面講過的。

      Shell腳本的執行很簡單,直接”sh filename “ (因爲是通過vi創建的一個文件,沒有執行權限所以需要藉助sh 命令+ 文件名的方式.如果./filename.sh 的方式調用 則需要增加執行權限命令: chmod +x filename.sh [email protected]) . 

      另外使用sh命令去執行一個shell腳本的時候是可以加-x選項來查看這個腳本執行過程的,這樣有利於我們調試這個腳本哪裏出了問題。

Shell的date使用

       上面的Shell腳本中用到了’date’這個命令,它的作用就是用來打印當前系統的時間。使用方法如下所示.

#%Y表示年,%m表示月,%d表示日期,%H表示小時,%M表示分鐘,%S表示秒

[root@localhost [email protected]]# date "+%Y%m%d %H:%M:%S"
20200617 12:17:33

#這裏的是小y 故此值有年份的後兩位
[root@localhost [email protected]]# date "+%y%m%d %H:%M:%S"
200617 12:19:37


#-d 選項也是經常要用到的,它可以打印n天前或者n天后的日期,當然也可以打印n個月/年前或者後的日期。
#-d 的用法通俗易懂
[root@localhost [email protected]]# date -d "-1 day" "+%y%m%d %H:%M:%S"
200616 12:20:58
[root@localhost [email protected]]# date -d "+1 day" "+%y%m%d %H:%M:%S"
200618 12:21:05
[root@localhost [email protected]]# date -d "+1 month" "+%y%m%d %H:%M:%S"
200717 12:21:12
[root@localhost [email protected]]# date -d "+1 year" "+%y%m%d %H:%M:%S"
210617 12:21:19

#顯示星期幾
[root@localhost [email protected]]# date "+%w"
3


 

Shell變量

    定義變量的格式爲 “變量名=變量的值”。當在腳本中引用變量時需要加上’$’符號;

#! /bin/bash

#this my first shell script
#[email protected]

date
echo "hello world"

# 表達式使用了 反引號注意 就是d=的後面,[email protected]
d=`date +%w`
echo "the script begin at $d"

# 數學計算要用’[ ]’括起來並且外頭要帶一個’$’
echo "hello world"

# 表達式使用了 反引號注意 就是d=的後面,[email protected]
d=`date +%w`
echo "the script begin at $d"

# 數學計算要用’[ ]’括起來並且外頭要帶一個’$’
a=1
b=2
sum=$[$a+$b]
echo "result is $sum"

# 獲取標準輸入獲得變量的值
# read x表示x變量的值需要用戶通過鍵盤輸入得到
echo "please input a number"
read x
echo "please input another number"
read y
sum=$[$x+$y];
echo "result is $sum"


#也有一種簡潔的寫法
#read -p 選項類似echo的作用。執行如下:
#read -p "please input a number:" x


echo $0 $1 $2 

 

        你有沒有用過這樣的命令”/etc/init.d/iptables restart “ 前面的/etc/init.d/iptables 文件其實就是一個shell腳本,爲什麼後面可以跟一個”restart”? 這裏就涉及到了shell腳本的預設變量。實際上,shell腳本在執行的時候後邊是可以跟變量的,而且還可以跟多個。

./test.sh 1 2

其中$1的值就是在執行的時候輸入的1,而$2的值就是執行的時候輸入的2,當然一個shell腳本的預設變量是沒有限制的,這回你明白了吧。另外還有一個$0,不過它代表的是腳本本身的名字。不妨把腳本修改一下。

shell的邏輯判斷

if的使用不帶else

格式爲:

  1. if 判斷語句; then
  2. command
  3. fi
read -p "please input you score: " a

#在if1.sh中出現了 ((a<60))這樣的形式,這是shell腳本中特有的格式,用一個小括號或者不用都會報錯,請記住這個格式,即可
if ((a <60)); then
    echo "you didn't pass the exam."
fi

 

if帶else

格式爲:

  1. if 判斷語句 ; then
  2. command
  3. else
  4. command
  5. fi
read -p "please input you score: " a

#在if1.sh中出現了 ((a<60))這樣的形式,這是shell腳本中特有的格式,用一個小括號或者不用都會報錯,請記住這個格式,即可
if ((a <60)); then
    echo "you didn't pass the exam."
else
    echo "you pass the exam"
fi

if帶elif(elif 相當於else if)

格式爲

  1. if 判斷語句一 ; then
  2. command
  3. elif 判斷語句二; then
  4. command
  5. else
  6. command
  7. fi
read -p "please input you score: " a

#在if1.sh中出現了 ((a<60))這樣的形式,這是shell腳本中特有的格式,用一個小括號或者不用都會報錯,請記住這個格式,即可
if ((a <60)); then
    echo "you didn't pass the exam."

#這裏的 && 表示“並且”的意思,當然你也可以使用 || 表示“或者”,執行結果:
elif((a.60)) && ((a<85)); then
    echo "you didn't get a high score"
else
    echo "you pass the exam"
fi

其它邏輯運算符

      以上只是簡單的介紹了if語句的結構。在判斷數值大小除了可以用”(( ))”的形式外,還可以使用”[ ]”。但是就不能使用>, < , = 這樣的符號了,要使用 -lt (小於),-gt (大於),-le (小於等於),-ge (大於等於),-eq (等於),-ne (不等於)。

[image]

文件目錄判斷

格式

 

  1.  if [ -e filename ] ; then

可選參數:

  1. -e :判斷文件或目錄是否存在
  2. -d :判斷是不是目錄,並是否存在
  3. -f :判斷是否是普通文件,並存在
  4. -r :判斷文檔是否有讀權限
  5. -w :判斷是否有寫權限
  6. -x :判斷是否可執行

[image]

 

case的使用

格式爲:下面的結構中,不限制value的個數,*則代表除了上面的value外的其他值。

  1. case 變量 in
  2. value1)
  3. command
  4. ;;
  5. value2)
  6. command
  7. ;;
  8. value3)
  9. command
  10. ;;
  11. *)
  12. command
  13. ;;
  14. esac

[image]

 

 

Shell循環

for循環

格式:

  1. for 變量名 in 循環的條件; do
  2. command
  3. done

有如下的2種寫法.大同小異.同時也可以試:,(in 後面其實就可以跟一些linux命令,然後接受該命令返回的內容,並循環展示它[email protected])------------另外注意in後面的是反引號,

  1. for i in `ls`; do echo $i; done 
  2. for i in `cat test.txt`; do echo $i; done

[image][image]

[image]

 

while循環

格式:

  1. while 條件; do
  2. command
  3. done

[image]

去掉條件就是死循環如下所示,可以監聽端口或者輸入

  1. while :; do
  2. command
  3. done

shell函數

      在shell腳本中,函數一定要寫在最前面,不能出現在中間或者最後,因爲函數是要被調用的,如果還沒有出現就被調用,肯定是會出錯的。

函數格式:

  1. function 函數名() {
  2. command
  3. }

[image]

 

Jenkins配置Git

 

待續~~~~~~~~

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章