假设您想创建一个供团队成员审核的 PR,同时团队需要确保 PR 符合团队标准,包括技术验证和测试用例有效性等。在这种情况下,我们需要使用工具来触发存储库的 PR 流程,并在 PR 不符合合并要求时向我们发出警报。
GitHub Actions 是一个持续集成和持续交付 (CI/CD) 平台,可让您自动化构建、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
我有一个类似于以下结构的 Spring Boot 项目,并且我有一个它的 GitHub 仓库。
要在 GitHub 上准备工作流程,我们需要在项目根目录中定义一个名为.github/workflow
新文件,并将其推送到存储库。
为了准备工作流程,我们需要在存储库中定义此目录。
.github/workflows
,工作流程文件内部将定义所有工作流程。
在本文中,我们需要定义一个工作流程来验证 PR。
我们的文件结构将如下所示。
准备好一切后,我们需要编写工作流程,该工作流程将适用于特定事件,在我们的案例中,事件将是为开发分支而创建的任何 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的结果。
没有回复内容