GitHub Actions로 이동하는 Rubocop 가속화
2664 단어 RuboCopGitHubActions루비
TL;DR
Rubocop은 캐시 파일을 생성하고 두 번째 이후에는 차등 스캔을 수행합니다. GiuHub Actions의 캐시 기능을 사용하면 캐시 파일을 유지하면 실행 시간을 크게 줄일 수 있습니다.
Rubocop 캐시
Rubocop은 스캔 속도를 높이기 때문에 실행 후 홈 디렉토리의 .cache
아래에 캐시 파일을 생성합니다. 규칙에 변경사항이 없는 경우 두 번째 이후의 스캔은 변경된 파일만 검사합니다.
GitHub Actions는 환경이 매번 지워지므로 GitHub Actios의 캐시 기능을 사용하여 Rubocop의 캐시 파일을 유용하게 사용할 수 있습니다.
설정 예(발췌)
.github/workflows/rails.yml - name: Cache rubocop
uses: actions/cache@v1
with:
path: ~/.cache/rubocop_cache
key: ${{ runner.os }}-rubocop-${{ github.head_ref }}
restore-keys: |
${{ runner.os }}-rubocop-
${{ runner.os }}-rubocop-${{ github.base_ref }}
${{ runner.os }}-rubocop-${{ hashFiles('**/.rubocop.yml') }}
- name: Rubocop
run: bundle exec rubocop --parallel
설정 내용
Rubocop 앞에 지정합니다. 캐시 키워드를 무엇으로 만드는지 문제가 있지만 끌어 오기 요청을 트리거로 이동하므로 "소스 분기 이름"> "대상 분기 이름"> "rubocop.yml 해시"라는 순서로 지정합니다. .
가능한 한 캐쉬를 유효하게 사용하고 싶은 곳입니다만, 캐쉬 생성시와 현재의 코드 차분이 커지면, 결국 스캔하는 파일수가 증가해 버립니다.
따라서 일반적으로 소스 브랜치 이름을 키에 캐시하고 처음 실행하는 브랜치의 경우 대상 브랜치의 캐시를 사용합니다. 타겟 브랜치의 캐쉬도 없는 경우는 .rubocop.yml
의 해시를 키로 한 캐쉬를 사용합니다.
이를 통해 분기별로 다른 캐시를 사용하여 효율적으로 테스트할 수 있습니다.
--parallel 옵션
본근과는 관계 없습니다만, rubocop에 --parallel
옵션을 부여하면(자) 병렬 실행됩니다.
GitHub Actions가 실행되는 환경은 2vCPU이므로 빨라집니다.
효과
차이가 없는 코드로 실행해 보았습니다.
설정 전
1분 27초가 소요
설정 후
3초만에 끝났어
Reference
이 문제에 관하여(GitHub Actions로 이동하는 Rubocop 가속화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lighthawk/items/132c4959e0d5ef989e1d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rubocop은 스캔 속도를 높이기 때문에 실행 후 홈 디렉토리의
.cache
아래에 캐시 파일을 생성합니다. 규칙에 변경사항이 없는 경우 두 번째 이후의 스캔은 변경된 파일만 검사합니다.GitHub Actions는 환경이 매번 지워지므로 GitHub Actios의 캐시 기능을 사용하여 Rubocop의 캐시 파일을 유용하게 사용할 수 있습니다.
설정 예(발췌)
.github/workflows/rails.yml - name: Cache rubocop
uses: actions/cache@v1
with:
path: ~/.cache/rubocop_cache
key: ${{ runner.os }}-rubocop-${{ github.head_ref }}
restore-keys: |
${{ runner.os }}-rubocop-
${{ runner.os }}-rubocop-${{ github.base_ref }}
${{ runner.os }}-rubocop-${{ hashFiles('**/.rubocop.yml') }}
- name: Rubocop
run: bundle exec rubocop --parallel
설정 내용
Rubocop 앞에 지정합니다. 캐시 키워드를 무엇으로 만드는지 문제가 있지만 끌어 오기 요청을 트리거로 이동하므로 "소스 분기 이름"> "대상 분기 이름"> "rubocop.yml 해시"라는 순서로 지정합니다. .
가능한 한 캐쉬를 유효하게 사용하고 싶은 곳입니다만, 캐쉬 생성시와 현재의 코드 차분이 커지면, 결국 스캔하는 파일수가 증가해 버립니다.
따라서 일반적으로 소스 브랜치 이름을 키에 캐시하고 처음 실행하는 브랜치의 경우 대상 브랜치의 캐시를 사용합니다. 타겟 브랜치의 캐쉬도 없는 경우는 .rubocop.yml
의 해시를 키로 한 캐쉬를 사용합니다.
이를 통해 분기별로 다른 캐시를 사용하여 효율적으로 테스트할 수 있습니다.
--parallel 옵션
본근과는 관계 없습니다만, rubocop에 --parallel
옵션을 부여하면(자) 병렬 실행됩니다.
GitHub Actions가 실행되는 환경은 2vCPU이므로 빨라집니다.
효과
차이가 없는 코드로 실행해 보았습니다.
설정 전
1분 27초가 소요
설정 후
3초만에 끝났어
Reference
이 문제에 관하여(GitHub Actions로 이동하는 Rubocop 가속화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lighthawk/items/132c4959e0d5ef989e1d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- name: Cache rubocop
uses: actions/cache@v1
with:
path: ~/.cache/rubocop_cache
key: ${{ runner.os }}-rubocop-${{ github.head_ref }}
restore-keys: |
${{ runner.os }}-rubocop-
${{ runner.os }}-rubocop-${{ github.base_ref }}
${{ runner.os }}-rubocop-${{ hashFiles('**/.rubocop.yml') }}
- name: Rubocop
run: bundle exec rubocop --parallel
Rubocop 앞에 지정합니다. 캐시 키워드를 무엇으로 만드는지 문제가 있지만 끌어 오기 요청을 트리거로 이동하므로 "소스 분기 이름"> "대상 분기 이름"> "rubocop.yml 해시"라는 순서로 지정합니다. .
가능한 한 캐쉬를 유효하게 사용하고 싶은 곳입니다만, 캐쉬 생성시와 현재의 코드 차분이 커지면, 결국 스캔하는 파일수가 증가해 버립니다.
따라서 일반적으로 소스 브랜치 이름을 키에 캐시하고 처음 실행하는 브랜치의 경우 대상 브랜치의 캐시를 사용합니다. 타겟 브랜치의 캐쉬도 없는 경우는
.rubocop.yml
의 해시를 키로 한 캐쉬를 사용합니다.이를 통해 분기별로 다른 캐시를 사용하여 효율적으로 테스트할 수 있습니다.
--parallel 옵션
본근과는 관계 없습니다만, rubocop에
--parallel
옵션을 부여하면(자) 병렬 실행됩니다.GitHub Actions가 실행되는 환경은 2vCPU이므로 빨라집니다.
효과
차이가 없는 코드로 실행해 보았습니다.
설정 전
1분 27초가 소요
설정 후
3초만에 끝났어
Reference
이 문제에 관하여(GitHub Actions로 이동하는 Rubocop 가속화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lighthawk/items/132c4959e0d5ef989e1d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GitHub Actions로 이동하는 Rubocop 가속화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lighthawk/items/132c4959e0d5ef989e1d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)