linux下使用git和gradle编译项目,编写简单的自动发布脚本

[TOCM]

安装git和部署公钥

  1. 安装 sudo yum install git
  2. Linux创建SSH密钥
    ssh-keygen -t rsa -C “xxxxx@xxxxx.com” #使用邮箱创建
  3. 查看公钥cat ~/.ssh/id_rsa.pub
  4. 执行以下命令,会把公钥添加到git@osc上
    ssh -T git@git.oschina.net
    但是有可能会出现 Permission denied (publickey). 情况(暂时不知道是为什么),就只能手动把公钥添加到git@osc上面了

同步github到本地

克隆项目到本地
git clone git://github.com:xxxx/test.git ##以gitreadonly方式克隆到本地,只可以读
git clone git@github.com:xxx/test.git  ##以SSH方式克隆到本地,可以读写,会按照项目名默认初始化仓库
git clone https://github.com/xxx/test.git ##以https方式克隆到本地,可以读写
git fetch git@github.com:xxx/xxx.git  ##获取到本地但不合并
git pull git@github.com:xxx/xxx.git ##获取并合并内容到本地,这里要进入到项目里面去执行

比如我要同步master分支到本地
git pull git@git.oschina.net:youname/xx.git master master

安装gradle

  1. 安装JDK,并配置JAVA_HOME环境变量。因为Gradle是用Groovy编写的,而Groovy基于JAVA。另外,Java版本要不小于1.5.
  2. 下载。地址是:http://www.gradle.org/downloads。在这里下载你要的版本。
  3. 解压。如果你下载的是gradle-xx-all.zip的完整包,它会有以下内容:
    1. 二进制文件
    2. 用户手册(包括PDF和HTML两种版本)
    3. DSL参考指南
    4. API手册(包括Javadoc和Groovydoc)
    5. 样例
    6. 源代码,仅供参考使用。

4,配置环境变量。配置GRADLE_HOME到你的gradle根目录当中,然后把%GRADLE_HOME%/bin(linux或mac的是$GRADLE_HOME/bin)加到PATH的环境变量。

 vim /etc/profile
    #在文件最后添加
    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
    export GRADLE_HOME=/home/hadoop/app/gradle
    export PATH=$PATH:$JAVA_HOME/bin:$GRADLE_HOME/bin
    -------------------
    #刷新配置
    source /etc/profile

配置完成之后,运行gradle -v,检查一下是否安装无误。如果安装正确,它会打印出Gradle的版本信息,包括它的构建信息,Groovy, Ant, Ivy, 当前JVM和当前系统的版本信息。

使用gradle编译项目

# 先构建整个项目,需要下载lib依赖等
gradle build -x test
# 在打war包,编译好的项目默认在 web模块下的build/libs 下面
gradle war -x test

有能力的还能编写gradle脚本自动打包然后复制删除文件

编写linux脚本 自动打包发布

echo -e "mrcode自动化部署脚本"

PROJECT_NAME="you-0.1-SNAPSHOT" #名称 默认用该名称作为发布项目的上级目录
DIR_RELEASE_WEBAPPS=/xxxxx/release/webapps # 项目发布目录
DIR_RELEASE_BACKUP_PROJECT=/xxxxx/release/backup/$PROJECT_NAME #项目备份
DIR_RELEASE_TEMP_PROJECT=/xxxxx/release/temp/$PROJECT_NAME #发布前对项目做的临时操作目录
DIR_GIT_PROJECT=/xxxxx/git/gitosc/you #项目源码所在目录
FILE_GIT_PROJECT_WAR=/xxxxx/git/gitosc/xxx/you/build/libs/$PROJECT_NAME.war # 编译之后war包所在的路径
DIR_TOMCAT=/xxxxx/apache-tomcat-7.0.65  #tomcat根目录

echo "============ 处理给定工作目录是否存在,不存在则创建"
if [ -d "$DIR_RELEASE_WEBAPPS" ];
        then
                echo $DIR_RELEASE_WEBAPPS "目录存已在"
        else
                mkdir -p $DIR_RELEASE_WEBAPPS
fi
if [ -d "$DIR_RELEASE_BACKUP_PROJECT" ];
        then
                echo $DIR_RELEASE_BACKUP_PROJECT "目录存已在"
        else
                mkdir -p $DIR_RELEASE_BACKUP_PROJECT
fi
if [ -d "$DIR_RELEASE_TEMP_PROJECT" ];
        then
                echo $DIR_RELEASE_TEMP_PROJECT "目录存已在"
        else
                mkdir -p $DIR_RELEASE_TEMP_PROJECT
fi

echo "============ pull 同步更新项目"
cd $DIR_GIT_PROJECT
git pull git@git.oschina.net:youname/you.git master master
gradle war -x test

echo "============ 准备项目文件"  
cp -u $FILE_GIT_PROJECT_WAR $DIR_RELEASE_TEMP_PROJECT
cd $DIR_RELEASE_TEMP_PROJECT
jar -xvf $PROJECT_NAME.war # 1.war包解压
rm -rf $PROJECT_NAME.war



while [ 0 ]; do
    echo -e "============ 是否需要停止tomcat服务?并将执行以下几个步骤:"
    echo -e "   1.停止本机所有的tomcat服务 "
    echo -e "   2.将旧的项目目录备份 "
    echo -e "   3.copy项目文件到发布目录"
    echo -e "   4.启动tomcat服务"
    read -p "请决策是否自动化以上步骤(y/n):" isAutoSv
    if [ "$isAutoSv" = "n" ]; then exit 0
    elif [ "$isAutoSv" = "y" ]; then break
    fi
done
echo -e "====== 1. 停止tomcat服务..."
$DIR_TOMCAT/bin/shutdown.sh
ps -ef | grep root | grep tomcat | grep -v grep | cut -c 9-15 | xargs kill -s 9
echo -e "====== 2. 备份旧的版本目录..."
mv $DIR_RELEASE_WEBAPPS/$PROJECT_NAME  $DIR_RELEASE_BACKUP_PROJECT/$(date +%Y%m%d%H%M)
echo -e "====== 3. copy项目文件到发布目录..."
mv $DIR_RELEASE_TEMP_PROJECT $DIR_RELEASE_WEBAPPS
echo -e "====== 4. 启动tomcat服务"
$DIR_TOMCAT/bin/startup.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值