aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yml
blob: aba018f0680ea1eca436505196209d29c6630d4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Copyright 2020 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

# GitHub workflow reference:
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions

name: ci
on: [push, pull_request]
permissions:
  contents: read

jobs:
  aux:
    runs-on: ubuntu-latest
    steps:
      # Checks out syzkaller repo at the path.
      - name: checkout
        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
        with:
          path: gopath/src/github.com/google/syzkaller
          # This is needed for tools/check-commits.sh
          fetch-depth: 100
      # Run make presubmit_aux.
      - name: run
        env:
          GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
          GITHUB_PR_BASE_SHA: ${{ github.event.pull_request.base.sha }}
          GITHUB_PR_COMMITS: ${{ github.event.pull_request.commits }}
        run: gopath/src/github.com/google/syzkaller/.github/workflows/run.sh syz-env make presubmit_aux
  build:
    runs-on: ubuntu-20.04-32core
    steps:
    - name: checkout
      uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      with:
        path: gopath/src/github.com/google/syzkaller

    # https://github.com/golang/go/issues/23565 asks to cache -coverprofile results since 2018.
    - id: get-date
      run: echo "date=$(/bin/date -u "+%Y%m%d+%T")" >> $GITHUB_OUTPUT
      shell: bash
    - name: go build cache
      uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
      with:
        path: .cache
        key: ${{ runner.os }}-go-build-${{ steps.get-date.outputs.date }} #always miss and upload fresh item
        restore-keys: ${{ runner.os }}-go-build- #read the freshest available after miss

    - name: pull syz-env
      run: docker pull gcr.io/syzkaller/env:latest
    - name: run
      run: gopath/src/github.com/google/syzkaller/.github/workflows/run.sh syz-env make presubmit_build
    # Upload coverage report to codecov.io. For reference see:
    # https://github.com/codecov/codecov-action/blob/master/README.md
    - name: codecov
      uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
      with:
        files: gopath/src/github.com/google/syzkaller/.coverage.txt
        flags: unittests
  dashboard:
    runs-on: ubuntu-20.04-32core
    steps:
    - name: checkout
      uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      with:
        path: gopath/src/github.com/google/syzkaller
    - name: pull syz-env
      run: docker pull gcr.io/syzkaller/env:latest
    - name: run
      run: gopath/src/github.com/google/syzkaller/.github/workflows/run.sh syz-env timeout --signal=SIGINT 15m make presubmit_dashboard
    - name: codecov
      uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
      with:
        files: gopath/src/github.com/google/syzkaller/.coverage.txt
        flags: dashboard
  arch:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        target: [presubmit_arch_linux, presubmit_arch_freebsd, presubmit_arch_netbsd, presubmit_arch_openbsd, presubmit_arch_darwin, presubmit_arch_windows, presubmit_arch_executor]
    steps:
      - name: checkout
        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
        with:
          path: gopath/src/github.com/google/syzkaller
      - name: run
        run: gopath/src/github.com/google/syzkaller/.github/workflows/run.sh syz-env make ${{ matrix.target }}
  race:
    runs-on: ubuntu-20.04-32core
    steps:
    - name: checkout
      uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      with:
        path: gopath/src/github.com/google/syzkaller

    # https://github.com/golang/go/issues/61608 to cache -race results.
    - id: get-date
      run: echo "date=$(/bin/date -u "+%Y%m%d+%T")" >> $GITHUB_OUTPUT
      shell: bash
    - name: test race cache
      uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
      with:
        path: .cache
        key: ${{ runner.os }}-go-test-race-${{ steps.get-date.outputs.date }} #always miss and upload fresh item
        restore-keys: ${{ runner.os }}-go-test-race- #read the freshest available after miss

    - name: pull syz-env
      run: docker pull gcr.io/syzkaller/env:latest
    - name: run
      run: gopath/src/github.com/google/syzkaller/.github/workflows/run.sh syz-env make presubmit_race
  old:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
        with:
          path: gopath/src/github.com/google/syzkaller
      - name: run
        run: gopath/src/github.com/google/syzkaller/.github/workflows/run.sh syz-old-env make presubmit_old