On 11/30/23 14:08, Eelco Chaudron wrote:
> 
> 
> On 30 Nov 2023, at 13:29, Simon Horman wrote:
> 
>> On Tue, Nov 28, 2023 at 06:50:59PM +0100, Eelco Chaudron wrote:
>>>
>>>
>>> On 27 Nov 2023, at 19:18, Ilya Maximets wrote:
>>>
>>>> On 11/27/23 18:36, Eelco Chaudron wrote:
>>
>> ...
>>
>>>>> diff --git a/.github/workflows/build-and-test.yml 
>>>>> b/.github/workflows/build-and-test.yml
>>>>> index 09654205e..d15105e7d 100644
>>>>> --- a/.github/workflows/build-and-test.yml
>>>>> +++ b/.github/workflows/build-and-test.yml
>>>>> @@ -223,6 +223,102 @@ jobs:
>>>>>          name: logs-linux-${{ join(matrix.*, '-') }}
>>>>>          path: logs.tgz
>>>>>
>>>>> +  build-clang-analyze:
>>>>> +    needs: build-dpdk
>>>>> +    env:
>>>>> +      dependencies: |
>>>>> +        automake bc clang-tools libbpf-dev libnuma-dev libpcap-dev \
>>>>> +        libunbound-dev libunwind-dev libssl-dev libtool llvm-dev \
>>>>> +        python3-unbound
>>>>> +      CC:   clang
>>>>> +      DPDK: dpdk
>>>>> +      CLANG_ANALYZE: true
>>>>> +    name: clang-analyze
>>>>> +    runs-on: ubuntu-22.04
>>>>> +    timeout-minutes: 30
>>>>> +
>>>>> +    steps:
>>>>> +    - name: checkout
>>>>> +      uses: actions/checkout@v3
>>>>> +
>>>>> +    - name: get base branch sha
>>>>> +      id: base_branch
>>>>> +      run: |
>>>>> +        if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
>>>>> +          echo "sha=$BASE_SHA" >> $GITHUB_OUTPUT
>>>>> +        else
>>>>> +          if [ "$EVENT_BEFORE" = 
>>>>> "0000000000000000000000000000000000000000" ]; then
>>>>> +            echo "sha=$DEFAULT_BRANCH" >> $GITHUB_OUTPUT
>>>>
>>>> How this is going ot work on patches for older branches?
>>>
>>> Good question, it’s not :( Took a little bit to figure out how to do this, 
>>> as we have no reference branch. The solution I came up with was to figure 
>>> out all parent branches, and use the most recent main/master or branch-x.x 
>>> one. So it looks like this:
>>>
>>>         if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
>>>           echo "sha=$BASE_SHA" >> $GITHUB_OUTPUT
>>>         else
>>>           if [ "$EVENT_BEFORE" = "0000000000000000000000000000000000000000" 
>>> ]; then
>>>             set sha=$(git log --simplify-by-decoration --decorate=full \
>>>                       --pretty=format:'%d' | \
>>>                       grep -oP 'refs/remotes/origin/\K[^, )]+' | \
>>>                       grep -m1 -E '^master$|^main$|^branch-[0-9]+\.[0-9]+$')
>>>             [ -z "$sha" ] && echo "sha=$DEFAULT_BRANCH" >> $GITHUB_OUTPUT \
>>>                           || echo "sha=$sha" >> $GITHUB_OUTPUT
>>>           else
>>>             echo "sha=$EVENT_BEFORE" >> $GITHUB_OUTPUT
>>>           fi
>>>         fi
>>
>> Hi Eelco,
>>
>> is this useful here?
>>
>>   git describe --all --no-abbrev --always \
>>     --match master --match main --match branch-[0-9].[0-9]*
> 
> Thanks Simon, I was looking for something like this, but I was not able to 
> get it with ‘git describe’, but now I see the match option is the key ;)
> 
> I guess it can now be changed to:
> 
>   git describe --all --no-abbrev --always \
>     --match master --match main --match branch-[0-9].[0-9]* | sed 's/.*\///'
> 
> Will send a v3 next week, waiting for some more potential feedback…

Maybe we could just make it simple and test only the last commit (HEAD~1)?
Unless the base is explicitly known.  It should be enough for a 0-day bot,
because it is testing patch sets incrementally, i.e. applying patches one
by one.

Also, the EVENT_BEFORE seems to not be documented anywhere, I wonder how
safe it is to rely on this variable.  Or did I miss the docs somewhere?
Would also be nice to know how this variable behaves on force-push with a
branch history rolling back as it might end up with spurious failures during
local feature development.  I also frequently use the same branches in my
fork during code review, force-pushing them frequently, so this process
may be affected.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to