代码服务流水线部署平台

10 篇文章 0 订阅

代码服务流水线部署平台

jenkins的部署请参考以前的文章
Linux下用tomcat部署jenkins
相关机器之间的免密,请参考以前的文章
Linux下实现免密登录
编写shell自动化部署-代码服务流水线脚本,脚本内容如下
code_pipeline.sh

#!/bin/sh

#init param
git_server=《git服务器ip地址》
code_path=/data/java/code
tomcat_path=/opt/tomcat/tomcat
project_name=$1
branch_name=$2
env=$3

function git_pull_code(){
	echo -e "[34m ==开始拉取$project_name项目,$branch_name分支代码== [0m"
	rm -rf $code_path && mkdir -p $code_path && cd $code_path	
	
	git init
	git remote add origin git@$git_server:/home/git/repos/$project_name.git
	
	git pull origin $branch_name >/dev/null 2>&1
	if [  $? -eq 1 ];then
                echo -e "[31m ==拉取失败,需查项目$project_name,分支$branch_name是否存在== [0m"
                exit 0
        fi	

	git log --pretty=format:"%h - %an, %ai : %s" -5
}

function maven_pack_code(){
	echo -e "[34m ==开始对$branch_name代码打包== [0m"
	cd $code_path/$project_name && mvn clean install -Dmaven.test.skip=true
	if [  $? -eq 1 ];then
                echo -e "[31m ==打包失败,需查项目$project_name,分支$branch_name代码== [0m"
                exit 0
        fi
}

function remote_deploy_code(){
	envip=`find /root -name env_info.json | xargs cat | jq -r '.'$project_name'.'$env''`
        arrayIp=`echo $envip | tr ',' ' '`

        for ip in ${arrayIp[@]}
        do
	{
	     echo -e "[34m ==开始对$env环境$ip机器部署== [0m"

	     ssh root@$ip "source /etc/profile && rm -rf $tomcat_path/webapps/$project_name* && sh $tomcat_path/bin/shutdown.sh >/dev/null 2>&1"
	     if [  $? -eq 1 ];then
                echo -e "[31m ==部署失败,jenkins连$ip失败或关闭tomcat服务失败== [0m"
                exit 0
             fi	     

	     scp $code_path/$project_name/target/$project_name.war root@$ip:$tomcat_path/webapps/
	     if [  $? -eq 1 ];then
                echo -e "[31m ==部署失败,jenkins连$ip失败或推送$project_name.war失败== [0m"
                exit 0
             fi	     
	     
	     ssh root@$ip "source /etc/profile && sh $tomcat_path/bin/startup.sh"
	     if [  $? -eq 1 ];then
                echo -e "[31m ==$project_name项目在$ip机器上部署失败== [0m"
                exit 0
             fi
	     echo -e "[34m ==$project_name项目在$ip机器上部署成功== [0m"
	}&
	done
	wait
}

git_pull_code
maven_pack_code
remote_deploy_code

env_info.json
根据自己需求配置ip地址,集群环境用逗号隔开

{	
   "spring":{
		"test":"192.168.188.134,192.168.188.135",
        "dev":"",
        "pre":"",
        "pro":""
    }
}

注:执行此脚本需要jq支持
Linux下安装jq
将脚本和JSON文件放在指定目录/root/tools/shell/pipeline下
jenkins新建任务步骤如下
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

time sh /root/tools/shell/pipeline/code_pipeline.sh $project_name $branch_name $env

保存后就算完成jenkins的配置了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值