From c564a16a4a60658b15a03f1cf1c75bcc243f1e0f Mon Sep 17 00:00:00 2001 From: Stefan Zetzsche <120379523+stefan-aws@users.noreply.github.com> Date: Mon, 19 Aug 2024 10:40:34 +0100 Subject: [PATCH] CompFuzzCI integration (no forks) (#5697) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description ### How has this been tested? By submitting this pull request, I confirm that my contribution is made under the terms of the [MIT license](https://github.com/dafny-lang/dafny/blob/master/LICENSE.txt). --- .github/workflows/compfuzzci_close_pr.yaml | 29 +++++++++++ .../workflows/compfuzzci_fuzz_no_forks.yaml | 32 ++++++++++++ .../workflows/compfuzzci_process_issues.yaml | 51 +++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 .github/workflows/compfuzzci_close_pr.yaml create mode 100644 .github/workflows/compfuzzci_fuzz_no_forks.yaml create mode 100644 .github/workflows/compfuzzci_process_issues.yaml diff --git a/.github/workflows/compfuzzci_close_pr.yaml b/.github/workflows/compfuzzci_close_pr.yaml new file mode 100644 index 00000000000..fec95d7b6b2 --- /dev/null +++ b/.github/workflows/compfuzzci_close_pr.yaml @@ -0,0 +1,29 @@ +# This workflow is triggered on PR being closed. +# It dispatches workflow on CompFuzzCI repository, where the bugs found in the PR head is discarded from the database. + +name: Updating CompFuzzCI on PR Closed +on: + pull_request: + branches: + - master + types: [closed] + +jobs: + UpdatePRClosed: + if: github.event.pull_request.base.ref == 'master' && github.event.pull_request.head.repo.owner.login == 'dafny-lang' + runs-on: ubuntu-latest + steps: + - name: Trigger CompFuzzCI + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.COMPFUZZCI_PAT }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'CompFuzzCI', + repo: 'DafnyCompilerFuzzer', + workflow_id: 'update_pr_close.yaml', + ref: 'main', + inputs: { + pr_head_ref: '${{github.event.pull_request.head.ref}}' + } + }) \ No newline at end of file diff --git a/.github/workflows/compfuzzci_fuzz_no_forks.yaml b/.github/workflows/compfuzzci_fuzz_no_forks.yaml new file mode 100644 index 00000000000..ee41745889c --- /dev/null +++ b/.github/workflows/compfuzzci_fuzz_no_forks.yaml @@ -0,0 +1,32 @@ +# This workflow is triggered on PR being opened, synced, reopened, closed. +# It dispatches workflow on CompFuzzCI repository, where fuzzing of the PR is handled. + +name: Fuzzing on PR (excluding forks) +on: + pull_request: + branches: + - master + +jobs: + FuzzOnPR: + if: github.event.pull_request.base.ref == 'master' && github.event.pull_request.head.repo.owner.login == 'dafny-lang' + runs-on: ubuntu-latest + steps: + - name: Trigger CompFuzzCI + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.COMPFUZZCI_PAT }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'CompFuzzCI', + repo: 'DafnyCompilerFuzzer', + workflow_id: 'fuzz.yaml', + ref: 'main', + inputs: { + commit: '${{ github.event.pull_request.head.sha }}', + main_commit: '${{github.event.pull_request.base.sha}}', + branch: '${{github.event.pull_request.head.ref}}', + duration: '3600', + instance: '2' + } + }) \ No newline at end of file diff --git a/.github/workflows/compfuzzci_process_issues.yaml b/.github/workflows/compfuzzci_process_issues.yaml new file mode 100644 index 00000000000..2228ef0a2d9 --- /dev/null +++ b/.github/workflows/compfuzzci_process_issues.yaml @@ -0,0 +1,51 @@ +# This workflow is triggered on issue being opened, closed, reopened. +# The CompFuzzCI fuzzer needs to keep track of active issues in the repository to ensure that the fuzzer does not report the same issue multiple times. +# For open and reopen events: It dispatches workflow on CompFuzzCI repository, where the issue is added to the database. +# For close event: It dispatches workflow on CompFuzzCI repository, where the issue is removed from the database. + +name: Issue Update for Fuzzer +on: + issues: + branches: + - master + types: [opened, closed, reopened] + +jobs: + UpdateIssueOpened: + if: github.event.action == 'opened' || github.event.action == 'reopened' + runs-on: ubuntu-latest + steps: + - name: Trigger CompFuzzCI + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.COMPFUZZCI_PAT }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'CompFuzzCI', + repo: 'DafnyCompilerFuzzer', + workflow_id: 'update_issue_open.yaml', + ref: 'main', + inputs: { + issue_number: '${{github.event.issue.number}}', + issuer: '${{github.event.issue.user.login}}', + commit: '${{ github.sha }}' + } + }) + UpdateIssueClosed: + if: github.event.action == 'closed' + runs-on: ubuntu-latest + steps: + - name: Trigger CompFuzzCI + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.COMPFUZZCI_PAT }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'CompFuzzCI', + repo: 'DafnyCompilerFuzzer', + workflow_id: 'update_issue_close.yaml', + ref: 'main', + inputs: { + issue_number: '${{github.event.issue.number}}' + } + }) \ No newline at end of file