首页 > 其他分享 >利用Github Action自动化部署SpringBoot项目

利用Github Action自动化部署SpringBoot项目

时间:2023-02-25 01:55:31浏览次数:52  
标签:Github java SpringBoot secrets jar maven Action 服务器

环境准备

项目设置

Github Setting

进入Github仓库管理界面,依次点击Setting->New Repository Sectet 。分别解释以下的字段和值

  • HOST:私有服务器公网IP地址
  • USERNAME:私有服务器公网用户名,笔者选择root
  • PASSWORD:私有服务器USERNAME对应密码
  • PORT:私有服务器公网端口,一般取22

image-20230225005751733

Project Setting

在项目的根目录下新增/.github/workflows/maven.yml

并在maven.yml添加以下内容.

# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Java CI with Maven

# 触发构建时机
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

# 任务
jobs:
  build:

    # Github Action CI/CD的机器选择。
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 8
        uses: actions/setup-java@v3
        with:
          java-version: '8.0.362'
          distribution: 'temurin'
          cache: maven
      # maven缓存,不加的话每次都会去重新拉取,会影响速度
      - name: Dependies Cache
        uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      # Maven 打包
      - name: Build with Maven
        run: mvn clean package --file pom.xml
      # 将打包后的Jar包从Github Action服务器传输至私人服务器中
      - name: Transfer jar packets
        uses: garygrossgarten/github-action-scp@release
        with:
          # Github Action 的服务器文件路径
          local: target/demo-0.0.1-SNAPSHOT.jar
          # 私有服务器文件路径
          remote: /home/demo-0.0.1-SNAPSHOT.jar
          # 私有服务器公网IP地址
          host: ${{ secrets.HOST }}
          # 私有服务器用户名
          username: ${{ secrets.USERNAME }}
          # 私有服务器用户密码
          password: ${{ secrets.PASSWORD }}
      # 部署运行
      - name: Deploy
        uses: appleboy/ssh-action@master
        with:
          # 同上述
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}
          port: ${{ secrets.PORT }}
          # ssh进入系统后执行什么样的操作。一般是关闭原有的服务在重启
          script: |
            cd /home
            ps -ef | grep  demo-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}' | xargs kill -9
            # nohup /usr/local/java/jdk1.8.0_361/bin/java -jar /home/demo-0.0.1-SNAPSHOT.jar > nohup.out &
            nohup /usr/local/java/jdk1.8.0_361/bin/java -jar /home/demo-0.0.1-SNAPSHOT.jar > runtime.log 2>&1 &
            pwd


问题与解决

1问题. runtime.log日志显示

nohup: 无法运行命令“java“: 没有那个文件或目录  

1原因:无法识别\(`\)JAVAHOME`$的环境变量

1解决:用绝对路径/usr/local/java/jdk1.8.0_361/bin/java即可

参考链接

标签:Github,java,SpringBoot,secrets,jar,maven,Action,服务器
From: https://www.cnblogs.com/Di-iD/p/17153666.html

相关文章

  • 基于SpringBoot+Vue开发的前后端分离博客项目一一后端开发
    @目录前言一、Java后端接口开发1.新建SpringBoot项目1.1开发技术栈:1.2pom中jar包引入:1.3配置文件:2.整合mybatisPlus2.1引入pom的jar包2.2配置分页插件、代码生成......
  • SpringBoot31 - 监控
    监控​ 在说监控之前,需要回顾一下软件业的发展史。最早的软件完成一些非常简单的功能,代码不多,错误也少。随着软件功能的逐步完善,软件的功能变得越来越复杂,功能不能得到有......
  • SpringBoot29 - RocketMQ
    SpringBoot整合RocketMQ​ RocketMQ由阿里研发,后捐赠给apache基金会,目前是apache基金会顶级项目之一,也是目前市面上的MQ产品中较为流行的产品之一,它遵从AMQP协议。安装......
  • SpringBoot30 - 整合Kafka
    SpringBoot整合Kafka安装​ windows版安装包下载地址:https://kafka.apache.org/downloads​ 下载完毕后得到tgz压缩文件,使用解压缩软件解压缩即可使用,解压后得到如下......
  • SpringBoot入门
    SpringBoot提供2Controller与@RestController两者分别用于标记此类负责接收及处理HTTP请求路径映射:@RequestMapping的value属性用于匹配URL映射,value支持简单表达式@Re......
  • springboot如何编写
    最佳实践引入场景依赖https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter1查看自动配置了那些(选)1.自行......
  • springboot核心技术-核心功能
    接下来学习的主要技术点1.配置文件的使用2.springboot如何来做web开发3.springboot如何访问mysql数据库4.springboot如何用JUnit5来做单元测试5.springboot生产监控......
  • SpringBoot28 - RabbitMQ
    SpringBoot整合RabbitMQ​ RabbitMQ是MQ产品中的目前较为流行的产品之一,它遵从AMQP协议。RabbitMQ的底层实现语言使用的是Erlang,所以安装RabbitMQ需要先安装Erlang。Erl......
  • Hexo+Github搭建个人博客
    参考博客:https://blog.csdn.net/qq_54796785/article/details/126053172注意:仓库名应为GitHub的用户名heox的基本命令hexonew"postName"#新建文章hexonew......
  • SpringBoot24 - 定时任务
    任务​ springboot整合第三方技术第二部分我们来说说任务系统,其实这里说的任务系统指的是定时任务。定时任务是企业级开发中必不可少的组成部分,诸如长周期业务数据的计算......