이 답변의 목적은 github 작업으로 캐싱을 수행하는 방법을 보여주는 것입니다. 캐시하는 방법을 보여줄 필요 valgrind
는 없지만 모든 것을 캐시 할 수있는 것은 아니며 캐시를 캐싱하고 복원하는 것과 종속성을 다시 설치하는 것의 상충 관계를 고려해야합니다.
이를 위해 actions/cache
조치를 사용 합니다.
단계적으로 추가하십시오 (valgrind를 사용하기 전에).
- name: Cache valgrind
uses: actions/cache@v1.0.3
id: cache-valgrind
with:
path: "~/valgrind"
key: ${{secrets.VALGRIND_VERSION}}
다음 단계에서는 캐시 된 버전을 설치하거나 리포지토리에서 설치해야합니다.
- name: Install valgrind
env:
CACHE_HIT: ${{steps.cache-valgrind.outputs.cache-hit}}
VALGRIND_VERSION: ${{secrets.VALGRIND_VERSION}}
run: |
if [[ "$CACHE_HIT" == 'true' ]]; then
sudo cp --verbose --force --recursive ~/valgrind/* /
else
sudo apt-get install --yes valgrind="$VALGRIND_VERSION"
mkdir -p ~/valgrind
sudo dpkg -L valgrind | while IFS= read -r f; do if test -f $f; then echo $f; fi; done | xargs cp --parents --target-directory ~/valgrind/
fi
설명
VALGRIND_VERSION
비밀을 다음의 출력으로 설정하십시오 .
apt-cache policy valgrind | grep -oP '(?<=Candidate:\s)(.+)'
이렇게하면 비밀 값을 변경하여 새 버전이 릴리스 될 때 캐시를 무효화 할 수 있습니다.
dpkg -L valgrind
를 사용할 때 설치된 모든 파일을 나열하는 데 사용됩니다 sudo apt-get install valgrind
.
이 명령으로 할 수있는 일은 모든 종속성을 캐시 폴더에 복사하는 것입니다.
dpkg -L valgrind | while IFS= read -r f; do if test -f $f; then echo $f; fi; done | xargs cp --parents --target-directory ~/valgrind/
더욱이
의 모든 구성 요소를 복사하는 것 외에도 valgrind
종속성 (예 : libc
이 경우) 을 복사해야 할 수도 있지만 종속성 체인이 거기에서 커지기 때문에이 경로를 계속 진행하지 않는 것이 좋습니다. 정확하게 말하면, valgrind가 실행하기에 적합한 환경을 갖기 위해 복사하는 데 필요한 종속성은 다음과 같습니다.
이러한 모든 종속성을 복사하려면 위와 동일한 구문을 사용할 수 있습니다.
for dep in libc6 libgcc1 gcc-8-base; do
dpkg -L $dep | while IFS= read -r f; do if test -f $f; then echo $f; fi; done | xargs cp --parents --target-directory ~/valgrind/
done
valgrind
처음 에 설치 하는 데 필요한 모든 것이 단순히 실행 되어야 할 때이 모든 작업이 실제로 문제의 가치가 sudo apt-get install valgrind
있습니까? 빌드 프로세스 속도를 높이는 것이 목표라면 캐시를 복원 (다운로드 및 추출)하는 데 걸리는 시간과 단순히 명령을 다시 실행하여 설치하는 데 걸리는 시간도 고려해야합니다 valgrind
.
마지막으로 캐시가에 있다고 가정하면 캐시를 복원 /tmp/valgrind
하려면 다음 명령을 사용할 수 있습니다.
cp --force --recursive /tmp/valgrind/* /
기본적으로 캐시의 모든 파일을 루트 파티션으로 복사합니다.
위의 프로세스 외에도 소스에서 설치하고 컴파일하여 "valgrind를 캐싱" 하는 예제 도 있습니다 . 캐시의 크기는 현재 약 63MB (압축)이며 여전히 libc
어떤 종류의 목적 에 맞지 않는지를 별도로 설치해야합니다 .
참고 문헌 :
Cache not found for input keys: ***.
.VALGRIND_VERSION
설정> 비밀에 비밀을 추가 했습니다. 맞습니까?