109 lines
3.6 KiB
YAML
109 lines
3.6 KiB
YAML
name: Python Test
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
pull_request:
|
||
branches:
|
||
- main
|
||
- develop
|
||
paths:
|
||
- 'src/**'
|
||
- 'tests/**'
|
||
- '.github/workflows/pytest.yml'
|
||
- 'requirements.txt'
|
||
- 'requirements-dev.txt'
|
||
jobs:
|
||
python-test:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v3
|
||
|
||
- name: Set up Python
|
||
uses: actions/setup-python@v4
|
||
with:
|
||
python-version: "3.12"
|
||
|
||
- name: Install dependencies
|
||
id: installDependencies
|
||
run: |
|
||
pip install -r requirements.txt
|
||
pip install -r requirements-dev.txt
|
||
|
||
- name: Run Python Test
|
||
id: runPyTest
|
||
run: |
|
||
pytest --junitxml=pytest.xml --cov-report term-missing --cov=src tests/ | tee pytest-coverage.txt
|
||
|
||
- name: Coverage Report
|
||
id: CoverageReport
|
||
if: success() # テスト成功時のみ実行
|
||
run: |
|
||
coverage-badge -o coverage.svg
|
||
python - <<EOF
|
||
from scripts.generate_coverage import GenerateCoverage
|
||
generate_coverage = GenerateCoverage()
|
||
generate_coverage.save_table()
|
||
EOF
|
||
|
||
- name: Generate coverage-report Branch AND README.md
|
||
id: generateCoverageReportBranch
|
||
if: success() # テスト成功時のみ実行
|
||
run: |
|
||
# ブランチ存在確認と安全な作成/チェックアウト処理
|
||
set -euo pipefail
|
||
|
||
# 必要なファイルを一時退避
|
||
mkdir -p /tmp/coverage-backup
|
||
cp coverage.svg /tmp/coverage-backup/
|
||
cp coverage_table.md /tmp/coverage-backup/
|
||
|
||
# リモート情報を取得
|
||
git fetch --all --prune
|
||
|
||
# coverage-report ブランチへ切り替え
|
||
if git ls-remote --exit-code origin coverage-report >/dev/null 2>&1; then
|
||
echo "Remote branch exists: origin/coverage-report"
|
||
if ! git rev-parse --verify coverage-report >/dev/null 2>&1; then
|
||
git checkout -b coverage-report origin/coverage-report
|
||
else
|
||
git checkout coverage-report
|
||
fi
|
||
# 既存ファイルをクリア(README.mdとcoverage.svgのみ残す)
|
||
git rm -rf . || true
|
||
git clean -fdx
|
||
else
|
||
echo "Remote branch missing; creating orphan local branch coverage-report"
|
||
git checkout --orphan coverage-report
|
||
git rm -rf . || true
|
||
git clean -fdx
|
||
fi
|
||
|
||
# 退避したファイルを復元
|
||
cp /tmp/coverage-backup/coverage.svg .
|
||
cp /tmp/coverage-backup/coverage_table.md .
|
||
|
||
- name: Update Readme
|
||
id: updateReadme
|
||
run: |
|
||
echo "# Pytest Report" > README.md
|
||
echo "" >> README.md
|
||
echo "" >> README.md
|
||
echo "" >> README.md
|
||
cat coverage_table.md >> README.md
|
||
cat README.md
|
||
|
||
- name: Check files before upload
|
||
id: checkFiles
|
||
run: ls -l README.md coverage.svg
|
||
|
||
- name: Commit Test Report To coverage-report Branch
|
||
id: commitTestReport
|
||
if: success() # テスト成功時のみ実行
|
||
run: |
|
||
git config --global user.name "github-actions[bot]"
|
||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||
git add README.md coverage.svg
|
||
git commit -m "Update coverage report"
|
||
git push https://actions-bot:${{ secrets.GITEA_TOKEN }}@gitea.pglikers.com/data-science/cloud-run-job-base.git coverage-report --force
|