จุดประสงค์ของคำตอบนี้คือแสดงให้เห็นว่าการแคชสามารถทำได้ด้วยการกระทำ gitub ไม่จำเป็นต้องแสดงวิธีการแคช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
? ถ้าเป้าหมายของคุณคือการเร่งกระบวนการสร้างแล้วคุณยังต้องคำนึงถึงระยะเวลาที่มีการใช้ในการเรียกคืน (การดาวน์โหลดและการสกัด) แคช VS valgrind
เพียงแค่ใช้คำสั่งอีกครั้งในการติดตั้ง
และในที่สุดการกู้คืนแคชสมมติว่ามันถูกเก็บไว้ที่/tmp/valgrind
คุณสามารถใช้คำสั่ง:
cp --force --recursive /tmp/valgrind/* /
ซึ่งโดยทั่วไปจะคัดลอกไฟล์ทั้งหมดจากแคชไปยังพาร์ติชันรูท
นอกเหนือจากกระบวนการข้างต้นฉันยังมีตัวอย่างของ "แคช valgrind" ด้วยการติดตั้งและรวบรวมจากแหล่งที่มา ขณะนี้แคชมีขนาดประมาณ 63MB (บีบอัด) และยังต้องมีการติดตั้งแยกต่างหากเพื่อlibc
เอาชนะวัตถุประสงค์
อ้างอิง:
Cache not found for input keys: ***.
ครั้งและเสมอไป ฉันเพิ่มVALGRIND_VERSION
ความลับในการตั้งค่า> ความลับใช่มั้ย