MIL-001: repository setup and tooling #35
@@ -0,0 +1,23 @@
|
||||
# English comments: fails a pull request that adds a comment or docstring that
|
||||
# is not English (the project's language rule for source code).
|
||||
#
|
||||
# Triggers: every pull request. Calls the reusable workflow of
|
||||
# TirSystem/git-workflows at the major tag v2 (same organisation). It changes
|
||||
# no file, needs no secret and writes one comment on the pull request.
|
||||
# Implements MIL-001. Verified on the Gitea instance git.tirsystem.com.
|
||||
name: English comments
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
concurrency:
|
||||
group: english-comments-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
english-comments:
|
||||
name: Comments are English
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
uses: TirSystem/git-workflows/.gitea/workflows/english-comments.yml@v2
|
||||
@@ -0,0 +1,27 @@
|
||||
# Quality checks (ruff, mypy) for the Python files of this repository.
|
||||
#
|
||||
# Triggers: every pull request and every push to main.
|
||||
# Calls the reusable workflow of TirSystem/git-workflows at the major tag v2
|
||||
# (same organisation, the tag moves with compatible releases). It changes no
|
||||
# file, needs no secret and writes nothing outside the repository.
|
||||
# Implements MIL-001 (Go/No-Go criterion 5: CI evidence). Verified on the
|
||||
# Gitea instance git.tirsystem.com.
|
||||
name: Quality
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
concurrency:
|
||||
group: quality-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
quality:
|
||||
name: Quality checks
|
||||
permissions:
|
||||
contents: read
|
||||
uses: TirSystem/git-workflows/.gitea/workflows/quality-checks.yml@v2
|
||||
with:
|
||||
languages: python
|
||||
@@ -0,0 +1,55 @@
|
||||
# Publish accepted milestones to the git host.
|
||||
#
|
||||
# Triggers: a push to main that changes docs/milestones/ or docs/sqa/reviews/,
|
||||
# and a manual run (dry run by default). It runs the framework's
|
||||
# ci-publish-milestones.sh, which creates or updates the Milestone and the
|
||||
# Issues of every milestone that is Accepted with a Go review. Nothing is closed
|
||||
# or deleted. Secret: TOKEN_FOR_GITEA_SYNC (a Gitea token with read and write on
|
||||
# issues; S01 creates it in the repository settings). Changes outside the
|
||||
# repository: Milestones and Issues on the git host. Copied from
|
||||
# framework/templates/ci/sync-milestones.yml; implements MIL-001.
|
||||
|
||||
name: Publish accepted milestones
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "docs/milestones/**"
|
||||
- "docs/sqa/reviews/**"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
dry_run:
|
||||
description: "Preview only: print the plan and create nothing"
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
concurrency:
|
||||
group: publish-accepted-milestones
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- name: Check out the project and its framework submodule
|
||||
uses: actions/checkout@v4.2.2
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.TOKEN_FOR_GITEA_SYNC }}
|
||||
|
||||
- name: Make sure curl and jq are available
|
||||
run: bash framework/scripts/ci-publish-milestones.sh ensure-tools
|
||||
|
||||
- name: Publish accepted milestones
|
||||
env:
|
||||
# Gitea reads GITEA_TOKEN, GitHub's gh reads GH_TOKEN; both come from
|
||||
# the one secret named above.
|
||||
GITEA_TOKEN: ${{ secrets.TOKEN_FOR_GITEA_SYNC }}
|
||||
GH_TOKEN: ${{ secrets.TOKEN_FOR_GITEA_SYNC }}
|
||||
# Empty on a push (a real run); "true" or "false" on a manual run.
|
||||
DRY_RUN: ${{ inputs.dry_run }}
|
||||
run: bash framework/scripts/ci-publish-milestones.sh publish
|
||||
@@ -0,0 +1,54 @@
|
||||
# Tests and code metrics.
|
||||
#
|
||||
# Triggers: every pull request (tests only) and every push to main (tests, then
|
||||
# size and coverage badges). The tests run offline. Needs no secret. The metrics
|
||||
# job commits three SVG badges to the badges branch of this repository through
|
||||
# the reusable workflow of TirSystem/git-workflows at the major tag v2 (same
|
||||
# organisation). Implements MIL-001. Verified on git.tirsystem.com.
|
||||
name: Tests and code metrics
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
concurrency:
|
||||
group: tests-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
name: Run pytest with coverage
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v4.2.2
|
||||
- name: Set up Python 3.13
|
||||
uses: actions/setup-python@v5.3.0
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install the project and its test tools
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -e ".[dev]"
|
||||
- name: Run the tests offline
|
||||
run: python -m pytest --cov=scrape_movies --cov-report=xml
|
||||
- name: Keep the coverage report
|
||||
uses: actions/upload-artifact@v4.6.2
|
||||
with:
|
||||
name: coverage
|
||||
path: coverage.xml
|
||||
|
||||
metrics:
|
||||
name: Code metrics badges
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
needs: tests
|
||||
permissions:
|
||||
contents: write
|
||||
uses: TirSystem/git-workflows/.gitea/workflows/code-metrics.yml@v2
|
||||
with:
|
||||
coverage-artifact: coverage
|
||||
coverage-report: coverage.xml
|
||||
@@ -0,0 +1,4 @@
|
||||
extends: relaxed
|
||||
rules:
|
||||
line-length:
|
||||
max: 120
|
||||
Reference in New Issue
Block a user