커버리지용 컨테이너
몇 년 전에 나는 Travis CI에 들어가서 많은 my GitHub repos을 설정하여 내가 repo에 커밋할 때마다 자동으로 테스트를 실행했습니다. 나중에 테스트 실행을 Coveralls.io에 연결하는 방법도 알아내어 테스트 범위가 어떻게 보이는지에 대한 예쁜 그래프를 얻었습니다. 나는 a talk about what I had done을 주었다.
하지만 두 가지가 바뀌었습니다.
첫째, Travis CI가 너무 유명해져서 결국 무료 서비스를 없앴습니다. 그리고 두 번째로 GitHub Actions이 도입되었습니다. 지난 몇 년 동안 CI용 GitHub Actions를 사용하기 위해 많은 리포지토리를 설정했습니다. 하지만 기본적으로 게을러서 해당 저장소에서 Travis CI 구성을 제거하지 않았습니다.
하지만 지난 주에 저는 그 일을 시작할 때가 되었다고 결정했습니다. 그리고 .travis.yml을 제거하려고 했을 때 GitHub Actions CI 워크플로에서 뭔가 빠졌다는 것을 깨달았습니다. 단위 테스트를 실행하고 있었지만 테스트 범위에 대해 보고하지 않았습니다. 그래서 그것을 고칠 시간이었습니다.
GitHub 워크플로에서 Travis CI를 Coveralls.io에 연결하는 로직을 다시 구현해야 했습니다. 그것은 실제로 매우 간단하다는 것이 밝혀졌습니다. Devel::Cover::Report::Coveralls이라는 CPAN 모듈이 있습니다. 이 모듈은 Devel::Cover에서 출력을 가져와 올바른 형식으로 변환하고 Coveralls.io로 보냅니다. 그리고 보너스로 GitHub 워크플로에서 이를 구현하는 방법을 보여주는 문서가 있습니다.
그래서 CPAN 모듈 중 하나에 대한 워크플로 정의 파일을 해킹했고 몇 분 안에 작동했습니다.
글쎄, 나는 "몇 분"이라고 말했지만 실행하는 데 13분이 넘게 걸렸습니다. Devel::Cover::Report::Coveralls는 매우 무거운 모듈이며 작업을 수행하려면 다른 많은 모듈을 설치해야 합니다.
이 시점에서 이것이 어디로 가는지 짐작할 수 있습니다. 그리고 당신이 옳을 것입니다.
Devel::Cover::Report::Coveralls가 이미 설치된 Docker 컨테이너를 만들었습니다. 그리고 누구나 Docker 허브davorg/perl-coveralls에서 사용할 수 있습니다.
내 GitHub 워크플로 및 커버리지 작업에 대한 몇 가지 작은 조정이 이제 내 새 컨테이너에서 실행되고 있으며 13분이 아닌 29초가 걸립니다. 그래서 그것은 승리입니다.
내workflow file의 관련 섹션은 다음과 같습니다.
coverage:
runs-on: ubuntu-latest
container: davorg/perl-coveralls:latest
name: Test coverage
steps:
- uses: actions/checkout@v3
- name: Install modules
run: cpanm -n --installdeps .
- name: Coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: cover -test -report Coveralls
그리고 위와 같이 Coveralls.io에서 멋진 그래프를 생성합니다.
유용하다고 생각되면 알려주세요.
게시물 Containers for Coverage이 Perl Hacks에 처음 나타났습니다.
Reference
이 문제에 관하여(커버리지용 컨테이너), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/davorg/containers-for-coverage-1e7o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)