97 lines
3.3 KiB
YAML
97 lines
3.3 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
|
|
git fetch --all --prune
|
|
|
|
# 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
|
|
|
|
- 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
|