GitHub Actions 在仓库发生指定事件时运行工作流。先让它执行项目已有的构建和测试命令,再考虑部署。
运行 Maven 测试
下面要求仓库根目录已有 pom.xml,项目能在 Java 21 下构建。保存为 .github/workflows/maven.yml:
name: Maven checkson: push: branches: [master] pull_request: branches: [master] workflow_dispatch:
permissions: contents: read
jobs: verify: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-java@v5 with: distribution: temurin java-version: '21' cache: maven - run: mvn --batch-mode --no-transfer-progress verifymaster 是示例目标分支;仓库用 main 时同步替换。verify 包含前面的构建阶段,但是否执行单元和集成测试仍由 pom.xml 决定。项目有 Maven Wrapper 时可改为 ./mvnw --batch-mode verify。
查看结果
提交工作流并推送到对应分支,在仓库 Actions 页面打开此次运行,查看失败步骤的日志。先在本地执行相同的 Maven 命令,有助于区分代码问题和 Runner 环境问题。
工作流使用的 checkout/setup-java 主版本已经固定;需要更严格的可复现性时,可按官方发布页固定完整提交 SHA。自托管 Runner 还要核对 Node 运行时要求。
读取提交差异时的区别
默认 checkout 只拉取较浅的历史。如果脚本使用 HEAD~1,第一次提交没有父提交;PR 的默认检出还可能是合并引用,不能把 HEAD~1 当作任意 PR 的基准。
需要历史时设置 fetch-depth: 0,并按事件选取基准 SHA。push 可使用事件中的 before/after;PR 应比较明确的 base/head,或使用 GitHub 的 PR 文件接口。外部分支 PR 不应依赖仓库 Secrets。
评论