Spring Boot 项目使用 GitHub Action 构建持续交付-Spring专区论坛-技术-SpringForAll社区

Spring Boot 项目使用 GitHub Action 构建持续交付

假设您想创建一个供团队成员审核的 PR,同时团队需要确保 PR 符合团队标准,包括技术验证和测试用例有效性等。在这种情况下,我们需要使用工具来触发存储库的 PR 流程,并在 PR 不符合合并要求时向我们发出警报。

GitHub Actions 是一个持续集成和持续交付 (CI/CD) 平台,可让您自动化构建、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。

我有一个类似于以下结构的 Spring Boot 项目,并且我有一个它的 GitHub 仓库。

d2b5ca33bd20240814135959

要在 GitHub 上准备工作流程,我们需要在项目根目录中定义一个名为.github/workflow新文件,并将其推送到存储库。

为了准备工作流程,我们需要在存储库中定义此目录。

.github/workflows ,工作流程文件内部将定义所有工作流程。

在本文中,我们需要定义一个工作流程来验证 PR。

我们的文件结构将如下所示。

d2b5ca33bd20240814140146

准备好一切后,我们需要编写工作流程,该工作流程将适用于特定事件,在我们的案例中,事件将是为开发分支而创建的任何 PR。如果您看到名为verify_PR.yml 的文件,我将在其中创建工作流程步骤。

在显示完整文件之前,我将编写一个单独的代码来解释所有重要的行。

我们需要定义工作流程的名称,并且需要在 GitHub 上显示简短的描述,以下代码行将为我们完成此操作。

name: Verify the PR
run-name: ${{ github.actor }} is verify the PR.

name:定义工作流程名称。

run-name:当工作流程在 GitHub 上运行时,将显示作者姓名以及该流程将为我们执行的操作。这是其他用户的首选描述。

  • 现在,我们定义设置并放置事件,当事件到来时工作流就会工作,例如拉请求或合并等等。在这里,我们在开发分支上为事件定义了带有拉取请求的触发器。

注意:我们可以在这里选择许多分支。

on:
  pull_request:
    branches:
      - develop
  • Jobs Flow:这里我们将编写运行此工作流程时将执行的所有作业。

我们需要定义重要的部分:

1- build:准备运行步骤的环境。

build:

    runs-on: ${{matrix.os}}
    strategy:
      matrix:
        os: [ubuntu-latest]

2- steps:将在您准备好的环境上按订单运行它。对于步骤:我们需要准备很多步骤,比如:

第一个检查分支:

- name: check out branch
        uses: actions/checkout@v3

因为我们正在做Spring boot应用程序,需要在环境上安装JDK,因为环境是虚拟环境,环境会被破坏 完成工作流程后。

- name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: maven

我安装了 JDK 17,因为我正在使用它,因此您需要选择与您的应用程序兼容的版本。

  • 现在我们将使用 Maven 来检查代码是否可以编译并运行所有测试用例等等。
- name: compile the project
        run: mvn compile

      - name: run test case
        run: mvn test

      - name: Build with Maven
        run: mvn clean install package

您可以从以下代码片段中看到文件内容。

# 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: Verify the PR
run-name: ${{ github.actor }} is verify the PR.

on:
  pull_request:
    branches:
      - develop

jobs:
  build:

    runs-on: ${{matrix.os}}
    strategy:
      matrix:
        os: [ubuntu-latest]

    steps:

      - name: check out branch
        uses: actions/checkout@v3

      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: maven

      - name: clear project
        run: mvn clean

      - name: compile the project
        run: mvn compile

      - name: run test case
        run: mvn test

      - name: Build with Maven
        run: mvn clean install package


#      # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
#      - name: Update dependency graph
#        uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6

现在,准备好工作流程后,您需要触发它,您需要从x branch创建 PR 到develop branch 。

您将使用action选项卡在 GitHub 上看到pipline的结果。

d2b5ca33bd20240814141117

请登录后发表评论

    没有回复内容