mirror of https://github.com/OISF/suricata
ci: Run formatting check on pull request
parent
69ed6f253f
commit
9f1e49e863
@ -0,0 +1,142 @@
|
||||
name: formatting-check
|
||||
|
||||
on:
|
||||
push:
|
||||
# Only run on pushes to pull request branches
|
||||
branches-ignore:
|
||||
- 'master'
|
||||
- 'master-*'
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
|
||||
# Checking for correct formatting of branch for C code changes
|
||||
check-formatting:
|
||||
name: Formatting Check (clang 9)
|
||||
runs-on: ubuntu-18.04
|
||||
container: ubuntu:18.04
|
||||
continue-on-error: true
|
||||
steps:
|
||||
|
||||
# Cache Rust stuff.
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: ~/.cargo/registry
|
||||
key: cargo-registry
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt update
|
||||
apt -y install \
|
||||
libpcre3 \
|
||||
libpcre3-dev \
|
||||
build-essential \
|
||||
autoconf \
|
||||
automake \
|
||||
git \
|
||||
libtool \
|
||||
libpcap-dev \
|
||||
libnet1-dev \
|
||||
libyaml-0-2 \
|
||||
libyaml-dev \
|
||||
libcap-ng-dev \
|
||||
libcap-ng0 \
|
||||
libmagic-dev \
|
||||
libnetfilter-queue-dev \
|
||||
libnetfilter-queue1 \
|
||||
libnfnetlink-dev \
|
||||
libnfnetlink0 \
|
||||
libhiredis-dev \
|
||||
libjansson-dev \
|
||||
libpython2.7 \
|
||||
make \
|
||||
python \
|
||||
rustc \
|
||||
software-properties-common \
|
||||
wget \
|
||||
zlib1g \
|
||||
zlib1g-dev
|
||||
- name: Install packages for clang-format 9
|
||||
run: |
|
||||
# no need to install full clang
|
||||
apt-get install -y clang-format-9
|
||||
- name: Install cbindgen
|
||||
run: cargo install --force --debug --version 0.14.1 cbindgen
|
||||
- run: echo "::add-path::$HOME/.cargo/bin"
|
||||
# Checking out the branch is not as simple as "checking out".
|
||||
#
|
||||
# In case master has any new commits since we branched off, github will
|
||||
# automatically add a "merge commit" from our branch to master and check
|
||||
# this out instead of the original last commit on the branch.
|
||||
#
|
||||
# This screws up git clang-format as it'll also format the "merge commit"
|
||||
# and essentially report any formatting issues in the "merge commit".
|
||||
# However, we really don't care about any of the new commits on master.
|
||||
#
|
||||
# There are supposed to be ways to use with/ref to fix that and while
|
||||
# they work perfectly well for pull requests within the forked repo, none
|
||||
# of the ones tried worked for pull requests from forks to the OISF repo.
|
||||
#
|
||||
# My patience simply ran too short to keep on looking. See follow-on
|
||||
# action to manually fix this up.
|
||||
- name: Checkout - might be merge commit!
|
||||
uses: actions/checkout@v1
|
||||
# Use last commit of branch, not potential merge commit!
|
||||
#
|
||||
# This works perfectly well on pull requests within forked repos, but
|
||||
# not for pull requests from forks to the OISF repo as the latter one
|
||||
# does not know the branch (from the forked repo). Argh.
|
||||
# with:
|
||||
# ref: ${{ github.head_ref }} # check out branch
|
||||
|
||||
# Manually ignore the merge commit as none of the with/ref things tried
|
||||
# with actions/checkout seemed to work for pull requests from forks into
|
||||
# the OISF repo.
|
||||
- name: Peel off potential merge request
|
||||
run: |
|
||||
# The "merge commit" has a distinct subject that we can look for.
|
||||
# If we find it, ignore it by checking out the "real last commit".
|
||||
#
|
||||
# Note, github uses the non-abbreviated sha for the commit subject.
|
||||
#
|
||||
# Commit history example in case github added merge, i.e. if you did
|
||||
# git log --pretty=oneline -2:
|
||||
# sha_1 Merge sha_2 into latest_sha_on_master
|
||||
# sha_2 This is the real last commit on branch
|
||||
echo "Last two commits on checkout:"
|
||||
git log --pretty=oneline -2
|
||||
last_commit_subject=$(git log --pretty=%s -1)
|
||||
second_last_commit_sha=$(git log --pretty=%H -2 |tail -1)
|
||||
echo "$last_commit_subject" | grep -e "^Merge $second_last_commit_sha into [0-9a-fA-F]*$" > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
# Last commit was a merge to master - ignore
|
||||
echo "Found github merge commit - checking out real last commit instead..."
|
||||
git checkout $second_last_commit_sha
|
||||
else
|
||||
echo "No github merge commit found"
|
||||
fi
|
||||
shell: bash {0}
|
||||
- run: git clone https://github.com/OISF/libhtp -b 0.5.x
|
||||
- run: ./autogen.sh
|
||||
- run: ./configure --enable-unittests
|
||||
- name: Check formatting
|
||||
run: |
|
||||
./scripts/clang-format.sh check-branch --diffstat --show-commits >> check_formatting_log.txt 2>&1
|
||||
rc=$?
|
||||
if [ $rc -eq 0 ]; then
|
||||
cat check_formatting_log.txt
|
||||
echo "Formatting is following code style guide"
|
||||
elif [ $rc -eq 1 ]; then
|
||||
# limit output as it might be a lot in the worst case
|
||||
tail -n 100 check_formatting_log.txt
|
||||
echo "::error ::Formatting is not following code style guide!"
|
||||
exit 1
|
||||
else
|
||||
cat check_formatting_log.txt
|
||||
# use last output line as error
|
||||
last_line=$(tail -n 1 check_formatting_log.txt)
|
||||
echo "::error ::$last_line"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash {0}
|
Loading…
Reference in New Issue