개방형 코드 커버리지 봇
내 워크플로우
배경:
Github 작업을 활용할 수 있는 코드 커버리지 솔루션을 검색하려고 하면 Coedcov와 Coveralls라는 두 주요 플레이어를 발견하게 될 것입니다. 그러나 둘 다 독점적이며 추가 비용이 부과됩니다. 개인 프로젝트나 초기 단계의 스타트업에서 작업할 때 동일한 비용을 추가로 지출하고 싶지 않을 것입니다.
동작:
그래서 저는 작업 아티팩트를 사용하여 커버리지 보고서를 생성하고 끌어오기 요청에 대해 설명하는 이 작업을 설계했습니다. 또한 보고서를 파일 서버에 업로드하는 기능도 있습니다. 나는 매우 데이터 집약적인 Django 프로젝트를 관리하기 위해 동일한 것을 사용했습니다. 내 테스트 스위트 워크플로에서 Coverage.py를 사용하여 보고서를 생성했습니다. 이러한 보고서를 action-artifacts의 텍스트 파일로 저장하고 업로드도 합니다. 보고서에 약간의 사전 처리가 수행되어 주석을 쉽게 작성할 수 있습니다.
전체 프로세스는 두 부분으로 나뉩니다.
예상되는 결과:
첫 번째 부분은 매우 간단했습니다. Coverage.py를 사용하여 표준 Django 테스트를 실행했습니다. 아래 Yaml 파일에서 구문을 찾을 수 있습니다. 두 번째 부분에서는 새 작업 저장소open-coverage-action를 생성했습니다. 이 저장소는 텍스트 파일을 입력으로 사용하고 끌어오기 요청에 주석을 추가합니다. 보고서의 전처리를 추가하는 작업도 진행 중입니다. 현재 기본 bash를 사용하여 최종 결과가 포함된 부분을 추출하고 약간의 광택을 추가한 다음 open-coverage-action을 위해 새 파일에 저장합니다. 또한 file.io를 사용하여 추가 참조를 위해 전체 보고서를 업로드하고 또한 upload-artifact 작업을 사용하여 이를 아티팩트로 업로드합니다.
내 작업 흐름에 필요한 작업을 거의 수행합니다.
제출 카테고리:
메인테이너 머스트해브
Yaml 파일 또는 코드 링크
name: pr-coverage
on: pull_request
jobs:
build:
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: [3.6]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip
uses: actions/cache@v2
with:
# This path is specific to Ubuntu
path: ~/.cache/pip
# Look to see if there is a cache hit for the corresponding requirements file
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Install Python Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Generating and Uploading Coverage Report
run: |
touch local.env
echo DEBUG_VALUE=1 > local.env
cd data_api/
python manage.py makemigrations
python manage.py migrate
coverage run manage.py test --noinput --parallel 16
coverage report > results.txt
# Modifying coverage report
echo "Coverage Report: " > report.txt
echo " Statements | Miss | Cover " >> report.txt
tail -4 results.txt >> report.txt
echo " " >> report.txt
echo "Link to full report :" >> report.txt
# uploading report to file.io any other services can be used
curl -F "[email protected]" https://file.io | python3 -c "import sys, json; print(json.load(sys.stdin)['link'])" >> report.txt
env:
SECRET_KEY: ${{ secrets.SECRET_KEY }}
ADMIN_URL_KEY: ${{ secrets.ADMIN_URL_KEY }}
DATABASE_NAME: github_actions
DATABASE_USER: postgres
DATABASE_PASSWORD: postgres
DATABASE_HOST: 127.0.0.1
DATABASE_PORT: 5432
- uses: actions/upload-artifact@v2
with:
name: report
path: data_api/report.txt
- uses: actions/download-artifact@v2
with:
name: report
- name: Open Coverage Notifier Action
uses: Bearbobs/open-coverage-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
path: data_api/report.txt
전체 파일은 요점 @workflow에서 찾을 수 있습니다.
추가 리소스/정보
이것은이 아이디어에 대한 나의 첫 번째 시도입니다. 보고서의 전처리를 반복하여 더 세련되게 만들 계획입니다. 현재 이 작업 흐름은 모든 Django 프로젝트 관리자가 직접 사용할 수 있습니다. 무료 텍스트 업로드 서비스와 Github 작업을 제공하는 file.io에 특별한 감사를 드립니다. 자세한 내용은 open-coverage-action 저장소를 참조하십시오.
제안 및 피드백을 받으려면 연락해 주세요. 감사합니다.
사용된 서비스 링크:
Open-Coverage-Action
File.io
Coverage.py
Reference
이 문제에 관하여(개방형 코드 커버리지 봇), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bearbobs/open-code-coverage-bot-7m5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)