• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: PR AutoFix
2on: [push]
3permissions: {}
4jobs:
5  PRAutoFix:
6    permissions:
7      actions: write # to cancel/stop running workflows (styfle/cancel-workflow-action)
8      contents: write # to create branch (peter-evans/create-pull-request)
9      pull-requests: write # to create a PR (peter-evans/create-pull-request)
10
11    runs-on: ubuntu-latest
12    steps:
13      # Cache bazel build
14      - name: Get current time
15        uses: srfrnk/current-time@master
16        id: current-time
17        with:
18          format: YYYYWW
19      - name: Get current time
20        uses: srfrnk/current-time@master
21        id: current-time-with-day
22        with:
23          format: YYYYWWd
24      - name: Cache bazel
25        uses: actions/cache@v3
26        env:
27          cache-name: bazel-cache
28        with:
29          path: ~/.cache/bazel
30          # formattedTime here is like 2021323 - the year concatenated with the week then
31          # the day of that week.
32          # As this changes every day, we cycle to a new cache once per day, with lookup
33          # across the week (and then the year).
34          key: ${{ runner.os }}-${{ steps.current-time-with-day.outputs.formattedTime }}
35          restore-keys: |
36            ${{ runner.os }}-${{ steps.current-time.outputs.formattedTime }}
37            ${{ runner.os }}-
38      # Cancel current runs if they're still running
39      # (saves processing on fast pushes)
40      - name: Cancel Previous Runs
41        uses: styfle/cancel-workflow-action@0.9.1
42        with:
43          access_token: ${{ github.token }}
44      # Allow opt-out for some users
45      - name: Should I Stay Or Should I Go
46        uses: actions/github-script@v4
47        id: check
48        with:
49          script: |
50            // If you'd like not to run this code on your commits, add your github user id here:
51            NO_AUTOFIX_USERS = []
52            const { owner, repo } = context.repo
53            if (NO_AUTOFIX_USERS.includes(context.actor)) {
54              console.log('Cancelling');
55              const run_id = "${{ github.run_id }}";
56              await github.actions.cancelWorkflowRun({ owner, repo, run_id });
57              return 'go';
58            } else {
59              return 'stay';
60            }
61      - name: Wait for cancellation
62        run: sleep 60
63        if: steps.check.outputs.result == 'go'
64      - name: Should build?
65        run: test "${{ steps.check.outputs.result }}" = "stay"
66      # Setup to run sanity suite
67      - name: Install Python Interpreter
68        uses: actions/setup-python@v4
69        with:
70          python-version: 3.8
71      - name: Install Python Packages
72        run: |
73          pip install pyyaml mako virtualenv
74          sudo apt-get update
75          sudo apt-get install python3-dev
76      - name: Check out repository code
77        uses: actions/checkout@v3
78        with:
79          submodules: True
80      - name: Get the upstream code
81        run: |
82          cd ${{ github.workspace }}
83          git remote add upstream https://github.com/grpc/grpc
84          git fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 upstream master
85      # Run the things!
86      - name: clang-tidy fixes
87        run: ANDROID_NDK_HOME= ${{ github.workspace }}/tools/distrib/clang_tidy_code.sh --fix --only-changed || true
88      - name: Run sanitize
89        run: ANDROID_NDK_HOME= ${{ github.workspace }}/tools/distrib/sanitize.sh
90      # Report back with a PR if things are broken
91      - name: Create Pull Request
92        uses: peter-evans/create-pull-request@v3
93        with:
94          delete-branch: true
95          branch-suffix: short-commit-hash
96          commit-message: "Automated change: Fix sanity tests"
97          title: Automated fix for ${{ github.ref }}
98          body: |
99            PanCakes to the rescue!
100
101            We noticed that our 'sanity' test was going to fail, but we think we can fix that automatically, so we put together this PR to do just that!
102
103            If you'd like to opt-out of these PR's, add yourself to NO_AUTOFIX_USERS in .github/workflows/pr-auto-fix.yaml
104