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

 

待续~~~~~~~~

 

 

 

 

 

 

 

 

 

 

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