使用Github-Action持续部署Springboot或vue

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

详细github action相关信息请看最底部

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

GitHub Actions 中的 secrets 和 variables 都是用于存储和访问敏感信息或配置的机制

image-20240111105350117

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

Springboot

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
name: Java CI with Maven

on:
push:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
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 => /home/
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
/usr/bin/java -jar -Xmx1024M -Xms256M /home/springboot.jar &

Vue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
name: Deploy to Server
on:
push:
branches: [ "master" ]
jobs:
deploy:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16

- name: Install dependencies
run: yarn

- name: Build project
run: yarn generate
- name: zip dist
run: zip -r dist.zip dist/

# 部署到服务器
- name: Deploy 🚀
uses: cross-the-world/ssh-scp-ssh-pipelines@latest
with:
host: ${{ secrets.HOST }}
user: ${{ secrets.USERNAME }}
pass: ${{ secrets.PASSWORD }}
port: 22
scp: |
'./dist.zip' => /home
last_ssh: |
cd /home/
rm -rf dist/ || true
unzip dist.zip

常见的 GitHub Actions YAML 语法和关键概念

GitHub Actions 使用 YAML 文件来定义工作流程。以下是一些常见的 GitHub Actions YAML 语法和关键概念:

工作流程(Workflow)的定义:

1
2
3
4
5
6
7
8
9
10
11
12
name: My Workflow
on:
push:
branches:
- main
jobs:
my_job:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
# 其他步骤...
  • name: 工作流程的名称。
  • on: 触发工作流程的事件,例如 push 到特定分支。
  • jobs: 包含一个或多个任务的部分。

任务(Job)的定义:

1
2
3
4
5
6
my_job:
runs-on: ubuntu-latest
steps:
- name: Step 1
run: echo "Hello, World!"
# 其他步骤...
  • runs-on: 指定任务运行的操作系统和环境。
  • steps: 包含一个或多个步骤的列表。

步骤(Steps)的定义:

1
2
3
4
5
6
7
8
steps:
- name: Step 1
run: echo "Hello, World!"
- name: Step 2
uses: actions/setup-node@v3
with:
node-version: '14'
# 其他步骤...
  • name: 步骤的名称。
  • run: 执行的命令或脚本。
  • uses: 使用的动作(可以是内置动作或自定义动作)。
  • with: 传递给动作的参数。

触发器(Trigger)的定义:

1
2
3
4
5
6
7
on:
push:
branches:
- main
pull_request:
branches:
- feature/*
  • on: 触发工作流程的事件。
  • push: 代码推送事件。
  • pull_request: 合并请求事件。

环境变量(Environment Variables)的定义:

1
2
3
4
5
6
7
jobs:
my_job:
runs-on: ubuntu-latest
env:
MY_VARIABLE: my_value
steps:
# 步骤...
  • env: 定义任务运行时的环境变量。

Secrets 和 Variables

使用 Secrets:

GitHub Actions 的 secrets 是用于存储敏感信息,例如 API 密钥、访问令牌等。这些 secrets 可以被工作流程中的步骤引用,但它们是加密的,并且只有在运行工作流程时才会暴露给步骤。

  1. 在 GitHub 存储库中创建 secret:

    • 转到 GitHub 存储库的页面。
    • 在存储库顶部导航栏中,点击 “Settings”。
    • 在左侧边栏中,选择 “Secrets”。
    • 点击 “New repository secret”,然后输入 secret 名称和值。
  2. 在工作流程中使用 secret:

    1
    2
    3
    4
    5
    6
    jobs:
    my_job:
    runs-on: ubuntu-latest
    steps:
    - name: Use secret
    run: echo ${{ secrets.MY_SECRET }}

这里 MY_SECRET 是你创建的 secret 的名称,可以在步骤中使用 ${{ secrets.MY_SECRET }} 引用它。

使用 Variables:

GitHub Actions 的 variables 是由 GitHub 提供的一组默认环境变量,同时你也可以定义自己的环境变量。这些变量可以在工作流程的任何步骤中使用。

  1. 在工作流程中使用 GitHub 提供的 variables:

    1
    2
    3
    4
    5
    6
    jobs:
    my_job:
    runs-on: ubuntu-latest
    steps:
    - name: Use GitHub-provided variable
    run: echo ${{ github.event_name }}

    这里的 github.event_name 是 GitHub 提供的一个默认变量,表示触发工作流程的事件的名称。

  2. 在工作流程中定义自己的 variables:

    1
    2
    3
    4
    5
    6
    7
    8
    jobs:
    my_job:
    runs-on: ubuntu-latest
    env:
    MY_VARIABLE: my_value
    steps:
    - name: Use custom variable
    run: echo $MY_VARIABLE

env 部分定义自己的环境变量,然后在步骤中使用 $MY_VARIABLE 引用它。

注意:GitHub Actions 中的环境变量(包括 secrets 和 variables)在步骤中的引用方式使用 ${{ ... }} 语法。此外,secrets 只能在工作流程的同一存储库中使用,而 variables 则可以在不同存储库的工作流程中共享。


使用Github-Action持续部署Springboot或vue
https://cason.work/2024/01/11/使用Github-Action持续部署Springboot或vue/
作者
Cason Mo
发布于
2024年1月11日
许可协议