我正在尝试实现Github-actions(bot),它在PR创建后运行gradle测试。为了确保我的工作流文件如我所期望的那样工作,我显式地编写了一个test方法,该方法将导致失败。
@Test
fun thisShouldFail() {
assertEquals(1, 2)
}当我尝试在我的本地机器上测试时,我得到下面的日志。
> Task :test FAILED
FAILURE: Build failed with an exception.
# More上面的日志表明测试代码中存在错误,正如我所预期的那样。但随后Github actions bot运行此命令,测试代码结果为SUCCESS。
下面是此操作的github工作流yaml文件。
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"
})发布于 2021-05-02 18:58:07
我发现您使用的是gradle,而不是gradlew。
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请求的分支。
清理->组装(或构建) ->测试
发布于 2021-06-07 12:25:35
基本问题是,如果我们使用pull_request_target事件,操作将在目标分支上运行,这将是PR将合并到的基本分支。为了解决这个问题,我必须显式地设置这个操作将在哪里运行。
在job => steps上
steps:
- name: checkout
uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{github.event.pull_request.head.repo.full_name }}https://stackoverflow.com/questions/67344181
复制相似问题