ChenZhen 搜索
首页 标签 归档 留言板 友链 ChatGPT 提示库 AI工具导航网 🚇开往 关于我

使用Github-Action实现当代码推送远程仓库后自动部署Springboot项目

`GitHub Actions` 是 GitHub 提供的一项持续集成 (CI) 和持续部署 (CD) 服务。它允许你在代码仓库中定义和运行自动化的工作流程,以响应存储库中的事件或调度。`GitHub Actions` 可以用于**构建、测试、打包和部署**项目,也可以执行其他自动化任务。

ChenZhen 2024-07-22T23:24:31
cover

使用Github-Action实现当代码推送远程仓库后自动部署Springboot项目

GitHub Actions 是 GitHub 提供的一项持续集成 (CI) 和持续部署 (CD) 服务。它允许你在代码仓库中定义和运行自动化的工作流程,以响应存储库中的事件或调度。GitHub Actions 可以用于构建、测试、打包和部署项目,也可以执行其他自动化任务。

第一步配置 secrets

第一步需要先配置secrets,保证我们的服务器信息不暴露

首先进入你要部署的项目仓库的首页,然后点击Setting -> Action

在这里配置我们服务器的IP和账号密码

在这里插入图片描述

因为这里构建的包不是很大,所以我们使用的方式是先在github action的环境构建打包,然后将包发送到目标服务器。你也可以在github action里让目标服务器执行命令去做git,构建,部署,启动等等相关的

GitHub Actions 的配置文件

在这里插入图片描述

在仓库的Actions选项卡下点击新建,名称默认或者自定义修改,注意yml文件的必须提交到你想要部署的分支里,否则push后不会执行,配置如下:

name: Java CI with Maven

on:
  push:
    branches: [ "master" ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 8
      uses: actions/setup-java@v3
      with:
        java-version: '8'
        distribution: 'adopt'
        cache: maven
    - name: Build with Maven
      run: mvn -B package --file pom.xml

    - name: copy jar
      uses: cross-the-world/ssh-scp-ssh-pipelines@latest
      with:
        host: ${{ secrets.HOST }}
        user: ${{ secrets.USERNAME }}
        pass: ${{ secrets.PASSWORD }}
        port: 22
        scp: |
          ./target/springboot.jar => /opt/
        last_ssh: |
          JAR_NAME="springboot.jar"; PID=$(ps aux | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'); if [ -n "$PID" ]; then kill -9 $PID && echo "进程 $PID 已被杀死"; else echo "未找到与 $JAR_NAME 相关的进程"; fi
          java -jar /root/springboot.jar &

这段代码是一个 GitHub Actions 的配置文件,用于在每次向 master 分支推送代码时,自动构建和部署一个 Java 项目。具体步骤如下:

  1. 触发条件

    • 触发条件是在 master 分支上有代码推送时。
  2. 作业定义

    • 定义了一个名为 build 的作业,该作业在最新的 Ubuntu 环境中运行。
  3. 步骤

    • 代码检出
      • 使用 actions/checkout@v3 操作来检出仓库的代码。
    • 设置 JDK 8
      • 使用 actions/setup-java@v3 操作来安装 JDK 8。这里指定了 Java 版本为 8,使用的发行版为 adopt,并启用了 Maven 的缓存。
    • 使用 Maven 构建项目
      • 运行 mvn -B package --file pom.xml 命令来构建项目。-B 选项表示批处理模式,避免交互式输入。
    • 复制 jar 文件
      • 使用 cross-the-world/ssh-scp-ssh-pipelines@latest 操作来通过 SCP 将构建生成的 jar 文件复制到远程服务器。这里使用了 GitHub Secrets 来安全地存储和使用服务器的主机名、用户名和密码。
      • 具体的 SCP 和 SSH 命令
        • SCP 命令:将本地的 ./target/springboot.jar 文件复制到远程服务器的 /root/ 目录下。
        • SSH 命令
          • 查找并杀死已经运行的 springboot.jar 进程:通过 ps aux | grep "$JAR_NAME" | grep -v grep | awk '{print $2}' 命令找到进程 ID,然后使用 kill -9 $PID 命令强制终止该进程。
          • 启动新的 springboot.jar 进程:使用 java -jar /root/springboot.jar & 命令在后台运行新的 jar 文件,指定最大堆内存为 1024M,最小堆内存为 256M。

这段配置文件实现了一个简单的持续集成和部署流程,自动完成代码检出、构建、上传和部署的步骤。

一个小技巧:如果SSH命令比较复杂,可以在服务器上调试好之后写入一个脚本文件script.sh,然后这里的配置文件只需要sh script.sh执行脚本文件即可

push分支到仓库

push内容到仓库后,Action会自动执行工作流,此时你再看看你配置的服务器目录,就会发现文件被拷贝过去了

在这里插入图片描述

© 版权声明
😀😃😄😁😆😅🤣😂🙂🙃😉😊😇🥰😍🤩😘😗😚😙😋😛😜🤪😝🤑🤗🤭🤫🤔🤐🤨😐😑😶😏😒🙄😬🤥😌😔😪🤤😴😷🤒🤕🤢🤮🤧🥵🥶🥴😵🤯🤠🥳😎🤓🧐😕😟🙁☹️😮😯😲😳🥺😦😧😨😰😥😢😭😱😖😣😞😓😩😫🥱😤😡😠🤬
1