홈>
트라비스 CI
osx
가 있습니다
Wyzwyz로 구축
소스에서 빌드해야하는 종속성.
brew
를 가지고 있음을 알고
기능, 그러나
cache
를 캐시하는 방법에 대한 문서는 없습니다
빌드 또는 출력.
brew
를 캐시하는 방법에 대한 아이디어
트래비스 패키지?
brew
-
답변 # 1
관련 자료
- Ruby 263의 Travis 빌드에 번 들러 버전이 일치하지 않습니다
- haskell - 다양한 플래그로 스택 캐시 빌드
- caching - Travis CI에서 아이비 캐시 지속성 사용
- continuous integration - Github은 커밋 근처에 새로운 트래비스 빌드를 표시하지 않습니다
- java - travis가 모든 빌드에 실패 함 "잘못된 인터프리터 - 해당 파일 또는 디렉토리 없음"
- "apt-get 설치 실패"로 Travis 빌드 실패
- git - gitlab-runner 또는 Docker는 기본적으로/builds 디렉토리를 캐시합니까?
- python - docker 빌드에서 pip cache 디렉토리 사용
- github-actions - maven 빌드 속도를 높이기위한 캐시 저장소
- travis ci api로 빌드 재시작
- ruby on rails - Travis CI는 각 Github 커밋 푸시에 대해 두 개의 빌드를 만듭니다
관련 질문
- git - Mac Apple Silicon M1 칩에서 홈 브루를 제거하려고 할 때 사소한 오류
- macos - 특정 버전의 vim (+ 클립 보드)을 설치하는 방법
- macos - 명령 줄에서 Homebrew의 clang 사용
- macos - Homebrew와 함께 설치된 ffmpeg에서 libfdk_aac 활성화
- macos - `Brew install python @ 2` 명령이 발생하면 오류가 발생합니다`테마 오류` 해결하는 방법?
- macos - mysql에서 비밀번호가 작동하지 않는 이유는 무엇입니까? 맥
- 개발을위한 Python 버전
- macos - mac에 homebrew를 어떻게 설치합니까? dyld - 라이브러리가로드되지 않았습니다 : @ rpath/libssl100dylib
- macos - 힘내 클로닝 오류 - '치명적 :…
- macos - Homebrew를 통해 gpg2를 설치하는 방법은 무엇입니까?
여기에 느슨하게 관련된 3 가지 문제가 있습니다 :
캐시 다운로드 병
현지에서 만든 병을 캐치
캐시 홈브류 메타 데이터
세 가지가 모두 필요한 것은 아니므로 필요에 맞는 섹션을 따르십시오.
<시간> 캐시 다운로드 병$HOME/Library/Caches/Homebrew
추가 Travis의 캐시(실제로이 경로는brew --cache
를 사용하여 검색해야합니다) 하지만 여기서 전화 할 수는 없습니다.)brew cleanup
실행before_cache
에서 stage-그렇지 않으면 새 패키지 버전이 출시됨에 따라 캐시가 무한대로 증가합니다전체 코드가 너무 길어서 여기에 나열하여 알고리즘을 제공 할 수 없습니다.
이것은 이전 섹션에 추가 된 것입니다.사용하지 않는 경우설치시단계에서 Homebrew 캐시 외부의 어딘가에 로컬 병을 저장하고 아래의 캐시에 추가하십시오.시작시단계에서 적절한 이름
설치 중 :
brew deps
를 사용하여 패키지의 종속성 확인 재귀 적으로사용자 환경에 패키지 용 병을 사용할 수없는 경우 (
(bottled)
없음) 와이즈 비즈 출력),brew info <pkg>
로 빌드 종속성 포함각 패키지 및 종속성에 대해
설치되어있는 경우 (
--include-build
성공) 및 최신 버전 (brew list --versions <pkg>
에서 없음) ), 건너 뛰기이전 버전이있는 경우 다음 단계에서 이전 버전과 함께 새 버전을 설치해야합니다.
brew outdated
예전 버전이 아닌 경우 (brew unlink
없음) 와이즈 비즈 출력)[keg-only]
를 모두 호출brew info
와 함께병이 있으면 바로
brew install
그것은병을 사용할 수없는 경우
다음 순서로 빌드하고 설치하십시오 :
(결과 병 및 JSON 파일의 이름을 얻는 공식적인 방법이없는 것 같습니다.
brew install
에서 병 이름을 가져 왔습니다. 출력 및 JSON 파일에서 유추 된 JSON 파일 이름)병 공식을 패키지 공식에 추가
병 파일을
brew bottle
에서 제공 한 적절한 이름으로 Travis 캐시에 저장하십시오.병 정보를 추가 한 후에 만이 작업을 수행하십시오. 그렇지 않으면 대신 소스 패키지의 경로를 얻게됩니다.
(Homebrew는 또한
brew bottle --merge --write <json file>
에서 다운로드 한 파일에 대한 심볼릭 링크를 만듭니다. . 이 작업을 수행 할 필요는 없습니다.)나중에 사용하기 위해 JSON 파일을 저장하십시오. 위치를 Travis 캐시에 추가하십시오.
시작시 :
와이즈 비즈 당신이 가고 있다면
저장된 .json 파일을 살펴 봅니다. 각각에 대해 로컬 병이 여전히 적합한 지 확인하십시오 (버전과 재 구축 번호를 비교하여
brew --cache <pkg>
의 출력을 구문 분석 할 수 있음) 그리고$HOME/Library/Caches/Homebrew
이 데이터).캐시 된 병 및 .json을 삭제하십시오.
brew update
로 병으로가는 길을 찾을 수 없으므로 이 시점에서 독립적으로 저장해야합니다. 이 글을 쓰는 시점에 Symlink는 Travis의 캐시에 저장되지 않으므로 경로를 보유한 일반 파일을 사용했습니다.그렇다면 병 정보를 위의 공식에 다시 추가하십시오
버전과 충돌하지 않고 공식에서 다운로드 URL을 변경할 가능성은 거의 없습니다. 그러면 병의 예상 캐시 이름이 해시가 다운로드 URL의 해시이므로 변경 될 것입니다. 이것을 허용하려면
brew info --json=v1 <pkg>
인지 확인하십시오. 정보를 추가 한 후 여전히 병을 가리 킵니다.와이즈 비츠에서 :
brew info --json=v1 <bottle>
를 사용하는 경우 이전 섹션에서 로컬로 작성된 병 파일을 캐시에서 어딘가에 저장 한 후 실행하십시오.brew --cache
이번에는 필요하지 않은 것들을 삭제할 수 있습니다.brew --cache <pkg>
후 삭제 한 파일을 복원하십시오.(다시 말해서 전체 코드가 너무 길어서 알고리즘을 제공합니다.)
before_cache
를 실행하면 (brew cleanup
에 비밀 변수가 없는지 확인하십시오. 또는 Travis 프로젝트 설정-cleanup
cleanup
인 경우에만 많은 상태 메시지를 인쇄합니다 tty)입니다. Homebrew 자체 업데이트 작업을 정확히 구성하는 항목을 확인할 수 있습니다. 따라서 캐시해야하는 항목은 다음과 같습니다.풀기 (실제로
brew update --verbose
) 실제로.travis.yml
인 몇 가지 경로에 '기본적으로' 리포지토리 :brew
-자가 맥주 자체stdout
-설치된 탭탭을 통과하고 사용하지 않는 비트를 캐시하고 마이그레이션합니다. Travis 캐시 컨텐츠는 기존 디렉토리 구조를 대체하지 않고 기존 디렉토리 구조에 추가하기 때문에 두 번째로 업데이트의 일부로 삭제되었지만 새 VM에 다시있는 파일로 인해 이상한 조치 및 오류가 발생할 수 있습니다. 내가 목격 한 사람들 :
항상
rebase
마이그레이션을 시도합니다git
로/usr/local/Homebrew
에서 사본 작성 . 캐시 된 경우이 사본은 다음 실행시 "오류 : 파일이 있습니다"를 발생시킵니다.언제나 많은 커밋되지 않은 파일을
/usr/local/Homebrew/Library/Taps/*/*
로 가져 오려고합니다.따라서 작업은 다음과 같습니다.
Taps/caskroom/homebrew-cask
추가 트래비스 캐시로/usr/local/Cellar및/usr/local/opt를 추가하는 것은 나쁜 생각으로 판명되었습니다. 먼저 너무 커서 너무 큰 시간이 소요됩니다. 캐시를 업로드하는 단계;둘째, 이것은 안전하지 않습니다 'cuz
Taps/homebrew/homebrew-cask
스크립트는 시스템의 다른 임의의 부분에 영향을 줄 수 있으므로 결과를 캐시하지 않고 매번 (캐시 된) 병에서 새 패키지 버전을 설치해야합니다. 병을 설치하는 데는 몇 초 밖에 걸리지 않습니다.와이즈 비즈 이전 :Homebrew 코드베이스 정리
Taps/homebrew/homebrew-cask/homebrew-cask
삭제Taps/homebrew/homebrew-versions
경우 디렉토리 존재합니다모든
/usr/local/Homebrew
찾기postinstall
에서 repos (와이즈 와이즈)brew update
를 얻을 결과) 및Taps/caskroom/homebrew-cask
를 실행하십시오. 각각 Travis의 남은 음식을 제거하기 위해Taps/homebrew/homebrew-cask
를 사용하여 남은 음식에서 Homebrew 캐시 정리 (이전 섹션과 함께 사용하는 경우 추가 작업은 여기를 참조하십시오)-그렇지 않으면git
에서 많은 오류가 발생합니다 "캐시 항목 마이그레이션 ..."단계에서.와이즈 비츠에서 :
/usr/local/Homebrew
사용 대신-병 정보와의 로컬 커밋과의 충돌 가능성을 자동으로 해결합니다.로컬 병을 다시 추가 할 때(이전 섹션과 함께 사용하는 경우) :
병 정보가 이미있는 경우 병 정보를 공식에 다시 추가하지 마십시오
패키지 버전이 변경되고 병 정보가 공식에 있으면 공식 및
find -type d -name .git
에서 제거하십시오. 결과. 그렇게 할 수있는 재고 방법이 없으므로 스크립트를 사용하여 수식 파일을 구문 분석하고 편집하고 해당 라인을dirname
에서 삭제해야합니다 표. 공식 파일의 경로는git clean -fxd
를 사용하여 검색됩니다. .설치시 :
타사 탭을 사용하는 경우 항상 해당 탭이 이미 설치되어 있는지 확인하십시오 :
symlink는 Travis 캐시에 저장되지 않으므로 핀이 기억되지 않을 수 있습니다. 하지만 그것들을 확인하는 것도 아프지 않을 것입니다 :
와이즈 비츠에서 :
brew update
삭제 존재하는 경우brew update --merge