This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [python](https://github.com/actions/python-versions) | uses-with | minor | `3.13` -> `3.14` | | python | final | minor | `3.13-slim` -> `3.14-slim` | --- ### Release Notes <details> <summary>actions/python-versions (python)</summary> ### [`v3.14.0`](https://github.com/actions/python-versions/releases/tag/3.14.0-18313368925): 3.14.0 [Compare Source](https://github.com/actions/python-versions/compare/3.13.8-18331000654...3.14.0-18313368925) Python 3.14.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzguNSIsInVwZGF0ZWRJblZlciI6IjQxLjE0MC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL2RlcGVuZGVuY2llcyJdfQ==--> Reviewed-on: #166 Co-authored-by: renovate[bot] <renovate-bot@git.tainton.uk> Co-committed-by: renovate[bot] <renovate-bot@git.tainton.uk>
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: CI
 | |
| on:
 | |
|   pull_request:
 | |
|     types:
 | |
|       - opened
 | |
|       - edited
 | |
|       - synchronize
 | |
|       - reopened
 | |
| 
 | |
| jobs:
 | |
|   ci:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - name: Check out repository code
 | |
|         uses: actions/checkout@v5.0.0
 | |
|         with:
 | |
|           fetch-depth: 0
 | |
| 
 | |
|       - name: Run Hadolint
 | |
|         uses: hadolint/hadolint-action@v3.3.0
 | |
|         with:
 | |
|           dockerfile: Dockerfile
 | |
|           output-file: hadolint.out
 | |
|           format: sonarqube
 | |
|           no-fail: true
 | |
| 
 | |
|       - name: Setup Python
 | |
|         uses: actions/setup-python@v6
 | |
|         with:
 | |
|           python-version: "3.14"
 | |
| 
 | |
|       - name: uv cache
 | |
|         uses: actions/cache@v4
 | |
|         with:
 | |
|           path: /tmp/.uv-cache
 | |
|           key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
 | |
|           restore-keys: |
 | |
|             uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
 | |
|             uv-${{ runner.os }}
 | |
| 
 | |
|       - name: Install dependencies
 | |
|         run: uv sync
 | |
|       
 | |
|       - name: Check Import Sorting
 | |
|         run: uv run isort --check app/ tests/
 | |
| 
 | |
|       - name: Lint
 | |
|         run: |
 | |
|           uv run pylint --fail-under=8 --recursive=yes --output-format=parseable --output=lintreport.txt app/ tests/
 | |
|           cat lintreport.txt
 | |
| 
 | |
|       - name: Unit Test
 | |
|         run: |
 | |
|           uv run coverage run -m pytest -v --junitxml=testresults.xml
 | |
|           uv run coverage report
 | |
|         # sed -i 's@${{ gitea.workspace }}@/github/workspace@g' coverage.xml
 | |
| 
 | |
|       - name: Minimize uv cache
 | |
|         run: uv cache prune --ci
 | |
| 
 | |
|       # - name: SonarQube Scan
 | |
|       #   uses: SonarSource/sonarqube-scan-action@v5.2.0
 | |
|       #   env:
 | |
|       #     SONAR_HOST_URL: ${{ secrets.SONARQUBE_HOST_URL }}
 | |
|       #     SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
 | |
| 
 | |
|       - name: Set up environment for Snyk
 | |
|         run: |
 | |
|           uv pip freeze > requirements.txt
 | |
|           mv pyproject.toml pyproject.toml.bak
 | |
|           mv uv.lock uv.lock.bak
 | |
| 
 | |
|       - name: Snyk SAST Scan
 | |
|         uses: snyk/actions/python@master
 | |
|         env:
 | |
|           SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
 | |
|         with:
 | |
|           # command: snyk
 | |
|           args: snyk code test #--all-projects --exclude=.archive
 | |
| 
 | |
|       # - name: Snyk Vulnerability Scan
 | |
|       #   uses: snyk/actions/python@master
 | |
|       #   continue-on-error: true # Sometimes vulns aren't immediately fixable
 | |
|       #   env:
 | |
|       #     SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
 | |
|       #     DEBUG: "*snyk*"
 | |
|       #   with:
 | |
|       #     # command: snyk
 | |
|       #     args: snyk test #--all-projects --exclude=.archive
 | |
|       
 | |
|       - name: Reverse set up environment for Snyk
 | |
|         run: |
 | |
|           rm -f requirements.txt
 | |
|           mv pyproject.toml.bak pyproject.toml
 | |
|           mv uv.lock.bak uv.lock
 |