首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用github actions bot测试gradle java

如何使用github actions bot测试gradle java
EN

Stack Overflow用户
提问于 2021-05-01 16:11:30
回答 2查看 518关注 0票数 0

我正在尝试实现Github-actions(bot),它在PR创建后运行gradle测试。为了确保我的工作流文件如我所期望的那样工作,我显式地编写了一个test方法,该方法将导致失败。

代码语言:javascript
复制
@Test
fun thisShouldFail() {
    assertEquals(1, 2)
}

当我尝试在我的本地机器上测试时,我得到下面的日志。

代码语言:javascript
复制
> Task :test FAILED

FAILURE: Build failed with an exception.

# More

上面的日志表明测试代码中存在错误,正如我所预期的那样。但随后Github actions bot运行此命令,测试代码结果为SUCCESS

下面是此操作的github工作流yaml文件。

代码语言:javascript
复制
name: PullRequestGradleTest

on:
  pull_request_target:
    types: [labeled]

jobs:
  test:
    name: GradleTest
    runs-on: ubuntu-latest
    if: contains(github.event.pull_request.labels.*.name, 'STAGING')

    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Setup JDK 1.8
        uses: actions/setup-java@v2
        with:
          java-version: '8'
          distribution: 'adopt'

      - name: Grant Permissions to gradlew
        run: chmod +x gradlew
      - name: Test
        run: gradle test --tests "*"

      - name: Test Success
        if: success()
        uses: actions/github-script@0.2.0
        with:
          github-token: ${{ github.token }}
          script: |
            const pull_number = "${{github.event.number}}"
            await github.pulls.createReview({
              ...context.repo,
              pull_number,
              body: "All tests passed.",
              event: "APPROVE"
            })
      - name: Test Fail
        if: failure()
        uses: actions/github-script@0.2.0
        with:
          github-token: ${{ github.token }}
          script: |
            const pull_number = "${{github.event.number}}"
            await github.pulls.createReview({
              ...context.repo,
              pull_number,
              body: "There is something wrong with test codes.",
             event: "REQUEST_CHANGES"
            })
            await github.pulls.update({
              ...context.repo,
              pull_number,
              state: "closed"
            })
EN

回答 2

Stack Overflow用户

发布于 2021-05-02 18:58:07

我发现您使用的是gradle,而不是gradlew

代码语言:javascript
复制
name: PullRequestGradleTest

on:
  pull_request_target:
    types: [labeled]

jobs:
  test:
    name: GradleTest
    runs-on: ubuntu-latest
    if: contains(github.event.pull_request.labels.*.name, 'STAGING')

    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Setup JDK 1.8
        uses: actions/setup-java@v2
        with:
          java-version: '8'
          distribution: 'adopt'

      - name: Grant Permissions to gradlew
        run: chmod +x gradlew
      - name: Test
        run: ./gradlew test --tests "*"

      - name: Test Success
        if: success()
        uses: actions/github-script@0.2.0
        with:
          github-token: ${{ github.token }}
          script: |
            const pull_number = "${{github.event.number}}"
            await github.pulls.createReview({
              ...context.repo,
              pull_number,
              body: "All tests passed.",
              event: "APPROVE"
            })
      - name: Test Fail
        if: failure()
        uses: actions/github-script@0.2.0
        with:
          github-token: ${{ github.token }}
          script: |
            const pull_number = "${{github.event.number}}"
            await github.pulls.createReview({
              ...context.repo,
              pull_number,
              body: "There is something wrong with test codes.",
             event: "REQUEST_CHANGES"
            })
            await github.pulls.update({
              ...context.repo,
              pull_number,
              state: "closed"
            })

如果在命令中使用gradle,则取决于机器的环境。在这种情况下,可能会因为Gradle版本而出现错误。因此,您需要使用包含在您的存储库中的项目的Gradle。使用方法是使用gradlew脚本。

我还建议遵循以下三个步骤来测试pull请求的分支。

清理->组装(或构建) ->测试

票数 1
EN

Stack Overflow用户

发布于 2021-06-07 12:25:35

基本问题是,如果我们使用pull_request_target事件,操作将在目标分支上运行,这将是PR将合并到的基本分支。为了解决这个问题,我必须显式地设置这个操作将在哪里运行。

job => steps

代码语言:javascript
复制
steps:
      - name: checkout
        uses: actions/checkout@v2
        with:
          ref: ${{ github.event.pull_request.head.ref }}
          repository: ${{github.event.pull_request.head.repo.full_name }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67344181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档