简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站

这篇具有很好参考价值的文章主要介绍了简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 背景

大家在生活中经常会自己写一点小代码。然后部署在公有云的服务器上。但是一般像阿里,腾讯等服务商,提供的机器内存并不是很大。如果想装入一个jenkins之类的服务,会比较占用CPU和内存的资源。但是人手的部署又是比较麻烦的。所以我这里提供了一个思路,使用shell脚本来简单实现自动化构建。

2.基本原理

这个很简单的,我以比较常规的 vue.js + spring的方式来介绍一下。我们需要在服务器上安装git和配置好ssh key,这个不做过多介绍。具体的流程图如下。

简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站

 3. 具体实现

这里我将它拆分为以下几个步骤。

3.1 拉取代码 && 将后台代码打包成jar

# 拉代码 打包后台jar start
cd /usr/local/cicd/blog-backend/ 
git pull origin master 

cd /usr/local/cicd/blog-client/ 
git pull origin master &
echo "-----pull code completed------"

# page jar
cd /usr/local/cicd/blog-backend/ 
mvn clean compile
mvn clean package
echo "-----mvn package completed------"

rm -rf /usr/local/cicd/blog-api-0.0.1-SNAPSHOT.jar
cp /usr/local/cicd/blog-backend/target/blog-api-0.0.1-SNAPSHOT.jar /usr/local/cicd
echo "-----copy file success------"
#拉代码 打包后台jar end

3.2 移除旧的container及image运行最新代码打包成的container

这里使用了一点bash脚本的变量,通过shell命令拿到旧的containerId,并将其移除掉。

删除image相对复杂一点,通过grep命令拿到指定的image的id, 再移除掉。具体的可以参考下方的link.

最后是启动新的container,通过dockerfile将jar打包进container,再docker run即可。这里贴上我的简单的Dockerfile.可以看到我的shell脚本以及jar,Dockerfile在同一目录下,所以COPY *.jar就能轻易找到对应的文件。

简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站

FROM openjdk:8-jdk-alpine
COPY *.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
# docker 运行 jar start
cd /usr/local/cicd
container_id=$(sudo docker ps -aqf "name=blob")
docker stop $container_id
docker rm $container_id
echo "----rm old container success------"
echo "----container id: { $container_id }----"
#https://www.cnblogs.com/sjptech/p/10865490.html
# 通过repository name 过滤并删除 image
docker images | grep -E "blob" | awk '{print $3}' | uniq | xargs -I {} docker rmi --force {}
echo "----rm old image success------"

docker build -t blob:v1 .
echo "-----build success------"
docker run -d -p 8888:8888 --name blob blob:v1
echo "-----docker run success------"
# docker 运行 jar end

3.3. 打包前端代码

这似乎是最简单的部分了,仅需在服务器端提前安装好node,执行命令打包即可。最后将build好的文件放置回nginx的目录即可。

# copy 前端资源到nginx 的html目录 start
cd /usr/local/cicd/blog-client
npm install
npm run build
echo "-----npm over------"
rm -rf /usr/share/nginx/html/*
cp -r ./dist/* /usr/share/nginx/html
echo "----nginx file copy over------"
# copy 前端资源到nginx 的html目录 end
echo "全部结束啊啊啊"

4. 效果展示及附件

4.1 效果展示

简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站

 简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站

 4.2 完整文件下载

见此link, Download

简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站

 5. 其他优化

相信比较懒的小伙伴看出来了,这样做似乎也不够自动化。还需要链接到服务器去执行脚本,能不能更加自动化呢。这个确实可以,参考jenkins的实现方式,可以使用github等平台的webhook,只要简单的配置好url. 当有push操作时,github会触发一个call到配置好的url上。这样当接收到请求之后,只要简单触发上面的脚本执行即可。

由于篇幅有限,将在下篇文章中介绍具体的实现。码字不易,希望大家能点个赞哈。文章来源地址https://www.toymoban.com/news/detail-415265.html

到了这里,关于简单的Shell脚本实现自动化构建部署-适合前后端分离的小网站的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell自动化脚本,启动、停止应用程序

    准确的讲/etc下的rc.local文件是rc.d文件中rc.local文件的软链接,找到rc.d下的rc.local文件,添加可执行选项。如果没有该文件可以自己创建。 要想你的脚本文件开机自启动还需要用到rc-local.service这个服务。

    2024年02月03日
    浏览(55)
  • ansible相比shell脚本自动化有什么优势

    Ansible自动化与Shell脚本自动化相比,具有以下几个显著的优势: 轻量级与无需代理 :Ansible的一个关键优势在于其轻量级和无需在被控制服务器上安装任何代理或客户端的特点。这极大地简化了部署和维护的流程,降低了复杂性和出错的可能性。而Shell脚本通常需要在每台服

    2024年04月25日
    浏览(47)
  • shell脚本——服务器巡检(自动化运维)

     目的   自动 获取集群内 多个主机 的内存、磁盘、cpu等信息 生成日志  准备    VMware虚拟主机IP在同一个网段(互相能ping通)             虚拟主机都有公钥免登录            修改主机IP  vi/etc/sysconfig/netwoek-scripts/ifcfg-ens160            设置主机名 hostnamectl set-ho

    2024年02月15日
    浏览(55)
  • Shell脚本入门实战:探索自动化任务与实用场景

    引言 Shell脚本作为一种强大的自动化工具,在现代操作系统中具有广泛的应用。无论是简单的文件操作,还是复杂的系统管理,Shell脚本都能提供高效、快速的解决方案。在本文中,我们将探索Shell脚本的基础知识,并通过实战场景示例,一起深入了解Shell脚本编程。 1. Shell脚

    2024年02月02日
    浏览(46)
  • DevOps自动化平台开发之 Shell脚本执行的封装

    基于如下技术栈开发DevOps平台 Spring Boot Shell Ansible Git Gitlab Docker K8S Vue  1、spring boot starter的封装使用 2、Shell脚本的编写 3、Ansible 脚本的编写 4、Docker 的使用与封装设计 本篇介绍如何使用Java封装Linux命令和Shell脚本的使用 将其设计成spring boot starter maven依赖pom文件 具体的封装

    2024年02月15日
    浏览(48)
  • 【Linux编程Shell自动化脚本】03 shell四剑客(find、sed、grep、awk)

    语法格式 参数说明 : path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    浏览(53)
  • Powershell脚本自动化登录网站的简单实例,命令行方式实现Http(s)的GET、POST请求

    自动化登录网站的流程比较简单,如果不懂 Python、JavaScript、C++ 等编程语言,又没有安装这些编程语言环境软件,我们还要新的点子:用Windows系统自带的 Powershell 运行自编的脚本来实现。 PowerShell 是一种功能强大的自动化工具,除了可以使用 DOS 批处理命令之外,还可以进行

    2024年02月10日
    浏览(56)
  • 简单的jmeter脚本自动化

    1、创建线程组,定义自定义变量,保存请求默认值 2、用csv编写测试用例 备注:如果单元格内本身就有引号,则格式会有点小问题,不能直接修改为csv   用txt打开后 有引号的需要在最外层多包一层引号,每个引号前面也要加一层引号 3、使用csv文件读取测试用例 4、创建h

    2024年04月27日
    浏览(30)
  • 【区块链技术开发】 Solidity使用Truffle Box工具实现预构建模板、自动化部署、创建智能合约示例代码

    专栏:区块链技术开发 Truffle Box是一个开发工具,为Truffle生态系统中的开发人员提供了预构建

    2023年04月16日
    浏览(70)
  • Jenkins部署与自动化构建

    docker 安装 Jenkins 拉取稳定版Jenkins镜像 注意: docker拉取镜像的时候要拉取 jenkins/jenkins 而不是jenkins 要装稳定版,否则后面会有很多插件装不上 挂载对应的容器卷 修改插件下载镜像源为清华镜像(可以先直接尝试一下是否可以安装成功) 访问web页面 http://IP:8090/ 去查看第一次

    2023年04月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包