解放双手!使用Github Action完成你的SpringBoot项目自动打包上传部署,只需三分钟!

519 阅读2分钟

之前发布过一篇有手就行的前端CI/CD自动部署技能,几分钟学会github Actions工作流用法!

教会了大家如何使用github免费提供的action功能在自己的前端项目中完成自动化的项目构建部署,今天带着大家一起完成后端版本的SpringBoot项目自动化部署


创建工作流

微信截图_20230823134256.png

进去之后开始编写我们的工作流脚本

这里先贴上代码

# ci.yml
name: blog-server # 随意 你的工作流名称

on:
    push:         # 触发条件 这里是在push时触发
        branches: 
          - main # 指定触发分支
jobs:
    build:
        runs-on: ubuntu-latest # 运行的虚拟机环境 必须
        steps:
            - uses: actions/checkout@v3  #  使用工具将代码拉到虚拟机
            - uses: actions/setup-java@master # 这里是进行打jar包的工具
              with:                           # with指定相关参数
                  java-version: 8     # java版本
                  distribution: "adopt" # jdk发行版
                  cache: maven    # 包管理工具
            - run: mvn clean package --file pom.xml  # 执行打包命令
            - name: copy dist fil with scp           # 开始上传jar包 
              uses: wlixcc/SFTP-Deploy-Action@v1.2.4 # 老朋友了,上一篇的前端包也是用这个上传的
              with:
                  server: ${{ secrets.REMOTE_HOST }}  # 主机地址,下文再出如何配置
                  username: 'root'                    # 主机账号                             
                  password: ${{ secrets.REMOTE_PASSWORD }} # 密码
                  port: 22                                 # 端口 默认22                      
                  local_path: './target/blog-server-0.0.1-SNAPSHOT.jar' # 指定你要上传的文件
                  remote_path: '/root/jar'                                 # 上传到哪儿
                  sftp_only: true
            - name: Deploy
              uses: matheusvanzan/sshpass-action@v2        # 接下来进行运行jar包
              with:
                  host: ${{ secrets.REMOTE_HOST }}        # 和上面一样,不再重复
                  user: 'root'
                  port: 22
                  pass: ${{ secrets.REMOTE_PASSWORD }}
                  run: |                                  # 这里是要执行的后续命令
                  # 按照自己实际的路径和jar包名称进行更换
                  # 进入指定目录,结束原来的进程,运行新进程
                    cd /root/jar
                    ps -ef | grep blog-server-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}' | xargs kill -9   
                    nohup java -jar blog-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=formal > nohup.out &
                    pwd
                    exit

上面的备注应该很清楚了,大家按照自己实际的路径和文件名进行更换。

需要注意到,有部分配置使用到了${{ secrets.xxxx }}这是因为像主机地址、账号密码这种不宜放在代码中,造成密码泄露。

这里我们同样使用Github提供给Action的秘钥变量进行存储。

微信截图_20230823140439.png

变量名根据自己上面填写的自定义就好了

完成以上步骤,保存我们的工作流,由于这里直接修改了仓库的代码,算作一次push,会直接触发工作流任务。

微信截图_20230823140603.png

提交完成回到Action

查看运行中的任务

微信截图_20230823140804.png

大概过两分钟左右,服务器的jar包进行了更新而且也运行了

微信截图_20230823152033.png

好了,到这里全部流程跑完,后端服务也更新完毕了,小伙伴们快去实验一下吧~