巧用GitHub Action实现自动化部署Java项目

本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star

⭐⭐⭐⭐⭐转载请注明出处:https://blog.csdn.net/weixin_43461520/article/details/127475965

前言

我在前几天写了篇文章,是说如何使用GitLab CICD实现项目的自动化部署到指定的Web服务器中,没看过的小伙伴可以去看看:你是个成熟的项目了,该学会自动构建自动部署了。但是如果是我的个人项目,我应该是不大会使用GitLab的,因为如果仅仅是为了自动化部署而去安装一个GitLab的话,对我而言代价高了点。所以我更愿意把代码放在GitHub、Gitee这样的平台。如果GitHub、Gitee能实现同样的功能,那自然是最好不过了。我本来是想用Gitee试试的,不过Gitee的自动化部署是收费的,只有200分钟的试用时间,感觉也用不了多久,所以还是用GitHub吧。

流程介绍

GitHub的自动化部署功能叫做GitHub Actions,就是图中红框的部分,而GitHub_Action是我用来测试自动化部署功能创建的项目。

请添加图片描述

它的使用方式和GitLab CICD差不多。在项目中指定一个workflow文件,然后在workflow文件中定义任务去指定具体的执行步骤,然后代码提交时,GitHub就会开一个虚拟机去执行workflow,从而达到自动化部署的功能。既然是在虚拟机中运行任务,所以理论上实现方式就有两种:

请添加图片描述

这两个方案的区别就是编译的过程是在GitHub提供的虚拟机里面还是在我们自己的Web服务器中。

如果使用方案二的话,就需要在我们自己的Web服务器中安装Maven。而本地的Maven仓库动不动就长到了几个G,我的服务器只有40G的容量,我不想让Maven仓库去占用我的空间,所以下面的讲解是基于方案一的。

workflow定义

在此之前,我们需要在Secrets中定义几个变量,用于在后面的workflow文件中引用。

请添加图片描述
这里我将Web服务器的ip密码定义在了这里。这一步其实并不是必须的,不过如果不定义的话就需要将这些敏感的信息写在workflow文件中。如果仓库是private的话,当然没有问题,但要是public的话,所有人都可以在workflow文件中看到你服务器的ip和密码了,这显然是不安全的。所以可以将一些敏感的信息定义到Secrets里面。

请添加图片描述
👆点击页面中的New workflow按钮就可以去新建一个workflow了。
请添加图片描述
👆然后就会跳到选择workflow的界面了,这里官方提供了一些,要是你觉得不适用的话,也可以点击set up aworkflow yourself去自己创建workflow。

请添加图片描述

这里面有几点说明一下:

  • 虚拟机环境:前面说过这些任务是运行在GitHub提供的虚拟机里面,所以GitHub提供了几个不同的虚拟机环境。在Documentation里也列出来了。小伙伴们根据自己的实际情况自行选择即可。

    请添加图片描述

  • action:一个action其实就是一个操作,比如拉取代码、设置JDK等。这些其实都是通用的操作,如果Marketplace里面有的话,直接引用就好,不必所有的脚本都自己编写。

workflow文件中前面的内容其实都是一些环境的配置,steps里才是具体的执行步骤。

jobs:
  develop_build:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取最新提交的代码
        uses: actions/checkout@v3

      - name: 设置jdk
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '8'
          cache: 'maven'

      - name: 项目打包
        run: mvn -B package

      - name: 删除旧的jar包以及运行脚本
        run: sshpass -p ${{secrets.REMOTE_PWD}} ssh -o StrictHostKeyChecking=no root@${{secrets.REMOTE_IP}} "cd /root/GitHub_Action && rm -rf ./*"

      - name: 上传jar包和启动脚本到服务器中
        run: sshpass -p ${{secrets.REMOTE_PWD}} scp -r -o StrictHostKeyChecking=no ./target/GitHub_Action-0.0.1-SNAPSHOT.jar ./run.sh root@${{secrets.REMOTE_IP}}:/root/GitHub_Action

      - name: 启动项目
        run: sshpass -p ${{secrets.REMOTE_PWD}} ssh -o StrictHostKeyChecking=no root@${{secrets.REMOTE_IP}} "cd /root/GitHub_Action && chmod +x run.sh && ./run.sh"

第一步将最新提交的代码拉到运行任务的虚拟机中,这一步用的是官方提供的action。

第二步设置jdk,用的也是官方提供的action,关于这个action的详细说明,可以参考https://github.com/marketplace/actions/setup-java-jdk

第三步打包。

然后将打好的jar包以及启动脚本通过scp上传到Web服务器中。**sshpass -p s e c r e t s . R E M O T E P W D s s h − o S t r i c t H o s t K e y C h e c k i n g = n o r o o t @ {{secrets.REMOTE_PWD}} ssh -o StrictHostKeyChecking=no root@ secrets.REMOTEPWDsshoStrictHostKeyChecking=noroot@{{secrets.REMOTE_IP}}**是ssh连接指定的服务器,后面引号内则是具体的shell命令,和我们在控制台写的是一样的。启动脚本run.sh是我提前写好的。

# run.sh
# 切换到jar包目录下
cd /root/XXX
# 杀死之前的项目进程。这里的cut -c9-14是截取进程id,不一定都是-c9-14
# 可以先运行ps -ef|grep java|grep GitHub_Action-0.0.1-SNAPSHOT.jar看一下进程id是第几位到第几位
ps -ef|grep java|grep XXXX.jar|cut -c9-14|xargs kill -9
# 停5秒
sleep 5s
# 使环境变量生效
source /root/.bash_profile
# 运行项目
nohup java -jar XXXX.jar >/root/cicd.log 2>&1 &

测试

现在将代码提交到develop分支后,就可以触发这个workflow。

请添加图片描述
可以看到,这个workflow已经运行完成了,访问一下我写的测试接口,也可以正常的访问,说明项目已经部署成功了:

请添加图片描述

将接口稍作修改后再提交一次:
请添加图片描述
又成功了✌️

更多更详细的用法,可以阅读官方文档:https://docs.github.com/cn/actions

⭐⭐⭐⭐⭐转载请注明出处:https://blog.csdn.net/weixin_43461520/article/details/127475965

本文已收录至我的Github仓库DayDayUPgithub.com/RobodLee/DayDayUP,欢迎Star

如果您觉得文章还不错,请给我来个点赞收藏关注

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
前端自动化部署可以帮助我们将代码快速部署到服务器上,提高开发和部署的效率。下面介绍一下前端自动化部署的步骤以及如何将代码自动化部署github。 1. 安装自动化部署工具 前端自动化部署需要借助一些工具,例如gulp、grunt、webpack等。根据自己的需求选择适合自己的自动化部署工具,然后进行安装。 2. 配置自动化部署脚本 在安装好自动化部署工具后,需要配置自动化部署的脚本。根据不同的工具,配置文件的格式不同,但一般都需要配置一些基本项,如输入输出路径、需要执行的任务等。可以参考官方文档或其他资料进行配置。 3. 集成自动化部署自动化部署集成到开发环境中,一般需要配置一些开发工具的插件或者编写一些脚本。例如,可以编写一个gulp插件,在开发完成后自动执行自动化部署脚本。这样可以方便地将代码部署到服务器上。 4. 自动化部署github 将代码自动化部署github可以使代码管理更加便捷,具体步骤如下: step1:将代码上传到github仓库 将代码上传到github仓库中,可以通过命令行或者git客户端进行操作。 step2:配置自动化部署脚本 根据需要配置自动化部署脚本,例如使用gulp自动化打包。 step3:编写自动化部署脚本 编写自动化部署脚本,将代码自动化部署github中。 step4:设置github webhook 在github上设置webhook,使代码提交时能够自动运行自动化部署脚本。 总结: 通过前端自动化部署,可以使代码管理和部署更加便捷高效,减少手动操作,提高开发效率。如果需要将代码自动化部署github,则需要了解github的webhook机制,并编写相应的自动化部署脚本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值