From c98991c60c9e63702e9e2c0ad120eca2c01610fc Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Tue, 23 Mar 2021 16:42:34 +0100 Subject: [PATCH] ci: Add caching for many steps --- .github/workflows/main.yml | 94 ++++++++++++++++++++++++-------------- 1 file changed, 60 insertions(+), 34 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dcf2c40d..261cb329 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,33 +37,36 @@ jobs: CMAKE_GENERATOR_TOOLSET: "host=x64" CMAKE_SYSTEM_VERSION: ${{ matrix.windows_sdk }} steps: - - name: "Clone Repository" + - name: "Clone" uses: actions/checkout@v2 with: submodules: recursive - - name: "Cache: OBS" + fetch-depth: 0 + - name: "libobs: Cache" uses: actions/cache@v2 with: - path: "build/temp/libobs-download/libobs-download-prefix/src/libobs.7z" - key: ${{ matrix.id }}-${{ env.DOWNLOAD_OBS_VERSION }}-${{ env.DOWNLOAD_OBS_HASH_64 }} - - name: "Cache: OBS Dependencies" + path: | + build/temp/libobs-download + key: libobs-${{ matrix.id }}-${{ env.DOWNLOAD_OBS_VERSION }}-${{ env.DOWNLOAD_OBS_HASH_64 }}-${{ secrets.CACHE_VERSION }} + - name: "obsdeps: Cache" uses: actions/cache@v2 with: - path: "build/temp/obsdeps-download/obsdeps-download-prefix/src/obsdeps.7z" - key: ${{ matrix.id }}-${{ env.DOWNLOAD_OBSDEPS_VERSION }}-${{ env.DOWNLOAD_OBSDEPS_HASH }} - - name: "Cache: Qt" + path: | + build/temp/obsdeps-download + key: obsdeps-${{ matrix.id }}-${{ env.DOWNLOAD_OBSDEPS_VERSION }}-${{ env.DOWNLOAD_OBSDEPS_HASH }}-${{ secrets.CACHE_VERSION }} + - name: "qt: Cache" uses: actions/cache@v2 id: cache-qt with: path: "../Qt" - key: ${{ matrix.id }}-${{ env.QT_VERSION }} - - name: "Prerequisites: Qt" + key: ${{ matrix.id }}-${{ env.QT_VERSION }}-${{ secrets.CACHE_VERSION }} + - name: "qt: Install" if: "steps.cache-qt.outputs.cache-hit != true" shell: bash run: | curl -L "https://github.com/Xaymar/obs-studio/releases/download/26.1.0/qt_${QT_VERSION}_windows_64.7z" -o qt.7z 7z x -o../Qt/ qt.7z - - name: "Configure Project" + - name: "StreamFX: Configure" shell: bash run: | cmake -H. -B"build/temp" \ @@ -72,24 +75,24 @@ jobs: -DPACKAGE_NAME="streamfx-${{ matrix.id }}" \ -DPACKAGE_PREFIX="build/package" \ -DQt5_DIR="${PWD}/../Qt/msvc2019_64/lib/cmake/Qt5/" - - name: "Build Project" + - name: "StreamFX: Build" shell: bash run: | cmake --build "build/temp" --config RelWithDebInfo --target INSTALL - - name: "Package Project" + - name: "StreamFX: Package (Install Prerequisites)" + run: | + curl "-kL" "https://cdn.xaymar.com/ci/innosetup-6.0.3.exe" "-f" "--retry" "5" "-o" "inno.exe" + .\inno.exe /VERYSILENT /SP- /SUPPRESSMSGBOXES /NORESTART + - name: "StreamFX: Package" shell: bash run: | mkdir build/package cmake --build "build/temp" --config RelWithDebInfo --target PACKAGE_7Z cmake --build "build/temp" --config RelWithDebInfo --target PACKAGE_ZIP - - name: "Package Installer (Prereqs)" + - name: "StreamFX: Package Installer" run: | - curl "-kL" "https://cdn.xaymar.com/ci/innosetup-6.0.3.exe" "-f" "--retry" "5" "-o" "inno.exe" - .\inno.exe /VERYSILENT /SP- /SUPPRESSMSGBOXES /NORESTART - - name: "Package Installer (Compile)" - run: | - & 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' /Qp ".\build\temp\installer.iss" - - name: "Upload Artifacts" + & "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" /Qp ".\build\temp\installer.iss" + - name: "Artifacts" uses: actions/upload-artifact@v1 with: name: ${{ matrix.id }} @@ -124,10 +127,11 @@ jobs: CC: ${{ matrix.compiler }} CXX: ${{ matrix.compiler-cxx }} steps: - - name: "Clone Repository" + - name: "Clone" uses: actions/checkout@v2 with: submodules: recursive + fetch-depth: 0 - name: "Prerequisites: Apt-Get" shell: bash run: | @@ -144,12 +148,13 @@ jobs: ${{ matrix.packages }} \ checkinstall pkg-config ${{ matrix.extra_command }} - - name: "Cache: OBS" + - name: "libobs: Cache" uses: actions/cache@v2 with: - path: "build/temp/libobs-download/libobs-download-prefix/src/libobs.7z" - key: ${{ matrix.id }}-${{ env.DOWNLOAD_OBS_VERSION }}-${{ env.DOWNLOAD_OBS_HASH_64 }} - - name: "Configure Project" + path: | + build/temp/libobs-download + key: libobs-${{ matrix.id }}-${{ env.DOWNLOAD_OBS_VERSION }}-${{ env.DOWNLOAD_OBS_HASH_64 }}${{ secrets.CACHE_VERSION }} + - name: "StreamFX: Configure" shell: bash run: | cmake -H. -B"build/temp" \ @@ -158,17 +163,17 @@ jobs: -DENABLE_FILTER_NVIDIA_FACE_TRACKING=FALSE \ -DPACKAGE_NAME="streamfx-${{ matrix.id }}" \ -DPACKAGE_PREFIX="build/package" - - name: "Build Project" + - name: "StreamFX: Build" shell: bash run: | cmake --build "build/temp" --config RelWithDebInfo --target install - - name: "Package Project" + - name: "StreamFX: Package" shell: bash run: | mkdir build/package cmake --build "build/temp" --config RelWithDebInfo --target PACKAGE_7Z cmake --build "build/temp" --config RelWithDebInfo --target PACKAGE_ZIP - - name: "Upload Artifacts" + - name: "Artifacts" uses: actions/upload-artifact@v1 with: name: ${{ matrix.id }} @@ -188,15 +193,36 @@ jobs: CMAKE_GENERATOR: "Xcode" CMAKE_OSX_DEPLOYMENT_TARGET: "${{ matrix.target-version }}" steps: - - name: "Clone Repository" + - name: "Clone" uses: actions/checkout@v2 with: submodules: recursive - - name: "Prerequisties: Qt" + fetch-depth: 0 + - name: "libobs: Cache" + uses: actions/cache@v2 + with: + path: | + build/temp/libobs-download + key: libobs-${{ matrix.id }}-${{ secrets.CACHE_VERSION }} + - name: "obsdeps: Cache" + uses: actions/cache@v2 + with: + path: | + build/temp/obsdeps-download + key: obsdeps-${{ matrix.id }}-${{ secrets.CACHE_VERSION }} + - name: "qt: Cache" + uses: actions/cache@v2 + id: qt-cache + with: + path: | + /usr/local/Cellar/qt@5 + key: qt-${{ matrix.id }}-${{ secrets.CACHE_VERSION }} + - name: "qt: 5.15.2" + if: "steps.qt-cache.outputs.cache-hit != 'true'" shell: bash run: | brew install qt@5 - - name: "Configure Project" + - name: "StreamFX: Configure" shell: bash run: | cmake -H. -B"build/temp" \ @@ -205,17 +231,17 @@ jobs: -DPACKAGE_NAME="streamfx-${{ matrix.id }}" \ -DPACKAGE_PREFIX="build/package" \ -DQt5_DIR=$(brew --prefix)/Cellar/qt@5/5.15.2/lib/cmake/Qt5 - - name: "Build Project" + - name: "StreamFX: Build" shell: bash run: | cmake --build "build/temp" --config RelWithDebInfo --target install - - name: "Package Project" + - name: "StreamFX: Package" shell: bash run: | mkdir build/package cmake --build "build/temp" --config RelWithDebInfo --target PACKAGE_7Z cmake --build "build/temp" --config RelWithDebInfo --target PACKAGE_ZIP - - name: "Upload Artifacts" + - name: "Artifacts" uses: actions/upload-artifact@v1 with: name: ${{ matrix.id }}