From 6c04520c842ad60a972c432d32692b130ed72319 Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Sun, 12 Mar 2023 02:13:05 +0100 Subject: [PATCH] [OSX][CI] Refactor CI to decrease cache build time and avoid unnecessary cache invalidation Signed-off-by: Vitalii Koshura --- .github/workflows/osx.yml | 76 ++++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 20 deletions(-) diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index a54073cf4f..3052144790 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -17,12 +17,32 @@ env: AWS_DEFAULT_REGION: us-west-2 jobs: + build-dependencies: + name: build-dependencies + runs-on: macos-latest + steps: + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '14.2.0' + + - uses: actions/checkout@v3 + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: 3rdParty/buildCache + key: osx-${{ hashFiles('.github/workflows/osx.yml', '3rdParty/buildMacDependencies.sh', 'mac_build/dependencyNames.sh', 'mac_build/buildc-ares.sh', 'mac_build/buildcurl.sh', 'mac_build/buildfreetype.sh', 'mac_build/buildFTGL.sh', 'mac_build/buildopenssl.sh', 'mac_build/buildWxMac.sh') }} + + - name: install dependencies + run: ./3rdParty/buildMacDependencies.sh -q + build: name: ${{matrix.type}}-build runs-on: macos-latest + needs: build-dependencies strategy: matrix: - type: [manager, samples-makefile, libs-cmake] + type: [manager, samples-makefile] fail-fast: false steps: - uses: maxim-lobanov/setup-xcode@v1 @@ -35,30 +55,12 @@ jobs: uses: actions/cache@v3 with: path: 3rdParty/buildCache - key: osx-${{ matrix.type }}-${{ hashFiles('3rdParty/*Mac*.sh', 'mac_build/setupForBOINC.sh', 'mac_build/dependencyNames.sh', 'mac_build/[bB]uild*.sh', '.github/workflows/osx.yml') }} - - - name: Check if build is running from origin repo - if: ${{ success() && env.AWS_ACCESS_KEY_ID != 0 && env.AWS_SECRET_ACCESS_KEY != 0 }} - run: | - echo "VCPKG_BINARY_SOURCES=clear;x-aws,s3://vcpkg.cache.boinc/,readwrite" >> $GITHUB_ENV - - - name: Check if build is running from fork - if: ${{ success() && (env.AWS_ACCESS_KEY_ID == 0 || env.AWS_SECRET_ACCESS_KEY == 0) }} - run: | - echo "VCPKG_BINARY_SOURCES=clear;x-aws-config,no-sign-request;x-aws,s3://vcpkg.cache.boinc/,read" >> $GITHUB_ENV - - - name: install dependencies - if: ${{! contains(matrix.type, 'cmake')}} - run: ./3rdParty/buildMacDependencies.sh -q + key: osx-${{ hashFiles('.github/workflows/osx.yml', '3rdParty/buildMacDependencies.sh', 'mac_build/dependencyNames.sh', 'mac_build/buildc-ares.sh', 'mac_build/buildcurl.sh', 'mac_build/buildfreetype.sh', 'mac_build/buildFTGL.sh', 'mac_build/buildopenssl.sh', 'mac_build/buildWxMac.sh') }} - name: make manager if: success() && matrix.type == 'manager' run: ./mac_build/buildMacBOINC-CI.sh --no_shared_headers - - name: libs cmake - if: matrix.type == 'libs-cmake' - run: osx/ci_build_libs_cmake.sh - - name: make samples makefile if: matrix.type == 'samples-makefile' run: ./mac_build/buildMacMakefiles-CI.sh @@ -73,3 +75,37 @@ jobs: with: name: osx_logs_${{ matrix.type }}_${{ github.event.pull_request.head.sha }} path: deploy/logs.7z + + cmake-build: + name: cmake-build + runs-on: macos-latest + steps: + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '14.2.0' + + - uses: actions/checkout@v3 + + - name: Check if build is running from origin repo + if: ${{ success() && env.AWS_ACCESS_KEY_ID != 0 && env.AWS_SECRET_ACCESS_KEY != 0 }} + run: | + echo "VCPKG_BINARY_SOURCES=clear;x-aws,s3://vcpkg.cache.boinc/,readwrite" >> $GITHUB_ENV + + - name: Check if build is running from fork + if: ${{ success() && (env.AWS_ACCESS_KEY_ID == 0 || env.AWS_SECRET_ACCESS_KEY == 0) }} + run: | + echo "VCPKG_BINARY_SOURCES=clear;x-aws-config,no-sign-request;x-aws,s3://vcpkg.cache.boinc/,read" >> $GITHUB_ENV + + - name: libs cmake + run: osx/ci_build_libs_cmake.sh + + - name: Prepare logs on failure + if: ${{ failure() }} + run: python3 ./deploy/prepare_deployment.py logs + + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v3 + with: + name: osx_logs_cmake-build_${{ github.event.pull_request.head.sha }} + path: deploy/logs.7z