Add Github Action for some basic sanity test of PR (#6761)
Summary: Add Github Action to perform some basic sanity check for PR, inclding the following. 1) Buck TARGETS file. On the one hand, The TARGETS file is used for internal buck, and we do not manually update it. On the other hand, we need to run the buckifier scripts to update TARGETS whenever new files are added, etc. With this Github Action, we make sure that every PR does not forget this step. The GH Action uses a Makefile target called check-buck-targets. Users can manually run `make check-buck-targets` on local machine. 2) Code format We use clang-format-diff.py to format our code. The GH Action in this PR makes sure this step is not skipped. The checking script build_tools/format-diff.sh assumes that `clang-format-diff.py` is executable. On host running GH Action, it is difficult to download `clang-format-diff.py` and make it executable. Therefore, we modified build_tools/format-diff.sh to handle the case in which there is a non-executable clang-format-diff.py file in the top-level rocksdb repo directory. Test Plan (Github and devserver): Watch for Github Action result in the `Checks` tab. On dev server ``` make check-format make check-buck-targets make check ``` Pull Request resolved: https://github.com/facebook/rocksdb/pull/6761 Test Plan: Watch for Github Action result in the `Checks` tab. Reviewed By: pdillinger Differential Revision: D21260209 Pulled By: riversand963 fbshipit-source-id: c646e2f37c6faf9f0614b68aa0efc818cff96787main
parent
6504ae0c4e
commit
6acbbbf9fc
@ -0,0 +1,41 @@ |
|||||||
|
name: Check buck targets and code format |
||||||
|
on: [push, pull_request] |
||||||
|
jobs: |
||||||
|
check: |
||||||
|
name: Check TARGETS file and code format |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- name: Checkout feature branch |
||||||
|
uses: actions/checkout@v2 |
||||||
|
with: |
||||||
|
fetch-depth: 0 |
||||||
|
|
||||||
|
- name: Fetch from upstream |
||||||
|
run: | |
||||||
|
git remote add upstream https://github.com/facebook/rocksdb.git && git fetch upstream |
||||||
|
|
||||||
|
- name: Where am I |
||||||
|
run: | |
||||||
|
echo git status && git status |
||||||
|
echo "git remote -v" && git remote -v |
||||||
|
echo git branch && git branch |
||||||
|
|
||||||
|
- name: Setup Python |
||||||
|
uses: actions/setup-python@v1 |
||||||
|
|
||||||
|
- name: Install Dependencies |
||||||
|
run: python -m pip install --upgrade pip |
||||||
|
|
||||||
|
- name: Install argparse |
||||||
|
run: pip install argparse |
||||||
|
|
||||||
|
- name: Download clang-format-diff.py |
||||||
|
uses: wei/wget@v1 |
||||||
|
with: |
||||||
|
args: https://raw.githubusercontent.com/llvm-mirror/clang/master/tools/clang-format/clang-format-diff.py |
||||||
|
|
||||||
|
- name: Check format |
||||||
|
run: make check-format |
||||||
|
|
||||||
|
- name: Compare buckify output |
||||||
|
run: make check-buck-targets |
@ -0,0 +1,31 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. |
||||||
|
# If clang_format_diff.py command is not specfied, we assume we are able to |
||||||
|
# access directly without any path. |
||||||
|
|
||||||
|
TGT_DIFF=`git diff TARGETS | head -n 1` |
||||||
|
|
||||||
|
if [ ! -z "$TGT_DIFF" ] |
||||||
|
then |
||||||
|
echo "TARGETS file has uncommitted changes. Skip this check." |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
echo Backup original TARGETS file. |
||||||
|
|
||||||
|
cp TARGETS TARGETS.bkp |
||||||
|
|
||||||
|
python buckifier/buckify_rocksdb.py |
||||||
|
|
||||||
|
TGT_DIFF=`git diff TARGETS | head -n 1` |
||||||
|
|
||||||
|
if [ -z "$TGT_DIFF" ] |
||||||
|
then |
||||||
|
mv TARGETS.bkp TARGETS |
||||||
|
exit 0 |
||||||
|
else |
||||||
|
echo "Please run 'python buckifier/buckify_rocksdb.py' to update TARGETS file." |
||||||
|
echo "Do not manually update TARGETS file." |
||||||
|
mv TARGETS.bkp TARGETS |
||||||
|
exit 1 |
||||||
|
fi |
Loading…
Reference in new issue