Jelajahi Sumber

chore: combine tests and builds into one job

Almamu 9 bulan lalu
induk
melakukan
81f23c3580
2 mengubah file dengan 60 tambahan dan 71 penghapusan
  1. 60 7
      .github/workflows/cmake.yml
  2. 0 64
      .github/workflows/tests.yml

+ 60 - 7
.github/workflows/cmake.yml

@@ -1,15 +1,68 @@
 name: CMake
 
 on:
-  workflow_run:
-    workflows: ['Unit tests']
-    branches: [main]
-    types: [completed]
+  push:
+    paths:
+      - '.github/workflows/cmake.yml'
+      - 'src/**'
+      - 'CMakeModules/**'
+      - CMakeLists.txt
+      - 'protocols/**'
+    branches: [ main ]
+  pull_request:
+    paths:
+      - '.github/workflows/cmake.yml'
+      - 'src/**'
+      - 'CMakeModules/**'
+      - CMakeLists.txt
+      - 'protocols/**'
+    branches: [ main ]
   workflow_dispatch:
 
 jobs:
+  tests:
+    env:
+      BUILD_TYPE: Release
+
+    strategy:
+      matrix:
+        os: [ubuntu-24.04]
+    # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
+    # You can convert this to a matrix build if you need cross-platform coverage.
+    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
+    runs-on: ${{ matrix.os }}
+
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          submodules: true
+
+      # cache some build information
+      - name: ccache
+        uses: hendrikmuhs/ccache-action@v1.2
+        with:
+          key: ${{ github.job }}-${{ matrix.os }}  # Eg. "some_build-ubuntu-latest"
+
+      - name: Install dependencies
+        if: matrix.os == 'ubuntu-24.04'
+        run: sudo apt-get update && sudo apt-get -y install libgl-dev libglew-dev freeglut3-dev libsdl2-dev liblz4-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libglm-dev libglfw3-dev libmpv-dev mpv libmpv2 libfftw3-dev
+
+      - name: Configure CMake
+        # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
+        # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
+        run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_TESTING=1
+
+      - name: Build
+        # Build your program with the given configuration
+        run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target tests
+
+      - name: Run tests
+        # Run the unit tests available
+        run: ${{github.workspace}}/build/output/tests
+
+
   build-x11:
-    if: ${{ github.event.workflow_run.conclusion == 'success' }}
+    needs: tests
     strategy:
       matrix:
         os: [ubuntu-22.04, ubuntu-24.04]
@@ -48,7 +101,7 @@ jobs:
       run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}}
 
   build-x11-wayland:
-    if: ${{ github.event.workflow_run.conclusion == 'success' }}
+    needs: tests
     permissions:
       actions: read
       contents: read
@@ -102,7 +155,7 @@ jobs:
         uses: github/codeql-action/analyze@v3
 
   build-wayland:
-    if: ${{ github.event.workflow_run.conclusion == 'success' }}
+    needs: tests
     strategy:
       matrix:
         os: [ubuntu-22.04, ubuntu-24.04]

+ 0 - 64
.github/workflows/tests.yml

@@ -1,64 +0,0 @@
-name: Unit tests
-
-on:
-  workflow_dispatch:
-  push:
-    paths:
-      - '.github/workflows/tests.yml'
-      - '.github/workflows/cmake.yml'
-      - 'src/**'
-      - 'CMakeModules/**'
-      - CMakeLists.txt
-      - 'protocols/**'
-    branches: [main]
-  pull_request:
-    paths:
-      - '.github/workflows/tests.yml'
-      - '.github/workflows/cmake.yml'
-      - 'src/**'
-      - 'CMakeModules/**'
-      - CMakeLists.txt
-      - 'protocols/**'
-    branches: [main]
-
-env:
-  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
-  BUILD_TYPE: Release
-
-jobs:
-  tests:
-    strategy:
-      matrix:
-        os: [ubuntu-24.04]
-    # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
-    # You can convert this to a matrix build if you need cross-platform coverage.
-    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
-    runs-on: ${{ matrix.os }}
-
-    steps:
-    - uses: actions/checkout@v3
-      with:
-        submodules: true
-
-    # cache some build information
-    - name: ccache
-      uses: hendrikmuhs/ccache-action@v1.2
-      with:
-        key: ${{ github.job }}-${{ matrix.os }}  # Eg. "some_build-ubuntu-latest"
-
-    - name: Install dependencies
-      if: matrix.os == 'ubuntu-24.04'
-      run: sudo apt-get update && sudo apt-get -y install libgl-dev libglew-dev freeglut3-dev libsdl2-dev liblz4-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libglm-dev libglfw3-dev libmpv-dev mpv libmpv2 libfftw3-dev
-
-    - name: Configure CMake
-      # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
-      # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
-      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_TESTING=1
-
-    - name: Build
-      # Build your program with the given configuration
-      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target tests
-
-    - name: Run tests
-      # Run the unit tests available
-      run: ${{github.workspace}}/build/output/tests