feat: [skip e2e] effective way to use cache (#34774)

issue: https://github.com/milvus-io/milvus/issues/34876
1. try best to download cache
2. upload cache if it is not pull request

Signed-off-by: Yellow Shine <sammy.huang@zilliz.com>
pull/34913/head
yellow-shine 2024-07-23 10:49:51 +08:00 committed by GitHub
parent 260a6e2ba9
commit 1f55061717
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 129 additions and 4 deletions

View File

@ -0,0 +1,49 @@
name: 'Milvus Cache'
description: ''
inputs:
os:
description: 'OS name'
required: true
default: 'ubuntu20.04'
kind:
description: 'Cache kind'
required: false
default: 'all'
runs:
using: "composite"
steps:
- name: Generate CCache Hash
env:
CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }}
run: |
echo "corehash=${CORE_HASH}" >> $GITHUB_ENV
echo "Set CCache hash to ${CORE_HASH}"
shell: bash
- name: Cache CCache Volumes
if: ${{ inputs.kind == 'all' || inputs.kind == 'cpp' }}
uses: actions/cache/restore@v4
with:
path: .docker/amd64-${{ inputs.os }}-ccache
key: ${{ inputs.os }}-ccache-${{ env.corehash }}
restore-keys: ${{ inputs.os }}-ccache-
- name: Cache Conan Packages
if: ${{ inputs.kind == 'all' || inputs.kind == 'cpp' }}
uses: actions/cache/restore@v4
with:
path: .docker/amd64-${{ inputs.os }}-conan
key: ${{ inputs.os }}-conan-${{ hashFiles('internal/core/conanfile.*') }}
restore-keys: ${{ inputs.os }}-conan-
- name: Cache Third Party
if: ${{ inputs.kind == 'all' || inputs.kind == 'thirdparty' }}
uses: actions/cache/restore@v4
with:
path: .docker/thirdparty
key: ${{ inputs.os }}-thirdparty-${{ hashFiles('internal/core/thirdparty/**') }}
restore-keys: ${{ inputs.os }}-thirdparty-
- name: Cache Go Mod Volumes
if: ${{ inputs.kind == 'all' || inputs.kind == 'go' }}
uses: actions/cache/restore@v4
with:
path: .docker/amd64-${{ inputs.os }}-go-mod
key: ${{ inputs.os }}-go-mod-${{ hashFiles('go.sum, */go.sum') }}
restore-keys: ${{ inputs.os }}-go-mod-

49
.github/actions/cache-save/action.yaml vendored Normal file
View File

@ -0,0 +1,49 @@
name: 'Milvus Cache'
description: ''
inputs:
os:
description: 'OS name'
required: true
default: 'ubuntu20.04'
kind:
description: 'Cache kind'
required: false
default: 'all'
runs:
using: "composite"
steps:
- name: Generate CCache Hash
env:
CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }}
run: |
echo "corehash=${CORE_HASH}" >> $GITHUB_ENV
echo "Set CCache hash to ${CORE_HASH}"
shell: bash
- name: Cache CCache Volumes
if: ${{ inputs.kind == 'all' || inputs.kind == 'cpp' }}
uses: actions/cache/save@v4
with:
path: .docker/amd64-${{ inputs.os }}-ccache
key: ${{ inputs.os }}-ccache-${{ env.corehash }}
restore-keys: ${{ inputs.os }}-ccache-
- name: Cache Conan Packages
if: ${{ inputs.kind == 'all' || inputs.kind == 'cpp' }}
uses: actions/cache/save@v4
with:
path: .docker/amd64-${{ inputs.os }}-conan
key: ${{ inputs.os }}-conan-${{ hashFiles('internal/core/conanfile.*') }}
restore-keys: ${{ inputs.os }}-conan-
- name: Cache Third Party
if: ${{ inputs.kind == 'all' || inputs.kind == 'thirdparty' }}
uses: actions/cache/save@v4
with:
path: .docker/thirdparty
key: ${{ inputs.os }}-thirdparty-${{ hashFiles('internal/core/thirdparty/**') }}
restore-keys: ${{ inputs.os }}-thirdparty-
- name: Cache Go Mod Volumes
if: ${{ inputs.kind == 'all' || inputs.kind == 'go' }}
uses: actions/cache/save@v4
with:
path: .docker/amd64-${{ inputs.os }}-go-mod
key: ${{ inputs.os }}-go-mod-${{ hashFiles('go.sum, */go.sum') }}
restore-keys: ${{ inputs.os }}-go-mod-

View File

@ -90,7 +90,7 @@ jobs:
echo "useasan=ON" >> $GITHUB_ENV
echo "Setup USE_ASAN to true since cpp file(s) changed"
- name: Download Caches
uses: ./.github/actions/cache
uses: ./.github/actions/cache-restore
with:
os: 'ubuntu22.04'
kind: 'cpp'
@ -104,6 +104,13 @@ jobs:
with:
name: code
path: code.zip
- name: Save Caches
uses: ./.github/actions/cache-save
if: github.event_name != 'pull_request'
with:
os: 'ubuntu22.04'
kind: 'cpp'
UT-Cpp:
name: UT for Cpp
needs: Build
@ -127,7 +134,7 @@ jobs:
unzip code.zip
rm code.zip
- name: Download Caches
uses: ./.github/actions/cache
uses: ./.github/actions/cache-restore
with:
os: 'ubuntu22.04'
kind: 'cpp'
@ -150,6 +157,12 @@ jobs:
./lcov_output.info
*.info
*.out
- name: Save Caches
uses: ./.github/actions/cache-save
if: github.event_name != 'pull_request'
with:
os: 'ubuntu22.04'
kind: 'cpp'
UT-Go:
name: UT for Go
needs: Build
@ -173,7 +186,7 @@ jobs:
unzip code.zip
rm code.zip
- name: Download Caches
uses: ./.github/actions/cache
uses: ./.github/actions/cache-restore
with:
os: 'ubuntu22.04'
kind: 'go'
@ -195,6 +208,13 @@ jobs:
./lcov_output.info
*.info
*.out
- name: Save Caches
uses: ./.github/actions/cache-save
if: github.event_name != 'pull_request'
with:
os: 'ubuntu22.04'
kind: 'go'
integration-test:
name: Integration Test
needs: Build
@ -218,7 +238,7 @@ jobs:
unzip code.zip
rm code.zip
- name: Download Caches
uses: ./.github/actions/cache
uses: ./.github/actions/cache-restore
with:
os: 'ubuntu22.04'
kind: 'go'
@ -239,6 +259,13 @@ jobs:
./it_coverage.txt
*.info
*.out
- name: Save Caches
uses: ./.github/actions/cache-save
if: github.event_name != 'pull_request'
with:
os: 'ubuntu22.04'
kind: 'go'
codecov:
name: Upload Code Coverage
needs: [UT-Cpp, UT-Go, integration-test]