使用GithubAction自动构建部署项目

科技资讯 投稿 7000 0 评论

使用GithubAction自动构建部署项目

目录
    1.1 项目准备
  • 2.1 GithubAction设置
  • 3.1 运行测试
  • 4.1 小结

1.1 项目准备

这里以一个javaWEB项目作为演示:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>GithubActionDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>GithubActionDemo</name>
    <description>GithubActionDemo</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

这里注意一下SpringBoot 2.x 的话最好就用JDK1.8 如果要用Springboot 3.X版本必须使用JDK17。Springboot 3.x已经废弃JDK1.8了。

2.1 GithubAction设置

这里可以选择Github提供的诸多工作流模板:
也可以自己自定义一个工作流,new workflow因为该项目是一个JavaWeb项目这里随便找了一个maven打包构建的模板:

# 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: [ "master" ]
  pull_request:
    branches: [ "master" ]

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: '17'
          cache: 'maven'

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

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

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

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

以下为该脚本的说明:

workFlow 说明
name 自定义workFlow名字
on 触发器,指定该工作流什么时候生效,这里是在push和pull_request的时候触发生效
job 一个任务,可以有多个
runs-on 构建部署过程可以在本地也可以使用github提供的虚拟机服务
steps 构建步骤,可以有多个

sshpass是一个远程登录服务器的一个插件工具,这里我现在服务器里创建了一个目录/root/GitHub_Action用于存放构建后的项目。run.sh为启动脚本内容如下:

编程笔记 » 使用GithubAction自动构建部署项目

赞同 (39) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽