[Tarantool-patches] [PATCH luajit 4/8] ci: use out of source build in GitHub Actions

Igor Munkin imun at tarantool.org
Thu Aug 11 14:17:43 MSK 2022


Use out of source build configuration for LuaJIT testing jobs in all
GitHub workflows. For this build type configuration unique subdirectory
(using GitHub run ID) within runner temporary directory is used as a
binary artefacts tree.

Signed-off-by: Igor Munkin <imun at tarantool.org>
---
 .github/actions/environment/action.yml   | 5 +++++
 .github/workflows/lint.yml               | 3 ++-
 .github/workflows/linux-aarch64.yml      | 6 +++++-
 .github/workflows/linux-x86_64-ninja.yml | 6 +++++-
 .github/workflows/linux-x86_64.yml       | 7 ++++++-
 .github/workflows/macos-m1.yml           | 6 +++++-
 .github/workflows/macos-x86_64.yml       | 7 ++++++-
 7 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/.github/actions/environment/action.yml b/.github/actions/environment/action.yml
index 43323bc7..7fb2625f 100644
--- a/.github/actions/environment/action.yml
+++ b/.github/actions/environment/action.yml
@@ -11,3 +11,8 @@ runs:
         NPROC=$(sysctl -n hw.logicalcpu 2>/dev/null || nproc)
         echo CMAKE_BUILD_PARALLEL_LEVEL=$(($NPROC + 1)) | tee -a $GITHUB_ENV
       shell: bash
+    - run: |
+        # Set BUILDDIR environment variable to specify LuaJIT
+        # build directory.
+        echo "BUILDDIR=${{ runner.temp }}/build-${{ github.run_id }}" | tee -a $GITHUB_ENV
+      shell: bash
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 28dc6be6..64e8f992 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -45,6 +45,7 @@ jobs:
           sudo apt -y install cmake make lua5.1 luarocks
           sudo luarocks install luacheck
       - name: configure
-        run: cmake .
+        run: cmake -S . -B ${{ env.BUILDDIR }}
       - name: test
         run: cmake --build . --target LuaJIT-luacheck
+        working-directory: ${{ env.BUILDDIR }}
diff --git a/.github/workflows/linux-aarch64.yml b/.github/workflows/linux-aarch64.yml
index 8c8dcff1..21d86764 100644
--- a/.github/workflows/linux-aarch64.yml
+++ b/.github/workflows/linux-aarch64.yml
@@ -53,11 +53,15 @@ jobs:
           sudo apt -y update
           sudo apt -y install cmake gcc make perl
       - name: configure
-        run: cmake . ${{ matrix.CMAKEFLAGS }}
+        run: >
+          cmake -S . -B ${{ env.BUILDDIR }}
+          ${{ matrix.CMAKEFLAGS }}
       - name: build
         run: cmake --build . --parallel
+        working-directory: ${{ env.BUILDDIR }}
       - name: test
         run: cmake --build . --parallel --target test
+        working-directory: ${{ env.BUILDDIR }}
 
   test-tarantool-debug-w-GC64:
     name: Tarantool Debug GC64:ON
diff --git a/.github/workflows/linux-x86_64-ninja.yml b/.github/workflows/linux-x86_64-ninja.yml
index 2877d2f6..72d56d54 100644
--- a/.github/workflows/linux-x86_64-ninja.yml
+++ b/.github/workflows/linux-x86_64-ninja.yml
@@ -44,8 +44,12 @@ jobs:
           sudo apt -y update
           sudo apt -y install cmake gcc ninja-build perl
       - name: configure
-        run: cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -G Ninja
+        run: >
+          cmake -S . -B ${{ env.BUILDDIR }}
+          -DCMAKE_BUILD_TYPE=RelWithDebInfo -G Ninja
       - name: build
         run: cmake --build . --parallel
+        working-directory: ${{ env.BUILDDIR }}
       - name: test
         run: cmake --build . --parallel --target test
+        working-directory: ${{ env.BUILDDIR }}
diff --git a/.github/workflows/linux-x86_64.yml b/.github/workflows/linux-x86_64.yml
index 44dcce98..4c3ad4c7 100644
--- a/.github/workflows/linux-x86_64.yml
+++ b/.github/workflows/linux-x86_64.yml
@@ -54,11 +54,16 @@ jobs:
           sudo apt -y update
           sudo apt -y install cmake gcc make perl
       - name: configure
-        run: cmake . ${{ matrix.CMAKEFLAGS }} -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
+        run: >
+          cmake -S . -B ${{ env.BUILDDIR }}
+          ${{ matrix.CMAKEFLAGS }}
+          -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
       - name: build
         run: cmake --build . --parallel
+        working-directory: ${{ env.BUILDDIR }}
       - name: test
         run: cmake --build . --parallel --target test
+        working-directory: ${{ env.BUILDDIR }}
 
   test-tarantool-debug-wo-GC64:
     name: Tarantool Debug GC64:OFF
diff --git a/.github/workflows/macos-m1.yml b/.github/workflows/macos-m1.yml
index e0269d60..e3b6dcda 100644
--- a/.github/workflows/macos-m1.yml
+++ b/.github/workflows/macos-m1.yml
@@ -68,11 +68,15 @@ jobs:
             ${ARCH} brew upgrade cmake gcc make perl
           ${ARCH} echo "CMAKE_BUILD_PARALLEL_LEVEL=$(($(sysctl -n hw.logicalcpu) + 1))" >> $GITHUB_ENV
       - name: configure
-        run: ${ARCH} cmake . ${{ matrix.CMAKEFLAGS }}
+        run: >
+          ${ARCH} cmake -S . -B ${{ env.BUILDDIR }}
+          ${{ matrix.CMAKEFLAGS }}
       - name: build
         run: ${ARCH} cmake --build . --parallel
+        working-directory: ${{ env.BUILDDIR }}
       - name: test
         run: ${ARCH} cmake --build . --parallel --target test
+        working-directory: ${{ env.BUILDDIR }}
 
   test-tarantool-debug-w-GC64:
     name: Tarantool Debug GC64:ON
diff --git a/.github/workflows/macos-x86_64.yml b/.github/workflows/macos-x86_64.yml
index 840806e3..3d2cf581 100644
--- a/.github/workflows/macos-x86_64.yml
+++ b/.github/workflows/macos-x86_64.yml
@@ -63,11 +63,16 @@ jobs:
           brew install --force cmake gcc make perl ||
             brew upgrade cmake gcc make perl
       - name: configure
-        run: cmake . ${{ matrix.CMAKEFLAGS }} -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
+        run: >
+          cmake -S . -B ${{ env.BUILDDIR }}
+          ${{ matrix.CMAKEFLAGS }}
+          -DLUAJIT_ENABLE_GC64=${{ matrix.GC64 }}
       - name: build
         run: cmake --build . --parallel
+        working-directory: ${{ env.BUILDDIR }}
       - name: test
         run: cmake --build . --parallel --target test
+        working-directory: ${{ env.BUILDDIR }}
 
   test-tarantool-debug-wo-GC64:
     name: Tarantool Debug GC64:OFF
-- 
2.34.0



More information about the Tarantool-patches mailing list