准备工作:
一台安装好了tomcat的服务器(需要知道服务器ip地址,ssh登录用户名和密码以及端口号),如果没有装,可以看看我之前的tomcat安装教程
给项目配置服务器信息(当然如果你的项目是私有的,图方便也可以不用配置,直接写到action里也可以,只是不太安全)

采用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
参考:
版权声明:本文为ngl272原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。