利用github actions自动部署gradle构建的springboot 项目打包的war包到tomcat服务器

准备工作:

  1. 一台安装好了tomcat的服务器(需要知道服务器ip地址,ssh登录用户名和密码以及端口号),如果没有装,可以看看我之前的tomcat安装教程

  2. 给项目配置服务器信息(当然如果你的项目是私有的,图方便也可以不用配置,直接写到action里也可以,只是不太安全)
    在这里插入图片描述

  3. 采用gradle 构建的springboot项目,打包方式为war,并配置打包的war包名称(方便读取)

plugins {
    id 'org.springframework.boot' version '2.4.5'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'war'
}

group = 'com.flymegoc'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

bootWar {
    archiveFileName = "app.war"
}

编写actions 脚本

详细的参数可以去看看阮一峰GitHub Actions 入门教程,我这里直接贴现成的,切换到项目actions标签下,创建任意名称的yml文件,写入以下脚本信息,更改自己的项目即可

# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle

name: Java CI with Gradle #名称

on:  #触发条件
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs: #具体的任务
  build:

    runs-on: ubuntu-latest #执行的环境

    steps:
    - uses: actions/checkout@v2 #拉取项目文件
    - name: Set up JDK 8 #配置java环境
      uses: actions/setup-java@v2
      with:
        java-version: '8'
        distribution: 'adopt'
    - name: Grant execute permission for gradlew  #更改脚本权限
      run: chmod +x gradlew
    - name: Build with Gradle  #开始打包 -x test 跳过测试
      run: ./gradlew bootWar -x test
    - name: scp_upload_war_file #上传文件到服务器
      uses: garygrossgarten/github-action-scp@release
      with:
        local: 'build/libs/app.war' #打包文件的路径
        remote: '/home/app.war' #放到服务器的目录
        host: ${{ secrets.HOST }} #服务器ip地址
        username: ${{ secrets.USERNAME }} #服务器ssh用户名
        password: ${{ secrets.PASSWORD }} #服务器ssh密码
        port: ${{ secrets.PORT }} # 服务器ssh端口(默认22)
    - name: deploy_app_war #开始部署
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }} #服务器ip地址
        username: ${{ secrets.USERNAME }} #服务器ssh用户名
        password: ${{ secrets.PASSWORD }} #服务器ssh密码
        port: ${{ secrets.PORT }} # 服务器ssh端口(默认22)
        script: |
          systemctl stop tomcat #停止tomcat
          cd /usr/local/apache-tomcat-9.0.45/webapps/ 
          mv app.war /home/app.war.backup #备份原来的包
          rm -rf app # 删除原来的目录
          mv /home/app.war /usr/local/apache-tomcat-9.0.45/webapps/app.war #移动新包
          systemctl start tomcat #启动tomcat


参考:

github Actions 完成Spring boot编译部署任务


版权声明:本文为ngl272原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。