Tarantool development patches archive
 help / color / mirror / Atom feed
* [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing
@ 2024-02-16 22:24 Maxim Kokryashkin via Tarantool-patches
  2024-02-21 15:21 ` Sergey Kaplun via Tarantool-patches
  0 siblings, 1 reply; 7+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2024-02-16 22:24 UTC (permalink / raw)
  To: tarantool-patches, skaplun, sergeyb

This patch makes use of reusable workflows from the
Tarantool repository, so now LuaJIT CI tests integration
in all relevant workflows.

Also, this patch disables MacOS testing for Tarantool
integration since those runs were made nightly in the
Tarantool repo.
---
Branch: https://github.com/tarantool/luajit/tree/fckxorg/integration-testing
 .github/workflows/exotic-builds-testing.yml |  34 +++++
 .github/workflows/tarantool-integration.yml |  35 ++++++
 .github/workflows/testing.yml               | 130 +++++++++++++++-----
 3 files changed, 169 insertions(+), 30 deletions(-)
 create mode 100644 .github/workflows/tarantool-integration.yml

diff --git a/.github/workflows/exotic-builds-testing.yml b/.github/workflows/exotic-builds-testing.yml
index a9ba5fd5..46a3c1ef 100644
--- a/.github/workflows/exotic-builds-testing.yml
+++ b/.github/workflows/exotic-builds-testing.yml
@@ -82,3 +82,37 @@ jobs:
       - name: test
         run: cmake --build . --parallel --target LuaJIT-test
         working-directory: ${{ env.BUILDDIR }}
+
+  test-exotic-tarantool:
+    strategy:
+      fail-fast: false
+      matrix:
+        ARCH: [ARM64, x86_64]
+        BUILDTYPE: [Debug, Release]
+        GC64: [ON, OFF]
+        OS: [Linux, macOS]
+        include:
+          - BUILDTYPE: Debug
+            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
+          - BUILDTYPE: Release
+            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
+        exclude:
+          - ARCH: ARM64
+            GC64: OFF
+          - OS: macOS
+            GC64: OFF
+    name: >
+      Tarantool
+      (${{ matrix.OS }}/${{ matrix.ARCH }})
+      ${{ matrix.BUILDTYPE }}
+      GC64:${{ matrix.GC64 }}
+    needs: test-exotic
+    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
+    with:
+      CMAKE_EXTRA_PARAMS: >
+        -G Ninja
+        ${{ matrix.CMAKEFLAGS }}
+        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
+      arch: ${{ matrix.ARCH }}
+      os: ${{ matrix.OS }}
+      revision: ${{ github.sha }}
diff --git a/.github/workflows/tarantool-integration.yml b/.github/workflows/tarantool-integration.yml
new file mode 100644
index 00000000..81abfb94
--- /dev/null
+++ b/.github/workflows/tarantool-integration.yml
@@ -0,0 +1,35 @@
+name: Tarantool integration testing
+
+on:
+  push:
+    branches-ignore:
+      - '**-notest'
+      - 'upstream-**'
+    tags-ignore:
+      - '**'
+
+concurrency:
+  # An update of a developer branch cancels the previously
+  # scheduled workflow run for this branch. However, the default
+  # branch, and long-term branch (tarantool/release/2.11,
+  # tarantool/release/2.10, etc) workflow runs are never canceled.
+  #
+  # We use a trick here: define the concurrency group as 'workflow
+  # run ID' + # 'workflow run attempt' because it is a unique
+  # combination for any run. So it effectively discards grouping.
+  #
+  # XXX: we cannot use `github.sha` as a unique identifier because
+  # pushing a tag may cancel a run that works on a branch push
+  # event.
+  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
+    && format('{0}-{1}', github.run_id, github.run_attempt)
+    || format('{0}-{1}', github.workflow, github.ref) }}
+  cancel-in-progress: true
+
+jobs:
+  test-tarantool-integration:
+    uses: tarantool/tarantool/.github/workflows/integration.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
index cb4ba57b..f9e38bf1 100644
--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -83,37 +83,107 @@ jobs:
         run: cmake --build . --parallel --target LuaJIT-test
         working-directory: ${{ env.BUILDDIR }}

+  test-tarantool-coverage:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/coverage.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}

-  test-tarantool:
-    strategy:
-      fail-fast: false
-      matrix:
-        ARCH: [ARM64, x86_64]
-        BUILDTYPE: [Debug, Release]
-        GC64: [ON, OFF]
-        OS: [Linux, macOS]
-        include:
-          - BUILDTYPE: Debug
-            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
-          - BUILDTYPE: Release
-            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
-        exclude:
-          - ARCH: ARM64
-            GC64: OFF
-          - OS: macOS
-            GC64: OFF
-    name: >
-      Tarantool
-      (${{ matrix.OS }}/${{ matrix.ARCH }})
-      ${{ matrix.BUILDTYPE }}
-      GC64:${{ matrix.GC64 }}
+  test-tarantool-debug:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/debug.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-debug_aarch64:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/debug_aarch64.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-debug_asan_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/debug_asan_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-default_gcc_centos_7:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/default_gcc_centos_7.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-memtx_allocator_based_on_malloc:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/memtx_allocator_based_on_malloc.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-out_of_source:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/out_of_source.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-perf_micro:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/perf_micro.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_asan_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_asan_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_lto:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_lto.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_lto_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_lto_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-static_build:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/static_build.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-static_build_cmake_linux:
     needs: test-luajit
-    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
+    uses: tarantool/tarantool/.github/workflows/static_build_cmake_linux.yml@master
     with:
-      CMAKE_EXTRA_PARAMS: >
-        -G Ninja
-        ${{ matrix.CMAKEFLAGS }}
-        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
-      arch: ${{ matrix.ARCH }}
-      os: ${{ matrix.OS }}
+      submodule: luajit
       revision: ${{ github.sha }}
--
2.43.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing
  2024-02-16 22:24 [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing Maxim Kokryashkin via Tarantool-patches
@ 2024-02-21 15:21 ` Sergey Kaplun via Tarantool-patches
  0 siblings, 0 replies; 7+ messages in thread
From: Sergey Kaplun via Tarantool-patches @ 2024-02-21 15:21 UTC (permalink / raw)
  To: Maxim Kokryashkin; +Cc: tarantool-patches

Hi, Maxim!
Thanks for the patch!
Please consider my questions below.

On 17.02.24, Maxim Kokryashkin wrote:
> This patch makes use of reusable workflows from the
> Tarantool repository, so now LuaJIT CI tests integration
> in all relevant workflows.
> 
> Also, this patch disables MacOS testing for Tarantool
> integration since those runs were made nightly in the
> Tarantool repo.
> ---

I see that PR [1] isn't backported to release/2.11 and release/3.0
branches, so newly introduced workflow won't work on them after
backporting to the corresponding branches.

How should we track new workflows to be added in the Tarantool's repo?
Or if some workflow will be deleted (except a red CI of cause:))?

Do all workflows run LuaJIT-test before Tarantool tests?
Is there a way to skip LuaJIT tests for workflows that duplicate
luajit-integration.yml?

> Branch: https://github.com/tarantool/luajit/tree/fckxorg/integration-testing
>  .github/workflows/exotic-builds-testing.yml |  34 +++++
>  .github/workflows/tarantool-integration.yml |  35 ++++++
>  .github/workflows/testing.yml               | 130 +++++++++++++++-----
>  3 files changed, 169 insertions(+), 30 deletions(-)
>  create mode 100644 .github/workflows/tarantool-integration.yml
> 
> diff --git a/.github/workflows/exotic-builds-testing.yml b/.github/workflows/exotic-builds-testing.yml
> index a9ba5fd5..46a3c1ef 100644
> --- a/.github/workflows/exotic-builds-testing.yml
> +++ b/.github/workflows/exotic-builds-testing.yml
> @@ -82,3 +82,37 @@ jobs:
>        - name: test
>          run: cmake --build . --parallel --target LuaJIT-test
>          working-directory: ${{ env.BUILDDIR }}
> +

Exotic builds is about **LuaJIT** exotic build. If we want
exotic-tarantool integration or whatever we should use separate
workflow. Also, it may be introduced as a separate job in the
tarantool-integration workflow. Also, it should depends on
luajit-testing, so it still should be placed back in the <testing.yml>.

> +  test-exotic-tarantool:
> +    strategy:
> +      fail-fast: false
> +      matrix:
> +        ARCH: [ARM64, x86_64]
> +        BUILDTYPE: [Debug, Release]
> +        GC64: [ON, OFF]
> +        OS: [Linux, macOS]
> +        include:
> +          - BUILDTYPE: Debug
> +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> +          - BUILDTYPE: Release
> +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> +        exclude:
> +          - ARCH: ARM64
> +            GC64: OFF
> +          - OS: macOS
> +            GC64: OFF
> +    name: >
> +      Tarantool
> +      (${{ matrix.OS }}/${{ matrix.ARCH }})
> +      ${{ matrix.BUILDTYPE }}
> +      GC64:${{ matrix.GC64 }}
> +    needs: test-exotic
> +    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master

Please, add the comment that only LuaJIT-tests are running in this
workflow.

> +    with:
> +      CMAKE_EXTRA_PARAMS: >
> +        -G Ninja
> +        ${{ matrix.CMAKEFLAGS }}
> +        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> +      arch: ${{ matrix.ARCH }}
> +      os: ${{ matrix.OS }}
> +      revision: ${{ github.sha }}
> diff --git a/.github/workflows/tarantool-integration.yml b/.github/workflows/tarantool-integration.yml
> new file mode 100644
> index 00000000..81abfb94
> --- /dev/null
> +++ b/.github/workflows/tarantool-integration.yml

The name of the workflow is a little bit misleading -- it is not
integration with Tarantool, but integrational testing of Tarantool with
connectors, etc.:).
Here comes the question: Why do we need to separate this job from
others? I suppose dependency on LuaJIT tests is good here and shouldn't
be omitted -- if LuaJIT tests fail, there is no reason to run
integrational tests of Tarantool with its ecosystem.

> @@ -0,0 +1,35 @@
> +name: Tarantool integration testing
> +
> +on:
> +  push:
> +    branches-ignore:
> +      - '**-notest'
> +      - 'upstream-**'
> +    tags-ignore:
> +      - '**'
> +
> +concurrency:

<snipped>

> +  cancel-in-progress: true
> +
> +jobs:
> +  test-tarantool-integration:
> +    uses: tarantool/tarantool/.github/workflows/integration.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
> index cb4ba57b..f9e38bf1 100644
> --- a/.github/workflows/testing.yml
> +++ b/.github/workflows/testing.yml
> @@ -83,37 +83,107 @@ jobs:
>          run: cmake --build . --parallel --target LuaJIT-test
>          working-directory: ${{ env.BUILDDIR }}
> 
> +  test-tarantool-coverage:

Please add a comment explaining why this job is included (IINM, it
rather long to show some corner cases of our tests for profilers).

> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/coverage.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> 
> -  test-tarantool:
> -    strategy:
> -      fail-fast: false
> -      matrix:
> -        ARCH: [ARM64, x86_64]
> -        BUILDTYPE: [Debug, Release]
> -        GC64: [ON, OFF]
> -        OS: [Linux, macOS]
> -        include:
> -          - BUILDTYPE: Debug
> -            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> -          - BUILDTYPE: Release
> -            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> -        exclude:
> -          - ARCH: ARM64
> -            GC64: OFF
> -          - OS: macOS
> -            GC64: OFF
> -    name: >
> -      Tarantool
> -      (${{ matrix.OS }}/${{ matrix.ARCH }})
> -      ${{ matrix.BUILDTYPE }}
> -      GC64:${{ matrix.GC64 }}
> +  test-tarantool-debug:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}

Can we use a matrix of jobs instead to avoid copy-pasting below?

> +
> +  test-tarantool-debug_aarch64:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug_aarch64.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-debug_asan_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug_asan_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-default_gcc_centos_7:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/default_gcc_centos_7.yml@master

Please add a comment about ancient compilers we want to check here.

> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-memtx_allocator_based_on_malloc:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/memtx_allocator_based_on_malloc.yml@master

Why do we need this workflow?

> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-out_of_source:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/out_of_source.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-perf_micro:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/perf_micro.yml@master

Why do we need this workflow? IINM, it includes only C perf tests that
unrelated to Lua world of Tarantool.

> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_asan_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_asan_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_lto:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_lto.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_lto_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_lto_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-static_build:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/static_build.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-static_build_cmake_linux:
>      needs: test-luajit
> -    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> +    uses: tarantool/tarantool/.github/workflows/static_build_cmake_linux.yml@master
>      with:
> -      CMAKE_EXTRA_PARAMS: >
> -        -G Ninja
> -        ${{ matrix.CMAKEFLAGS }}
> -        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> -      arch: ${{ matrix.ARCH }}
> -      os: ${{ matrix.OS }}
> +      submodule: luajit
>        revision: ${{ github.sha }}

There is the list of all Tarantool workflows:
* codeql.yml
* coverage.yml - used
* coverity.yml
* debug.yml - used
* debug_aarch64.yml - used
* debug_asan_clang.yml - used
* default_gcc_centos_7.yml - used
* freebsd.yml
* fuzzing.yml
* integration.yml - used
* jepsen-cluster-txm.yml
* jepsen-cluster.yml
* jepsen-single-instance-txm.yml
* jepsen-single-instance.yml
* lango-stale-reviews.yml
* lint.yml
* luajit-integration.yml - used
* memtx_allocator_based_on_malloc.yml - used
* osx.yml
* out_of_source.yml
* packaging.yml
* perf_cbench.yml
* perf_linkbench_ssd.yml
* perf_micro.yml
* perf_nosqlbench_hash.yml
* perf_nosqlbench_tree.yml
* perf_sysbench.yml
* perf_tpcc.yml
* perf_tpch.yml
* perf_ycsb_hash.yml
* perf_ycsb_tree.yml
* publish-module-api-doc.yaml
* release.yml - used
* release_asan_clang.yml - used
* release_clang.yml - used
* release_lto.yml - used
* release_lto_clang.yml - used
* reusable_build.yml
* source.yml
* static_build.yml - used
* static_build_cmake_linux.yml - used
* static_build_pack_test_deploy.yml
* submodule_update.yml

As you can see, LuaJIT-integration is used only 13/45. It will be nice
to have the table in the commit message with the following format:
workflow name (wo .yml) | used (+/-) | Reason

> --
> 2.43.0
> 

[1]: https://github.com/tarantool/tarantool/pull/9560

-- 
Best regards,
Sergey Kaplun

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing
  2024-03-04 14:05 ` Sergey Bronnikov via Tarantool-patches
@ 2024-03-06 20:40   ` Maxim Kokryashkin via Tarantool-patches
  0 siblings, 0 replies; 7+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2024-03-06 20:40 UTC (permalink / raw)
  To: Sergey Bronnikov; +Cc: Maxim Kokryashkin, tarantool-patches

Hi, Sergey!
Thanks for the review!
Consider my answers below.
On Mon, Mar 04, 2024 at 05:05:31PM +0300, Sergey Bronnikov wrote:
> Hi, Max
>
> thanks for updates. LGTM with minor comments below.
>
>
> On 3/1/24 11:25, Maxim Kokryashkin wrote:
> > This patch makes use of reusable workflows from the
> > Tarantool repository, so now LuaJIT CI tests integration
> > in all relevant workflows.
> >
> > Also, this patch disables MacOS testing for Tarantool
> > integration since those runs were made nightly in the
> > Tarantool repo.
> >
> > As noted in the documentation[1], it is impossible for a single
> > workflow call tree to include more than 20 workflows. To
> > overcome this limitation, workflows are started in a bunch of
> > separate files. This makes it impossible to depend on LuaJIT-only
> > jobs for integration workflow since it is impossible to make
> > cross-dependencies between workflow files.
> >
> > The name of a callee workflow cannot be substituted using a
> > matrix[2], so workflow calls are copied and pasted instead.
> >
> > Table below shows which workflows are enabled and why.
> >
> > Workflow name                   |+/-| Reason
> > -----------------------------------------------------------------
> > codeql                          | - | Not relevant to LuaJIT.
> > coverage                        | + | Long tests for profilers.
> > coverity                        | - | Cron workflow.
> > debug                           | + | Tarantool debug build.
> > debug_aarch64                   | + | Tarantool debug build.
> > debug_asan_clang                | + | Tarantool debug build.
> > default_gcc_centos_7            | + | Ancient gcc build.
> better: "gcc version". Fteel free to ignore.
Fixed.
> > freebsd                         | - | Nightly build.
> > fuzzing                         | - | Impossible to bump LuaJIT.
> > integration                     | + | Tarantool ecosystem.
> > jepsen-cluster-txm              | - | Manual workflow.
> > jepsen-cluster                  | - | Manual workflow.
> > jepsen-single-instance-txm      | - | Cron workflow.
> > jepsen-single-instance          | - | Cron workflow.
> > lango-stale-reviews             | - | Cron workflow.
> > lint                            | - | LuaJIT has its own lint.
> > luajit-integration              | + | Exotic LuaJIT options.
> > memtx_allocator_based_on_malloc | + | Not relevant to LuaJIT.
> typo: s/+/-/
Fixed.
> > osx                             | - | Nightly build.
> > out_of_source                   | - | Not relevent to LuaJIT.
> > packaging                       | - | No LuaJIT-relevant variety.
> > perf_cbench                     | - | Not enabled for PRs.
> > perf_linkbench_ssd              | - | Not enabled for PRs.
> > perf_micro                      | - | Not relevant to LuaJIT.
> > perf_nosqlbench_hash            | - | Not enabled for PRs.
> > perf_nosqlbench_tree            | - | Not enabled for PRs.
> > perf_sysbench                   | - | Not enabled for PRs.
> > perf_tpcc                       | - | Not enabled for PRs.
> > perf_tpch                       | - | Not enabled for PRs.
> > perf_ycsb_hash                  | - | Not enabled for PRs.
> > perf_ycsb_tree                  | - | Not enabled for PRs.
> > publish-module-api-doc          | - | No Doxygen in LuaJIT.
> > release                         | + | Tarantool release build.
> > release_asan_clang              | + | Tarantool release build.
> > release_clang                   | + | Tarantool release build.
> > release_lto                     | + | Tarantool release build.
> > release_lto_clang               | + | Tarantool release build.
> > reusable_build                  | - | Utility for integration.
> > source                          | - | Not enabled for PRs.
> > static_build                    | + | Tarantool static build.
> > static_build_cmake_linux        | + | Tarantool static build.
> > static_build_pack_test_deploy   | - | Utility for packaging.
>
> I would left "static_build" [1] and skip "static_build_cmake_linux" [2].
>
> I don't see a big difference for static_build and static_build_cmake_linux,
> build commands are the same,
>
> both workflows are running on ubuntu-20.04-self-hosted. The difference is in
> builddir location:
>
> first is in source build, the second one is out of source build, see [4].
Fixed.
>
>
> 1. https://github.com/tarantool/tarantool/blob/f267af24058c7cb49bf2a6403b1f3c51b41d22ae/.test.mk#L165-L171
>
> 2. https://github.com/tarantool/tarantool/blob/f267af24058c7cb49bf2a6403b1f3c51b41d22ae/.github/workflows/static_build_cmake_linux.yml#L1
>
> 4. https://github.com/tarantool/tarantool/blob/f267af24058c7cb49bf2a6403b1f3c51b41d22ae/.test.mk#L156-L171
>
> > submodule_update                | - | Not enabled for PRs.
> >
> > [1]: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
> > [2]: https://github.com/orgs/community/discussions/45342#discussioncomment-4779360
> > ---
> > Branch: https://github.com/tarantool/luajit/tree/fckxorg/integration-testing
> >
> >   .github/workflows/exotic-tarantool.yml    |  62 ++++++++++++
> >   .github/workflows/tarantool-ecosystem.yml |  35 +++++++
> >   .github/workflows/testing.yml             | 116 ++++++++++++++++------
> >   3 files changed, 183 insertions(+), 30 deletions(-)
> >   create mode 100644 .github/workflows/exotic-tarantool.yml
> >   create mode 100644 .github/workflows/tarantool-ecosystem.yml
> >
> > diff --git a/.github/workflows/exotic-tarantool.yml b/.github/workflows/exotic-tarantool.yml
> > new file mode 100644
> > index 00000000..be55291a
> > --- /dev/null
> > +++ b/.github/workflows/exotic-tarantool.yml
> > @@ -0,0 +1,62 @@
> > +name: "Exotic Tarantool builds testing"
> > +
> > +on:
> > +  push:
> > +    branches-ignore:
> > +      - '**-notest'
> > +      - 'upstream-**'
> > +    tags-ignore:
> > +      - '**'
> > +
> > +concurrency:
> > +  # An update of a developer branch cancels the previously
> > +  # scheduled workflow run for this branch. However, the default
> > +  # branch, and long-term branch (tarantool/release/2.11,
> > +  # tarantool/release/2.10, etc) workflow runs are never canceled.
> > +  #
> > +  # We use a trick here: define the concurrency group as 'workflow
> > +  # run ID' + # 'workflow run attempt' because it is a unique
> > +  # combination for any run. So it effectively discards grouping.
> > +  #
> > +  # XXX: we cannot use `github.sha` as a unique identifier because
> > +  # pushing a tag may cancel a run that works on a branch push
> > +  # event.
> > +  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
> > +    && format('{0}-{1}', github.run_id, github.run_attempt)
> > +    || format('{0}-{1}', github.workflow, github.ref) }}
> > +  cancel-in-progress: true
> > +
> > +jobs:
> > +  test-exotic-tarantool:
> > +    strategy:
> > +      fail-fast: false
> > +      matrix:
> > +        ARCH: [ARM64, x86_64]
> > +        BUILDTYPE: [Debug, Release]
> > +        GC64: [ON, OFF]
> > +        OS: [Linux, macOS]
> > +        include:
> > +          - BUILDTYPE: Debug
> > +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> > +          - BUILDTYPE: Release
> > +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> > +        exclude:
> > +          - ARCH: ARM64
> > +            GC64: OFF
> > +          - OS: macOS
> > +            GC64: OFF
> > +    name: >
> > +      Tarantool
> > +      (${{ matrix.OS }}/${{ matrix.ARCH }})
> > +      ${{ matrix.BUILDTYPE }}
> > +      GC64:${{ matrix.GC64 }}
> > +    # XXX: Only LuaJIT-tests are running in this workflow.
> > +    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> > +    with:
> > +      CMAKE_EXTRA_PARAMS: >
> > +        -G Ninja
> > +        ${{ matrix.CMAKEFLAGS }}
> > +        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> > +      arch: ${{ matrix.ARCH }}
> > +      os: ${{ matrix.OS }}
> > +      revision: ${{ github.sha }}
> > diff --git a/.github/workflows/tarantool-ecosystem.yml b/.github/workflows/tarantool-ecosystem.yml
> > new file mode 100644
> > index 00000000..82a47fe1
> > --- /dev/null
> > +++ b/.github/workflows/tarantool-ecosystem.yml
> > @@ -0,0 +1,35 @@
> > +name: Tarantool ecosystem integration testing
> > +
> > +on:
> > +  push:
> > +    branches-ignore:
> > +      - '**-notest'
> > +      - 'upstream-**'
> > +    tags-ignore:
> > +      - '**'
> > +
> > +concurrency:
> > +  # An update of a developer branch cancels the previously
> > +  # scheduled workflow run for this branch. However, the default
> > +  # branch, and long-term branch (tarantool/release/2.11,
> > +  # tarantool/release/2.10, etc) workflow runs are never canceled.
> > +  #
> > +  # We use a trick here: define the concurrency group as 'workflow
> > +  # run ID' + # 'workflow run attempt' because it is a unique
> > +  # combination for any run. So it effectively discards grouping.
> > +  #
> > +  # XXX: we cannot use `github.sha` as a unique identifier because
> > +  # pushing a tag may cancel a run that works on a branch push
> > +  # event.
> > +  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
> > +    && format('{0}-{1}', github.run_id, github.run_attempt)
> > +    || format('{0}-{1}', github.workflow, github.ref) }}
> > +  cancel-in-progress: true
> > +
> > +jobs:
> > +  test-tarantool-integration:
> > +    uses: tarantool/tarantool/.github/workflows/integration.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
> > index cb4ba57b..7bd527be 100644
> > --- a/.github/workflows/testing.yml
> > +++ b/.github/workflows/testing.yml
> > @@ -83,37 +83,93 @@ jobs:
> >           run: cmake --build . --parallel --target LuaJIT-test
> >           working-directory: ${{ env.BUILDDIR }}
> >
> > +  test-tarantool-coverage:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/coverage.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> >
> > -  test-tarantool:
> > -    strategy:
> > -      fail-fast: false
> > -      matrix:
> > -        ARCH: [ARM64, x86_64]
> > -        BUILDTYPE: [Debug, Release]
> > -        GC64: [ON, OFF]
> > -        OS: [Linux, macOS]
> > -        include:
> > -          - BUILDTYPE: Debug
> > -            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> > -          - BUILDTYPE: Release
> > -            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> > -        exclude:
> > -          - ARCH: ARM64
> > -            GC64: OFF
> > -          - OS: macOS
> > -            GC64: OFF
> > -    name: >
> > -      Tarantool
> > -      (${{ matrix.OS }}/${{ matrix.ARCH }})
> > -      ${{ matrix.BUILDTYPE }}
> > -      GC64:${{ matrix.GC64 }}
> > +  test-tarantool-debug:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/debug.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-debug_aarch64:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/debug_aarch64.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-debug_asan_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/debug_asan_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-default_gcc_centos_7:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/default_gcc_centos_7.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-out_of_source:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/out_of_source.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_asan_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_asan_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_lto:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_lto.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_lto_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_lto_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-static_build:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/static_build.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-static_build_cmake_linux:
> >       needs: test-luajit
> > -    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> > +    uses: tarantool/tarantool/.github/workflows/static_build_cmake_linux.yml@master
> >       with:
> > -      CMAKE_EXTRA_PARAMS: >
> > -        -G Ninja
> > -        ${{ matrix.CMAKEFLAGS }}
> > -        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> > -      arch: ${{ matrix.ARCH }}
> > -      os: ${{ matrix.OS }}
> > +      submodule: luajit
> >         revision: ${{ github.sha }}
> > --
> > 2.43.0
> >

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing
  2024-03-04 16:45 ` Sergey Kaplun via Tarantool-patches
@ 2024-03-06 20:34   ` Maxim Kokryashkin via Tarantool-patches
  0 siblings, 0 replies; 7+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2024-03-06 20:34 UTC (permalink / raw)
  To: Sergey Kaplun; +Cc: Maxim Kokryashkin, tarantool-patches

Hi, Sergey!
Thanks for the review!

On Mon, Mar 04, 2024 at 07:45:14PM +0300, Sergey Kaplun wrote:
> Hi, Maxim!
> Thanks for the patch!
> Please consider my comments below.
>
> On 01.03.24, Maxim Kokryashkin wrote:
> > This patch makes use of reusable workflows from the
> > Tarantool repository, so now LuaJIT CI tests integration
> > in all relevant workflows.
> >
> > Also, this patch disables MacOS testing for Tarantool
> > integration since those runs were made nightly in the
> > Tarantool repo.
> >
> > As noted in the documentation[1], it is impossible for a single
>
> Typo: s/[1]/ [1]/
Fixed.
>
> > workflow call tree to include more than 20 workflows. To
> > overcome this limitation, workflows are started in a bunch of
> > separate files. This makes it impossible to depend on LuaJIT-only
> > jobs for integration workflow since it is impossible to make
> > cross-dependencies between workflow files.
> >
> > The name of a callee workflow cannot be substituted using a
> > matrix[2], so workflow calls are copied and pasted instead.
>
> Please add the corresponding comment to the workflow file too.
>
> Typo: s/[2]/ [2]/
Fixed.
>
> >
> > Table below shows which workflows are enabled and why.
> >
> > Workflow name                   |+/-| Reason
> > -----------------------------------------------------------------
>
> <snipped>
>
> > default_gcc_centos_7            | + | Ancient gcc build.
>
> Agree with Sergey here -- "gcc version (7)" looks better.
Fixed.
>
> <snipped>
>
> > luajit-integration              | + | Exotic LuaJIT options.
> > memtx_allocator_based_on_malloc | + | Not relevant to LuaJIT.
>
> Typo: s/+/-/
Fixed.
>
> > osx                             | - | Nightly build.
> > out_of_source                   | - | Not relevent to LuaJIT.
>
> I don't agree here. We want to check that our tests work in OOS builds
> too. It may be an issue for some libraries to be built or for some
> tests that use generated files, etc.
Enabled.
>
> If we enable this, we can skip static_build_cmake_linux workflow, as
> Sergey suggested (since it is the same as static_build, except it is OOS
> build). But I'm not against too leave that workflow as well.
Disabled static_build_cmake_linux.
>
> Also, looks like it is used, see below [*].
>
> <snipped>
>
> > static_build                    | + | Tarantool static build.
> > static_build_cmake_linux        | + | Tarantool static build.
>
> <snipped>
>
> > [1]: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
> > [2]: https://github.com/orgs/community/discussions/45342#discussioncomment-4779360
> > ---
> > Branch: https://github.com/tarantool/luajit/tree/fckxorg/integration-testing
> >
> >  .github/workflows/exotic-tarantool.yml    |  62 ++++++++++++
> >  .github/workflows/tarantool-ecosystem.yml |  35 +++++++
> >  .github/workflows/testing.yml             | 116 ++++++++++++++++------
> >  3 files changed, 183 insertions(+), 30 deletions(-)
> >  create mode 100644 .github/workflows/exotic-tarantool.yml
> >  create mode 100644 .github/workflows/tarantool-ecosystem.yml
> >
> > diff --git a/.github/workflows/exotic-tarantool.yml b/.github/workflows/exotic-tarantool.yml
> > new file mode 100644
> > index 00000000..be55291a
> > --- /dev/null
> > +++ b/.github/workflows/exotic-tarantool.yml
>
> Minor: I suggest using tarantool-exoting to be consistent with
> tarantool-ecosystem. Within this rename, don't forget to rename the job
> for consistency.
Renamed.
>
> OTOH, maybe it is better to name this workflow like the
> tarantool-integration or luajit-integration to show that we run
> **LuaJIT** tests under Tarantool. What name do you like the most?
I would leave it as it is, since the last time you've mentioned
that `tarantool-integration` is misleading. The other option
of name `luajit-integration` is even more inconsistent with the
contents of the other workflows. Honestly, this separation of
workflows is absolutely artificial and exists only because of
GitHub actions limitations.
>
> <snipped>
>
> > +jobs:
> > +  test-exotic-tarantool:
>
> Why do you separate this job from the testing.yml workflow? Also, it
> should depend on luajit-testing, so it still should be placed in the
> <testing.yml> shouldn't it? If not, please add a rationale in the
> comment.

As I've said in the commit message, it is impossible for workflow call
tree to have more than 20 nodes, so moving those to the testing.yml is
pointless. I've added the specific mention of this workflow to the
commit message and a comment here.
>
> > +    strategy:
> > +      fail-fast: false
> > +      matrix:
> > +        ARCH: [ARM64, x86_64]
> > +        BUILDTYPE: [Debug, Release]
> > +        GC64: [ON, OFF]
> > +        OS: [Linux, macOS]
> > +        include:
> > +          - BUILDTYPE: Debug
> > +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> > +          - BUILDTYPE: Release
> > +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> > +        exclude:
> > +          - ARCH: ARM64
> > +            GC64: OFF
> > +          - OS: macOS
> > +            GC64: OFF
> > +    name: >
> > +      Tarantool
> > +      (${{ matrix.OS }}/${{ matrix.ARCH }})
> > +      ${{ matrix.BUILDTYPE }}
> > +      GC64:${{ matrix.GC64 }}
> > +    # XXX: Only LuaJIT-tests are running in this workflow.
>
> Side note: What do you think about adding the FreeBSD runs to that
> workflow?
> It doesn't cost much since LuaJIT-tests are tiny. And we already run
> such tests for OSX.
It's a quite rare situation for them to fail exclusively. Also, freebsd
builds are nightly, and because of that there is no integration support
for them on the Tarantool side, as we discussed with Igor and Yaroslav.
I think, we can add it later, if there will be need for that, but I
really doubt it.
>
> > +    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> > +    with:
> > +      CMAKE_EXTRA_PARAMS: >
> > +        -G Ninja
> > +        ${{ matrix.CMAKEFLAGS }}
> > +        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> > +      arch: ${{ matrix.ARCH }}
> > +      os: ${{ matrix.OS }}
> > +      revision: ${{ github.sha }}
> > diff --git a/.github/workflows/tarantool-ecosystem.yml b/.github/workflows/tarantool-ecosystem.yml
> > new file mode 100644
> > index 00000000..82a47fe1
> > --- /dev/null
> > +++ b/.github/workflows/tarantool-ecosystem.yml
>
> <snipped>
>
> > +jobs:
> > +  test-tarantool-integration:
> > +    uses: tarantool/tarantool/.github/workflows/integration.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
>
> Do I understand correctly that this workflow is separated from testing
> integration list since it has reached the limit mentioned above (20
> workflows)? If so, please mention this here as a comment and in the
> testing.yml too.
Yep, you're right. Added a comment.
>
> > +
>
> Nit: Excess empty line.
Removed.
>
> > diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
> > index cb4ba57b..7bd527be 100644
> > --- a/.github/workflows/testing.yml
> > +++ b/.github/workflows/testing.yml
> > @@ -83,37 +83,93 @@ jobs:
> >          run: cmake --build . --parallel --target LuaJIT-test
> >          working-directory: ${{ env.BUILDDIR }}
> >
> > +  test-tarantool-coverage:
>
> Maybe it is better to add names for better readablility.
> Something like Tarantool intergration coverage, here and below.
Do we really need to repeat the name of the job once again
but without dashes? Ignoring.
>
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/coverage.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
>
> <snipped>
>
> > +  test-tarantool-debug:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/debug.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-debug_aarch64:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/debug_aarch64.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-debug_asan_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/debug_asan_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-default_gcc_centos_7:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/default_gcc_centos_7.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-out_of_source:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/out_of_source.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
>
> [*] This workflow is mentioned as not used.
Now it is mentioned as used.
>
> > +
> > +  test-tarantool-release:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_asan_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_asan_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_lto:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_lto.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-release_lto_clang:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/release_lto_clang.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-static_build:
> > +    needs: test-luajit
> > +    uses: tarantool/tarantool/.github/workflows/static_build.yml@master
> > +    with:
> > +      submodule: luajit
> > +      revision: ${{ github.sha }}
> > +
> > +  test-tarantool-static_build_cmake_linux:
> >      needs: test-luajit
> > -    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> > +    uses: tarantool/tarantool/.github/workflows/static_build_cmake_linux.yml@master
> >      with:
> > -      CMAKE_EXTRA_PARAMS: >
> > -        -G Ninja
> > -        ${{ matrix.CMAKEFLAGS }}
> > -        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> > -      arch: ${{ matrix.ARCH }}
> > -      os: ${{ matrix.OS }}
> > +      submodule: luajit
> >        revision: ${{ github.sha }}
> > --
> > 2.43.0
> >
>
> --
> Best regards,
> Sergey Kaplun

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing
  2024-03-01  8:25 Maxim Kokryashkin via Tarantool-patches
  2024-03-04 14:05 ` Sergey Bronnikov via Tarantool-patches
@ 2024-03-04 16:45 ` Sergey Kaplun via Tarantool-patches
  2024-03-06 20:34   ` Maxim Kokryashkin via Tarantool-patches
  1 sibling, 1 reply; 7+ messages in thread
From: Sergey Kaplun via Tarantool-patches @ 2024-03-04 16:45 UTC (permalink / raw)
  To: Maxim Kokryashkin; +Cc: tarantool-patches

Hi, Maxim!
Thanks for the patch!
Please consider my comments below.

On 01.03.24, Maxim Kokryashkin wrote:
> This patch makes use of reusable workflows from the
> Tarantool repository, so now LuaJIT CI tests integration
> in all relevant workflows.
> 
> Also, this patch disables MacOS testing for Tarantool
> integration since those runs were made nightly in the
> Tarantool repo.
> 
> As noted in the documentation[1], it is impossible for a single

Typo: s/[1]/ [1]/

> workflow call tree to include more than 20 workflows. To
> overcome this limitation, workflows are started in a bunch of
> separate files. This makes it impossible to depend on LuaJIT-only
> jobs for integration workflow since it is impossible to make
> cross-dependencies between workflow files.
> 
> The name of a callee workflow cannot be substituted using a
> matrix[2], so workflow calls are copied and pasted instead.

Please add the corresponding comment to the workflow file too.

Typo: s/[2]/ [2]/

> 
> Table below shows which workflows are enabled and why.
> 
> Workflow name                   |+/-| Reason
> -----------------------------------------------------------------

<snipped>

> default_gcc_centos_7            | + | Ancient gcc build.

Agree with Sergey here -- "gcc version (7)" looks better.

<snipped>

> luajit-integration              | + | Exotic LuaJIT options.
> memtx_allocator_based_on_malloc | + | Not relevant to LuaJIT.

Typo: s/+/-/

> osx                             | - | Nightly build.
> out_of_source                   | - | Not relevent to LuaJIT.

I don't agree here. We want to check that our tests work in OOS builds
too. It may be an issue for some libraries to be built or for some
tests that use generated files, etc.

If we enable this, we can skip static_build_cmake_linux workflow, as
Sergey suggested (since it is the same as static_build, except it is OOS
build). But I'm not against too leave that workflow as well.

Also, looks like it is used, see below [*].

<snipped>

> static_build                    | + | Tarantool static build.
> static_build_cmake_linux        | + | Tarantool static build.

<snipped>

> [1]: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
> [2]: https://github.com/orgs/community/discussions/45342#discussioncomment-4779360
> ---
> Branch: https://github.com/tarantool/luajit/tree/fckxorg/integration-testing
> 
>  .github/workflows/exotic-tarantool.yml    |  62 ++++++++++++
>  .github/workflows/tarantool-ecosystem.yml |  35 +++++++
>  .github/workflows/testing.yml             | 116 ++++++++++++++++------
>  3 files changed, 183 insertions(+), 30 deletions(-)
>  create mode 100644 .github/workflows/exotic-tarantool.yml
>  create mode 100644 .github/workflows/tarantool-ecosystem.yml
> 
> diff --git a/.github/workflows/exotic-tarantool.yml b/.github/workflows/exotic-tarantool.yml
> new file mode 100644
> index 00000000..be55291a
> --- /dev/null
> +++ b/.github/workflows/exotic-tarantool.yml

Minor: I suggest using tarantool-exoting to be consistent with
tarantool-ecosystem. Within this rename, don't forget to rename the job
for consistency.

OTOH, maybe it is better to name this workflow like the
tarantool-integration or luajit-integration to show that we run
**LuaJIT** tests under Tarantool. What name do you like the most?

<snipped>

> +jobs:
> +  test-exotic-tarantool:

Why do you separate this job from the testing.yml workflow? Also, it
should depend on luajit-testing, so it still should be placed in the
<testing.yml> shouldn't it? If not, please add a rationale in the
comment.

> +    strategy:
> +      fail-fast: false
> +      matrix:
> +        ARCH: [ARM64, x86_64]
> +        BUILDTYPE: [Debug, Release]
> +        GC64: [ON, OFF]
> +        OS: [Linux, macOS]
> +        include:
> +          - BUILDTYPE: Debug
> +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> +          - BUILDTYPE: Release
> +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> +        exclude:
> +          - ARCH: ARM64
> +            GC64: OFF
> +          - OS: macOS
> +            GC64: OFF
> +    name: >
> +      Tarantool
> +      (${{ matrix.OS }}/${{ matrix.ARCH }})
> +      ${{ matrix.BUILDTYPE }}
> +      GC64:${{ matrix.GC64 }}
> +    # XXX: Only LuaJIT-tests are running in this workflow.

Side note: What do you think about adding the FreeBSD runs to that
workflow?
It doesn't cost much since LuaJIT-tests are tiny. And we already run
such tests for OSX.

> +    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> +    with:
> +      CMAKE_EXTRA_PARAMS: >
> +        -G Ninja
> +        ${{ matrix.CMAKEFLAGS }}
> +        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> +      arch: ${{ matrix.ARCH }}
> +      os: ${{ matrix.OS }}
> +      revision: ${{ github.sha }}
> diff --git a/.github/workflows/tarantool-ecosystem.yml b/.github/workflows/tarantool-ecosystem.yml
> new file mode 100644
> index 00000000..82a47fe1
> --- /dev/null
> +++ b/.github/workflows/tarantool-ecosystem.yml

<snipped>

> +jobs:
> +  test-tarantool-integration:
> +    uses: tarantool/tarantool/.github/workflows/integration.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}

Do I understand correctly that this workflow is separated from testing
integration list since it has reached the limit mentioned above (20
workflows)? If so, please mention this here as a comment and in the
testing.yml too.

> +

Nit: Excess empty line.

> diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
> index cb4ba57b..7bd527be 100644
> --- a/.github/workflows/testing.yml
> +++ b/.github/workflows/testing.yml
> @@ -83,37 +83,93 @@ jobs:
>          run: cmake --build . --parallel --target LuaJIT-test
>          working-directory: ${{ env.BUILDDIR }}
> 
> +  test-tarantool-coverage:

Maybe it is better to add names for better readablility.
Something like Tarantool intergration coverage, here and below.

> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/coverage.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}

<snipped>

> +  test-tarantool-debug:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-debug_aarch64:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug_aarch64.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-debug_asan_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug_asan_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-default_gcc_centos_7:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/default_gcc_centos_7.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-out_of_source:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/out_of_source.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}

[*] This workflow is mentioned as not used.

> +
> +  test-tarantool-release:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_asan_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_asan_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_lto:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_lto.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_lto_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_lto_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-static_build:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/static_build.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-static_build_cmake_linux:
>      needs: test-luajit
> -    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> +    uses: tarantool/tarantool/.github/workflows/static_build_cmake_linux.yml@master
>      with:
> -      CMAKE_EXTRA_PARAMS: >
> -        -G Ninja
> -        ${{ matrix.CMAKEFLAGS }}
> -        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> -      arch: ${{ matrix.ARCH }}
> -      os: ${{ matrix.OS }}
> +      submodule: luajit
>        revision: ${{ github.sha }}
> --
> 2.43.0
> 

-- 
Best regards,
Sergey Kaplun

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing
  2024-03-01  8:25 Maxim Kokryashkin via Tarantool-patches
@ 2024-03-04 14:05 ` Sergey Bronnikov via Tarantool-patches
  2024-03-06 20:40   ` Maxim Kokryashkin via Tarantool-patches
  2024-03-04 16:45 ` Sergey Kaplun via Tarantool-patches
  1 sibling, 1 reply; 7+ messages in thread
From: Sergey Bronnikov via Tarantool-patches @ 2024-03-04 14:05 UTC (permalink / raw)
  To: Maxim Kokryashkin, tarantool-patches, skaplun

Hi, Max

thanks for updates. LGTM with minor comments below.


On 3/1/24 11:25, Maxim Kokryashkin wrote:
> This patch makes use of reusable workflows from the
> Tarantool repository, so now LuaJIT CI tests integration
> in all relevant workflows.
>
> Also, this patch disables MacOS testing for Tarantool
> integration since those runs were made nightly in the
> Tarantool repo.
>
> As noted in the documentation[1], it is impossible for a single
> workflow call tree to include more than 20 workflows. To
> overcome this limitation, workflows are started in a bunch of
> separate files. This makes it impossible to depend on LuaJIT-only
> jobs for integration workflow since it is impossible to make
> cross-dependencies between workflow files.
>
> The name of a callee workflow cannot be substituted using a
> matrix[2], so workflow calls are copied and pasted instead.
>
> Table below shows which workflows are enabled and why.
>
> Workflow name                   |+/-| Reason
> -----------------------------------------------------------------
> codeql                          | - | Not relevant to LuaJIT.
> coverage                        | + | Long tests for profilers.
> coverity                        | - | Cron workflow.
> debug                           | + | Tarantool debug build.
> debug_aarch64                   | + | Tarantool debug build.
> debug_asan_clang                | + | Tarantool debug build.
> default_gcc_centos_7            | + | Ancient gcc build.
better: "gcc version". Feel free to ignore.
> freebsd                         | - | Nightly build.
> fuzzing                         | - | Impossible to bump LuaJIT.
> integration                     | + | Tarantool ecosystem.
> jepsen-cluster-txm              | - | Manual workflow.
> jepsen-cluster                  | - | Manual workflow.
> jepsen-single-instance-txm      | - | Cron workflow.
> jepsen-single-instance          | - | Cron workflow.
> lango-stale-reviews             | - | Cron workflow.
> lint                            | - | LuaJIT has its own lint.
> luajit-integration              | + | Exotic LuaJIT options.
> memtx_allocator_based_on_malloc | + | Not relevant to LuaJIT.
typo: s/+/-/
> osx                             | - | Nightly build.
> out_of_source                   | - | Not relevent to LuaJIT.
> packaging                       | - | No LuaJIT-relevant variety.
> perf_cbench                     | - | Not enabled for PRs.
> perf_linkbench_ssd              | - | Not enabled for PRs.
> perf_micro                      | - | Not relevant to LuaJIT.
> perf_nosqlbench_hash            | - | Not enabled for PRs.
> perf_nosqlbench_tree            | - | Not enabled for PRs.
> perf_sysbench                   | - | Not enabled for PRs.
> perf_tpcc                       | - | Not enabled for PRs.
> perf_tpch                       | - | Not enabled for PRs.
> perf_ycsb_hash                  | - | Not enabled for PRs.
> perf_ycsb_tree                  | - | Not enabled for PRs.
> publish-module-api-doc          | - | No Doxygen in LuaJIT.
> release                         | + | Tarantool release build.
> release_asan_clang              | + | Tarantool release build.
> release_clang                   | + | Tarantool release build.
> release_lto                     | + | Tarantool release build.
> release_lto_clang               | + | Tarantool release build.
> reusable_build                  | - | Utility for integration.
> source                          | - | Not enabled for PRs.
> static_build                    | + | Tarantool static build.
> static_build_cmake_linux        | + | Tarantool static build.
> static_build_pack_test_deploy   | - | Utility for packaging.

I would left "static_build" [1] and skip "static_build_cmake_linux" [2].

I don't see a big difference for static_build and 
static_build_cmake_linux, build commands are the same,

both workflows are running on ubuntu-20.04-self-hosted. The difference 
is in builddir location:

first is in source build, the second one is out of source build, see [4].


1. 
https://github.com/tarantool/tarantool/blob/f267af24058c7cb49bf2a6403b1f3c51b41d22ae/.test.mk#L165-L171

2. 
https://github.com/tarantool/tarantool/blob/f267af24058c7cb49bf2a6403b1f3c51b41d22ae/.github/workflows/static_build_cmake_linux.yml#L1

4. 
https://github.com/tarantool/tarantool/blob/f267af24058c7cb49bf2a6403b1f3c51b41d22ae/.test.mk#L156-L171

> submodule_update                | - | Not enabled for PRs.
>
> [1]: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
> [2]: https://github.com/orgs/community/discussions/45342#discussioncomment-4779360
> ---
> Branch: https://github.com/tarantool/luajit/tree/fckxorg/integration-testing
>
>   .github/workflows/exotic-tarantool.yml    |  62 ++++++++++++
>   .github/workflows/tarantool-ecosystem.yml |  35 +++++++
>   .github/workflows/testing.yml             | 116 ++++++++++++++++------
>   3 files changed, 183 insertions(+), 30 deletions(-)
>   create mode 100644 .github/workflows/exotic-tarantool.yml
>   create mode 100644 .github/workflows/tarantool-ecosystem.yml
>
> diff --git a/.github/workflows/exotic-tarantool.yml b/.github/workflows/exotic-tarantool.yml
> new file mode 100644
> index 00000000..be55291a
> --- /dev/null
> +++ b/.github/workflows/exotic-tarantool.yml
> @@ -0,0 +1,62 @@
> +name: "Exotic Tarantool builds testing"
> +
> +on:
> +  push:
> +    branches-ignore:
> +      - '**-notest'
> +      - 'upstream-**'
> +    tags-ignore:
> +      - '**'
> +
> +concurrency:
> +  # An update of a developer branch cancels the previously
> +  # scheduled workflow run for this branch. However, the default
> +  # branch, and long-term branch (tarantool/release/2.11,
> +  # tarantool/release/2.10, etc) workflow runs are never canceled.
> +  #
> +  # We use a trick here: define the concurrency group as 'workflow
> +  # run ID' + # 'workflow run attempt' because it is a unique
> +  # combination for any run. So it effectively discards grouping.
> +  #
> +  # XXX: we cannot use `github.sha` as a unique identifier because
> +  # pushing a tag may cancel a run that works on a branch push
> +  # event.
> +  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
> +    && format('{0}-{1}', github.run_id, github.run_attempt)
> +    || format('{0}-{1}', github.workflow, github.ref) }}
> +  cancel-in-progress: true
> +
> +jobs:
> +  test-exotic-tarantool:
> +    strategy:
> +      fail-fast: false
> +      matrix:
> +        ARCH: [ARM64, x86_64]
> +        BUILDTYPE: [Debug, Release]
> +        GC64: [ON, OFF]
> +        OS: [Linux, macOS]
> +        include:
> +          - BUILDTYPE: Debug
> +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> +          - BUILDTYPE: Release
> +            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> +        exclude:
> +          - ARCH: ARM64
> +            GC64: OFF
> +          - OS: macOS
> +            GC64: OFF
> +    name: >
> +      Tarantool
> +      (${{ matrix.OS }}/${{ matrix.ARCH }})
> +      ${{ matrix.BUILDTYPE }}
> +      GC64:${{ matrix.GC64 }}
> +    # XXX: Only LuaJIT-tests are running in this workflow.
> +    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> +    with:
> +      CMAKE_EXTRA_PARAMS: >
> +        -G Ninja
> +        ${{ matrix.CMAKEFLAGS }}
> +        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> +      arch: ${{ matrix.ARCH }}
> +      os: ${{ matrix.OS }}
> +      revision: ${{ github.sha }}
> diff --git a/.github/workflows/tarantool-ecosystem.yml b/.github/workflows/tarantool-ecosystem.yml
> new file mode 100644
> index 00000000..82a47fe1
> --- /dev/null
> +++ b/.github/workflows/tarantool-ecosystem.yml
> @@ -0,0 +1,35 @@
> +name: Tarantool ecosystem integration testing
> +
> +on:
> +  push:
> +    branches-ignore:
> +      - '**-notest'
> +      - 'upstream-**'
> +    tags-ignore:
> +      - '**'
> +
> +concurrency:
> +  # An update of a developer branch cancels the previously
> +  # scheduled workflow run for this branch. However, the default
> +  # branch, and long-term branch (tarantool/release/2.11,
> +  # tarantool/release/2.10, etc) workflow runs are never canceled.
> +  #
> +  # We use a trick here: define the concurrency group as 'workflow
> +  # run ID' + # 'workflow run attempt' because it is a unique
> +  # combination for any run. So it effectively discards grouping.
> +  #
> +  # XXX: we cannot use `github.sha` as a unique identifier because
> +  # pushing a tag may cancel a run that works on a branch push
> +  # event.
> +  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
> +    && format('{0}-{1}', github.run_id, github.run_attempt)
> +    || format('{0}-{1}', github.workflow, github.ref) }}
> +  cancel-in-progress: true
> +
> +jobs:
> +  test-tarantool-integration:
> +    uses: tarantool/tarantool/.github/workflows/integration.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
> index cb4ba57b..7bd527be 100644
> --- a/.github/workflows/testing.yml
> +++ b/.github/workflows/testing.yml
> @@ -83,37 +83,93 @@ jobs:
>           run: cmake --build . --parallel --target LuaJIT-test
>           working-directory: ${{ env.BUILDDIR }}
>
> +  test-tarantool-coverage:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/coverage.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
>
> -  test-tarantool:
> -    strategy:
> -      fail-fast: false
> -      matrix:
> -        ARCH: [ARM64, x86_64]
> -        BUILDTYPE: [Debug, Release]
> -        GC64: [ON, OFF]
> -        OS: [Linux, macOS]
> -        include:
> -          - BUILDTYPE: Debug
> -            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
> -          - BUILDTYPE: Release
> -            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
> -        exclude:
> -          - ARCH: ARM64
> -            GC64: OFF
> -          - OS: macOS
> -            GC64: OFF
> -    name: >
> -      Tarantool
> -      (${{ matrix.OS }}/${{ matrix.ARCH }})
> -      ${{ matrix.BUILDTYPE }}
> -      GC64:${{ matrix.GC64 }}
> +  test-tarantool-debug:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-debug_aarch64:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug_aarch64.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-debug_asan_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/debug_asan_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-default_gcc_centos_7:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/default_gcc_centos_7.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-out_of_source:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/out_of_source.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_asan_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_asan_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_lto:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_lto.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-release_lto_clang:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/release_lto_clang.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-static_build:
> +    needs: test-luajit
> +    uses: tarantool/tarantool/.github/workflows/static_build.yml@master
> +    with:
> +      submodule: luajit
> +      revision: ${{ github.sha }}
> +
> +  test-tarantool-static_build_cmake_linux:
>       needs: test-luajit
> -    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
> +    uses: tarantool/tarantool/.github/workflows/static_build_cmake_linux.yml@master
>       with:
> -      CMAKE_EXTRA_PARAMS: >
> -        -G Ninja
> -        ${{ matrix.CMAKEFLAGS }}
> -        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
> -      arch: ${{ matrix.ARCH }}
> -      os: ${{ matrix.OS }}
> +      submodule: luajit
>         revision: ${{ github.sha }}
> --
> 2.43.0
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing
@ 2024-03-01  8:25 Maxim Kokryashkin via Tarantool-patches
  2024-03-04 14:05 ` Sergey Bronnikov via Tarantool-patches
  2024-03-04 16:45 ` Sergey Kaplun via Tarantool-patches
  0 siblings, 2 replies; 7+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2024-03-01  8:25 UTC (permalink / raw)
  To: tarantool-patches, skaplun, sergeyb

This patch makes use of reusable workflows from the
Tarantool repository, so now LuaJIT CI tests integration
in all relevant workflows.

Also, this patch disables MacOS testing for Tarantool
integration since those runs were made nightly in the
Tarantool repo.

As noted in the documentation[1], it is impossible for a single
workflow call tree to include more than 20 workflows. To
overcome this limitation, workflows are started in a bunch of
separate files. This makes it impossible to depend on LuaJIT-only
jobs for integration workflow since it is impossible to make
cross-dependencies between workflow files.

The name of a callee workflow cannot be substituted using a
matrix[2], so workflow calls are copied and pasted instead.

Table below shows which workflows are enabled and why.

Workflow name                   |+/-| Reason
-----------------------------------------------------------------
codeql                          | - | Not relevant to LuaJIT.
coverage                        | + | Long tests for profilers.
coverity                        | - | Cron workflow.
debug                           | + | Tarantool debug build.
debug_aarch64                   | + | Tarantool debug build.
debug_asan_clang                | + | Tarantool debug build.
default_gcc_centos_7            | + | Ancient gcc build.
freebsd                         | - | Nightly build.
fuzzing                         | - | Impossible to bump LuaJIT.
integration                     | + | Tarantool ecosystem.
jepsen-cluster-txm              | - | Manual workflow.
jepsen-cluster                  | - | Manual workflow.
jepsen-single-instance-txm      | - | Cron workflow.
jepsen-single-instance          | - | Cron workflow.
lango-stale-reviews             | - | Cron workflow.
lint                            | - | LuaJIT has its own lint.
luajit-integration              | + | Exotic LuaJIT options.
memtx_allocator_based_on_malloc | + | Not relevant to LuaJIT.
osx                             | - | Nightly build.
out_of_source                   | - | Not relevent to LuaJIT.
packaging                       | - | No LuaJIT-relevant variety.
perf_cbench                     | - | Not enabled for PRs.
perf_linkbench_ssd              | - | Not enabled for PRs.
perf_micro                      | - | Not relevant to LuaJIT.
perf_nosqlbench_hash            | - | Not enabled for PRs.
perf_nosqlbench_tree            | - | Not enabled for PRs.
perf_sysbench                   | - | Not enabled for PRs.
perf_tpcc                       | - | Not enabled for PRs.
perf_tpch                       | - | Not enabled for PRs.
perf_ycsb_hash                  | - | Not enabled for PRs.
perf_ycsb_tree                  | - | Not enabled for PRs.
publish-module-api-doc          | - | No Doxygen in LuaJIT.
release                         | + | Tarantool release build.
release_asan_clang              | + | Tarantool release build.
release_clang                   | + | Tarantool release build.
release_lto                     | + | Tarantool release build.
release_lto_clang               | + | Tarantool release build.
reusable_build                  | - | Utility for integration.
source                          | - | Not enabled for PRs.
static_build                    | + | Tarantool static build.
static_build_cmake_linux        | + | Tarantool static build.
static_build_pack_test_deploy   | - | Utility for packaging.
submodule_update                | - | Not enabled for PRs.

[1]: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
[2]: https://github.com/orgs/community/discussions/45342#discussioncomment-4779360
---
Branch: https://github.com/tarantool/luajit/tree/fckxorg/integration-testing

 .github/workflows/exotic-tarantool.yml    |  62 ++++++++++++
 .github/workflows/tarantool-ecosystem.yml |  35 +++++++
 .github/workflows/testing.yml             | 116 ++++++++++++++++------
 3 files changed, 183 insertions(+), 30 deletions(-)
 create mode 100644 .github/workflows/exotic-tarantool.yml
 create mode 100644 .github/workflows/tarantool-ecosystem.yml

diff --git a/.github/workflows/exotic-tarantool.yml b/.github/workflows/exotic-tarantool.yml
new file mode 100644
index 00000000..be55291a
--- /dev/null
+++ b/.github/workflows/exotic-tarantool.yml
@@ -0,0 +1,62 @@
+name: "Exotic Tarantool builds testing"
+
+on:
+  push:
+    branches-ignore:
+      - '**-notest'
+      - 'upstream-**'
+    tags-ignore:
+      - '**'
+
+concurrency:
+  # An update of a developer branch cancels the previously
+  # scheduled workflow run for this branch. However, the default
+  # branch, and long-term branch (tarantool/release/2.11,
+  # tarantool/release/2.10, etc) workflow runs are never canceled.
+  #
+  # We use a trick here: define the concurrency group as 'workflow
+  # run ID' + # 'workflow run attempt' because it is a unique
+  # combination for any run. So it effectively discards grouping.
+  #
+  # XXX: we cannot use `github.sha` as a unique identifier because
+  # pushing a tag may cancel a run that works on a branch push
+  # event.
+  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
+    && format('{0}-{1}', github.run_id, github.run_attempt)
+    || format('{0}-{1}', github.workflow, github.ref) }}
+  cancel-in-progress: true
+
+jobs:
+  test-exotic-tarantool:
+    strategy:
+      fail-fast: false
+      matrix:
+        ARCH: [ARM64, x86_64]
+        BUILDTYPE: [Debug, Release]
+        GC64: [ON, OFF]
+        OS: [Linux, macOS]
+        include:
+          - BUILDTYPE: Debug
+            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
+          - BUILDTYPE: Release
+            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
+        exclude:
+          - ARCH: ARM64
+            GC64: OFF
+          - OS: macOS
+            GC64: OFF
+    name: >
+      Tarantool
+      (${{ matrix.OS }}/${{ matrix.ARCH }})
+      ${{ matrix.BUILDTYPE }}
+      GC64:${{ matrix.GC64 }}
+    # XXX: Only LuaJIT-tests are running in this workflow.
+    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
+    with:
+      CMAKE_EXTRA_PARAMS: >
+        -G Ninja
+        ${{ matrix.CMAKEFLAGS }}
+        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
+      arch: ${{ matrix.ARCH }}
+      os: ${{ matrix.OS }}
+      revision: ${{ github.sha }}
diff --git a/.github/workflows/tarantool-ecosystem.yml b/.github/workflows/tarantool-ecosystem.yml
new file mode 100644
index 00000000..82a47fe1
--- /dev/null
+++ b/.github/workflows/tarantool-ecosystem.yml
@@ -0,0 +1,35 @@
+name: Tarantool ecosystem integration testing
+
+on:
+  push:
+    branches-ignore:
+      - '**-notest'
+      - 'upstream-**'
+    tags-ignore:
+      - '**'
+
+concurrency:
+  # An update of a developer branch cancels the previously
+  # scheduled workflow run for this branch. However, the default
+  # branch, and long-term branch (tarantool/release/2.11,
+  # tarantool/release/2.10, etc) workflow runs are never canceled.
+  #
+  # We use a trick here: define the concurrency group as 'workflow
+  # run ID' + # 'workflow run attempt' because it is a unique
+  # combination for any run. So it effectively discards grouping.
+  #
+  # XXX: we cannot use `github.sha` as a unique identifier because
+  # pushing a tag may cancel a run that works on a branch push
+  # event.
+  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
+    && format('{0}-{1}', github.run_id, github.run_attempt)
+    || format('{0}-{1}', github.workflow, github.ref) }}
+  cancel-in-progress: true
+
+jobs:
+  test-tarantool-integration:
+    uses: tarantool/tarantool/.github/workflows/integration.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
index cb4ba57b..7bd527be 100644
--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -83,37 +83,93 @@ jobs:
         run: cmake --build . --parallel --target LuaJIT-test
         working-directory: ${{ env.BUILDDIR }}

+  test-tarantool-coverage:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/coverage.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}

-  test-tarantool:
-    strategy:
-      fail-fast: false
-      matrix:
-        ARCH: [ARM64, x86_64]
-        BUILDTYPE: [Debug, Release]
-        GC64: [ON, OFF]
-        OS: [Linux, macOS]
-        include:
-          - BUILDTYPE: Debug
-            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=Debug
-          - BUILDTYPE: Release
-            CMAKEFLAGS: -DCMAKE_BUILD_TYPE=RelWithDebInfo
-        exclude:
-          - ARCH: ARM64
-            GC64: OFF
-          - OS: macOS
-            GC64: OFF
-    name: >
-      Tarantool
-      (${{ matrix.OS }}/${{ matrix.ARCH }})
-      ${{ matrix.BUILDTYPE }}
-      GC64:${{ matrix.GC64 }}
+  test-tarantool-debug:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/debug.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-debug_aarch64:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/debug_aarch64.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-debug_asan_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/debug_asan_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-default_gcc_centos_7:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/default_gcc_centos_7.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-out_of_source:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/out_of_source.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_asan_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_asan_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_lto:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_lto.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-release_lto_clang:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/release_lto_clang.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-static_build:
+    needs: test-luajit
+    uses: tarantool/tarantool/.github/workflows/static_build.yml@master
+    with:
+      submodule: luajit
+      revision: ${{ github.sha }}
+
+  test-tarantool-static_build_cmake_linux:
     needs: test-luajit
-    uses: tarantool/tarantool/.github/workflows/luajit-integration.yml@master
+    uses: tarantool/tarantool/.github/workflows/static_build_cmake_linux.yml@master
     with:
-      CMAKE_EXTRA_PARAMS: >
-        -G Ninja
-        ${{ matrix.CMAKEFLAGS }}
-        -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
-      arch: ${{ matrix.ARCH }}
-      os: ${{ matrix.OS }}
+      submodule: luajit
       revision: ${{ github.sha }}
--
2.43.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-03-06 20:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-16 22:24 [Tarantool-patches] [PATCH luajit] ci: extend tarantool integration testing Maxim Kokryashkin via Tarantool-patches
2024-02-21 15:21 ` Sergey Kaplun via Tarantool-patches
2024-03-01  8:25 Maxim Kokryashkin via Tarantool-patches
2024-03-04 14:05 ` Sergey Bronnikov via Tarantool-patches
2024-03-06 20:40   ` Maxim Kokryashkin via Tarantool-patches
2024-03-04 16:45 ` Sergey Kaplun via Tarantool-patches
2024-03-06 20:34   ` Maxim Kokryashkin via Tarantool-patches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox