ry.yamafuji 6c01018a33
Some checks failed
Python Test / python-test (pull_request) Failing after 9s
test
2025-12-04 09:15:24 +09:00

106 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
git fetch --all --prune
# 未追跡ファイルを一時退避coverage.svg, coverage_table.md など)
mkdir -p /tmp/coverage-backup
if [ -f coverage.svg ]; then mv coverage.svg /tmp/coverage-backup/; fi
if [ -f coverage_table.md ]; then mv coverage_table.md /tmp/coverage-backup/; fi
# 1) リモートの 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 switch -c coverage-report --track origin/coverage-report || git checkout -b coverage-report origin/coverage-report
else
git switch coverage-report || git checkout coverage-report
fi
else
echo "Remote branch missing; creating orphan local branch coverage-report"
# 2) リモートに無い場合は orphan で作成
git switch --orphan coverage-report || git checkout --orphan coverage-report
# ワークツリーを初期化
git rm -rf . || true
fi
# 退避したファイルを復元
if [ -f /tmp/coverage-backup/coverage.svg ]; then mv /tmp/coverage-backup/coverage.svg .; fi
if [ -f /tmp/coverage-backup/coverage_table.md ]; then mv /tmp/coverage-backup/coverage_table.md .; fi
- name: Update Readme
id: updateReadme
run: |
echo "# Pytest Report" > README.md
echo "" >> README.md
echo "![test](coverage.svg)" >> 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