gitte拉取代码和部署运行
时间: 2025-06-18 08:58:05 浏览: 13
### 如何使用Git拉取代码并完成部署和运行
在实际的开发与运维工作中,通过Shell脚本实现自动化部署是一个常见的需求。以下是一个完整的流程,包括从Git仓库拉取最新代码、构建项目、部署以及运行Jar包。
#### 1. 拉取最新代码
首先需要确保本地已经配置好Git,并且可以通过SSH或HTTPS访问远程仓库。如果尚未配置SSH密钥,可以参考以下步骤[^3]:
- 登录GitHub,进入“Settings”->“SSH and GPG keys”,创建一个新的SSH key。
- 在本地生成SSH密钥对:
```bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"
```
- 将生成的公钥(`~/.ssh/id_rsa.pub`)添加到GitHub账户中。
然后,编写Shell脚本来拉取最新代码:
```bash
#!/bin/sh
echo "正在获取git最新代码,请确保用户名与密码正确"
git pull origin master
if [ $? -ne 0 ]; then
echo "拉取代码失败,请检查网络或权限"
exit 1
fi
echo "代码拉取成功"
```
#### 2. 构建项目
假设这是一个Maven项目,可以使用以下命令进行清理、编译和打包:
```bash
mvn clean && mvn compile && mvn install
```
完整脚本如下:
```bash
echo "代码拉取成功,正在执行打包"
mvn clean && mvn compile && mvn install
if [ $? -ne 0 ]; then
echo "打包失败,请检查项目配置"
exit 1
fi
echo "打包成功"
```
#### 3. 部署Jar包
将生成的Jar包复制到指定目录,并停止旧的进程:
```bash
JAR_NAME="a.jar"
TARGET_DIR="/mydata/app"
echo "jar包复制到$TARGET_DIR"
mv -f /mydata/idg-server/target/$JAR_NAME $TARGET_DIR
# 停止旧的进程
PID=$(ps aux | grep $JAR_NAME | grep -v grep | awk '{print $2}')
if [ ! -z "$PID" ]; then
echo "停止旧的进程:$PID"
kill -9 $PID
fi
```
#### 4. 启动新进程
使用`nohup`命令启动新的Java进程,并将日志输出到文件中:
```bash
echo "运行启动命令"
nohup /usr/lib/jvm/java-11-openjdk-11.0.16.0.8-1.el7_9.x86_64/bin/java -Dfile.encoding=utf-8 -jar $TARGET_DIR/$JAR_NAME --spring.profiles.active=prod > $TARGET_DIR/idg.log &
tail -f $TARGET_DIR/idg.log
```
完整脚本整合如下:
```bash
#!/bin/sh
echo "正在获取git最新代码,请确保用户名与密码正确"
git pull origin master
if [ $? -ne 0 ]; then
echo "拉取代码失败,请检查网络或权限"
exit 1
fi
echo "代码拉取成功,正在执行打包"
mvn clean && mvn compile && mvn install
if [ $? -ne 0 ]; then
echo "打包失败,请检查项目配置"
exit 1
fi
JAR_NAME="a.jar"
TARGET_DIR="/mydata/app"
echo "jar包复制到$TARGET_DIR"
mv -f /mydata/idg-server/target/$JAR_NAME $TARGET_DIR
# 停止旧的进程
PID=$(ps aux | grep $JAR_NAME | grep -v grep | awk '{print $2}')
if [ ! -z "$PID" ]; then
echo "停止旧的进程:$PID"
kill -9 $PID
fi
echo "运行启动命令"
nohup /usr/lib/jvm/java-11-openjdk-11.0.16.0.8-1.el7_9.x86_64/bin/java -Dfile.encoding=utf-8 -jar $TARGET_DIR/$JAR_NAME --spring.profiles.active=prod > $TARGET_DIR/idg.log &
tail -f $TARGET_DIR/idg.log
```
以上脚本涵盖了从Git拉取代码到部署运行的完整流程[^1]。
---
###
阅读全文
相关推荐













