使用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

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

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)的定义:

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)的定义:

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

步骤(Steps)的定义:

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)的定义:

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

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

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:

    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:

    jobs:
      my_job:
        runs-on: ubuntu-latest
        steps:
          - name: Use GitHub-provided variable
            run: echo ${{ github.event_name }}
    

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

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

    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 则可以在不同存储库的工作流程中共享。

更多博客文章尽在:https://cason.work/
自我整理的编程工具集合:https://tool.cason.work/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值