mbox series

[ovs-dev,v3,0/2] GitHub Actions integration and Travis CI update.

Message ID 20201126121105.652264-1-i.maximets@ovn.org
Headers show
Series GitHub Actions integration and Travis CI update. | expand

Message

Ilya Maximets Nov. 26, 2020, 12:11 p.m. UTC
Version 2:
  - Added fix for dpdk-dir cache.  We should not use 'native' machine.
  - Enhanced generation of cache key.
  - ubuntu-latest changed to ubuntu-18.04 to avoid surprises.
  - Added patch to remove non-ARM builds from Travis CI.

Version 3:
  - Patch for 'native' machine type dropped as already applied.
  - Added Acked-by from Simon to the patch 'travis: Keep only arm64 builds.'.
  - Dropped Acked-by from the GHA patch due to changes below.

  - Fixed issues with artifacts uploading:
    1. Wildcarded path didn't work for testsuite files for unknown reason.
    2. Action crashed with unhandled exception while trying to read
       socket files.
    Both issues fixed by collecting and archiving all needed artifacts
    in a separate step and only uploading simple archive file.

  - Uploading of artifacts now triggered on workflow cancellation.
    This is required to debug cases where testsuite hangs and job timed
    out.  GitHub Actions cancels timed out jobs and this is not
    qualified as a failure.

  These changes allowed me to debug the issue with testsuite hang on
  branches 2.10 and 2.11:
    https://patchwork.ozlabs.org/project/openvswitch/list/?series=216862&state=*

Basically, here is the diff between v2 and v3:

# --- a/.github/workflows/build-and-test.yml
# +++ b/.github/workflows/build-and-test.yml
# @@ -155,15 +155,24 @@ jobs:
#          name: deb-packages
#          path: '/home/runner/work/ovs/*.deb'
#  
# +    - name: copy logs on failure
# +      if: failure() || cancelled()
# +      run: |
# +        # upload-artifact@v2 throws exceptions if it tries to upload socket
# +        # files and we could have some socket files in testsuite.dir.
# +        # Also, upload-artifact@v2 doesn't work well enough with wildcards.
# +        # So, we're just archiving everything here to avoid any issues.
# +        mkdir logs
# +        cp config.log ./logs/
# +        cp -r ./*/_build/sub/tests/testsuite.* ./logs/ || true
# +        tar -czvf logs.tgz logs/
# +
#      - name: upload logs on failure
# -      if: failure()
# +      if: failure() || cancelled()
#        uses: actions/upload-artifact@v2
#        with:
#          name: logs-linux-${{ join(matrix.*, '-') }}
# -        path: |
# -          config.log
# -          '*/_build/sub/tests/testsuite.log'
# -          '*/_build/sub/tests/testsuite.dir'
# +        path: logs.tgz
#  
#    build-osx:
#      env:
# ---

Backporting for earlier branches:
---------------------------------
This patch-set could be backported just fine with slight changes in
build matrix (kernel versions) down to branch-2.13.

For branches 2.12 and below I'll send separate patch-sets shortly.


Ilya Maximets (2):
  github: Add GitHub Actions workflow.
  travis: Keep only arm64 builds.

 {.travis => .ci}/linux-build.sh               |   0
 {.travis => .ci}/linux-prepare.sh             |  13 +-
 {.travis => .ci}/osx-build.sh                 |   0
 {.travis => .ci}/osx-prepare.sh               |   0
 .github/workflows/build-and-test.yml          | 203 ++++++++++++++++++
 .travis.yml                                   |  33 +--
 .../contributing/submitting-patches.rst       |   9 +-
 Makefile.am                                   |   9 +-
 NEWS                                          |   2 +
 README.rst                                    |   2 +
 10 files changed, 227 insertions(+), 44 deletions(-)
 rename {.travis => .ci}/linux-build.sh (100%)
 rename {.travis => .ci}/linux-prepare.sh (72%)
 rename {.travis => .ci}/osx-build.sh (100%)
 rename {.travis => .ci}/osx-prepare.sh (100%)
 create mode 100644 .github/workflows/build-and-test.yml

Comments

Ilya Maximets Nov. 26, 2020, 7:43 p.m. UTC | #1
On 11/26/20 1:11 PM, Ilya Maximets wrote:
> Version 2:
>   - Added fix for dpdk-dir cache.  We should not use 'native' machine.
>   - Enhanced generation of cache key.
>   - ubuntu-latest changed to ubuntu-18.04 to avoid surprises.
>   - Added patch to remove non-ARM builds from Travis CI.
> 
> Version 3:
>   - Patch for 'native' machine type dropped as already applied.
>   - Added Acked-by from Simon to the patch 'travis: Keep only arm64 builds.'.
>   - Dropped Acked-by from the GHA patch due to changes below.
> 
>   - Fixed issues with artifacts uploading:
>     1. Wildcarded path didn't work for testsuite files for unknown reason.
>     2. Action crashed with unhandled exception while trying to read
>        socket files.
>     Both issues fixed by collecting and archiving all needed artifacts
>     in a separate step and only uploading simple archive file.
> 
>   - Uploading of artifacts now triggered on workflow cancellation.
>     This is required to debug cases where testsuite hangs and job timed
>     out.  GitHub Actions cancels timed out jobs and this is not
>     qualified as a failure.
> 
>   These changes allowed me to debug the issue with testsuite hang on
>   branches 2.10 and 2.11:
>     https://patchwork.ozlabs.org/project/openvswitch/list/?series=216862&state=*
> 
> Basically, here is the diff between v2 and v3:
> 
> # --- a/.github/workflows/build-and-test.yml
> # +++ b/.github/workflows/build-and-test.yml
> # @@ -155,15 +155,24 @@ jobs:
> #          name: deb-packages
> #          path: '/home/runner/work/ovs/*.deb'
> #  
> # +    - name: copy logs on failure
> # +      if: failure() || cancelled()
> # +      run: |
> # +        # upload-artifact@v2 throws exceptions if it tries to upload socket
> # +        # files and we could have some socket files in testsuite.dir.
> # +        # Also, upload-artifact@v2 doesn't work well enough with wildcards.
> # +        # So, we're just archiving everything here to avoid any issues.
> # +        mkdir logs
> # +        cp config.log ./logs/
> # +        cp -r ./*/_build/sub/tests/testsuite.* ./logs/ || true
> # +        tar -czvf logs.tgz logs/
> # +
> #      - name: upload logs on failure
> # -      if: failure()
> # +      if: failure() || cancelled()
> #        uses: actions/upload-artifact@v2
> #        with:
> #          name: logs-linux-${{ join(matrix.*, '-') }}
> # -        path: |
> # -          config.log
> # -          '*/_build/sub/tests/testsuite.log'
> # -          '*/_build/sub/tests/testsuite.dir'
> # +        path: logs.tgz
> #  
> #    build-osx:
> #      env:
> # ---
> 
> Backporting for earlier branches:
> ---------------------------------
> This patch-set could be backported just fine with slight changes in
> build matrix (kernel versions) down to branch-2.13.
> 
> For branches 2.12 and below I'll send separate patch-sets shortly.
> 
> 
> Ilya Maximets (2):
>   github: Add GitHub Actions workflow.
>   travis: Keep only arm64 builds.
> 
>  {.travis => .ci}/linux-build.sh               |   0
>  {.travis => .ci}/linux-prepare.sh             |  13 +-
>  {.travis => .ci}/osx-build.sh                 |   0
>  {.travis => .ci}/osx-prepare.sh               |   0
>  .github/workflows/build-and-test.yml          | 203 ++++++++++++++++++
>  .travis.yml                                   |  33 +--
>  .../contributing/submitting-patches.rst       |   9 +-
>  Makefile.am                                   |   9 +-
>  NEWS                                          |   2 +
>  README.rst                                    |   2 +
>  10 files changed, 227 insertions(+), 44 deletions(-)
>  rename {.travis => .ci}/linux-build.sh (100%)
>  rename {.travis => .ci}/linux-prepare.sh (72%)
>  rename {.travis => .ci}/osx-build.sh (100%)
>  rename {.travis => .ci}/osx-prepare.sh (100%)
>  create mode 100644 .github/workflows/build-and-test.yml
> 

Applied to master and backported down to 2.13.

Best regards, Ilya Maximets.