Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Contributing

## Development setup

```bash
uv sync --all-extras --dev
uv run pytest -q
uv run ruff check .
```

## Opening a pull request

1. Apply **exactly one** label before merging:

| Label | When to use |
|---|---|
| `breaking` | Public API change, backward-incompatible |
| `feature` | New functionality, backward-compatible |
| `fix` | Bug fix |
| `dependencies` | Dependency version update |
| `chore` | CI changes, refactoring, test additions, docs — anything that does not affect the public-facing package. Bypasses the label gate; excluded from the changelog and does not bump the version. |

2. When merging (squash), write a clear extended description in the merge dialog. That text — not the PR's opening description — becomes the changelog entry for this change. Leave it blank for `chore` PRs.

## Versioning and releases

Versions are derived from git tags; there is no version string in any source file. Releases are triggered by a maintainer publishing the standing draft release on the repository's Releases page. There is no automated commit-back to `main`.
66 changes: 66 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: "🐞 Bug Report"
description: Report a reproducible bug.
type: "Bug"
body:
- type: checkboxes
attributes:
label: Pre-flight
options:
- label: I searched existing issues and this is not a duplicate.
required: true

- type: textarea
id: summary
attributes:
label: Summary
description: One or two sentences describing the bug.
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Reproduction
description: Steps and/or a minimal code example that reproduces the issue. Wrap code in triple backticks.
placeholder: |
1. Import X and call Y with Z
2. Observe error

```python
# minimal example
```
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual behaviour
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behaviour
validations:
required: true

- type: textarea
id: logs
attributes:
label: Error output
description: Full traceback if applicable. Formatted automatically.
render: python-traceback

- type: textarea
id: system
attributes:
label: System info
description: |
Run this in your environment and paste the output:

```shell
python <(curl -s https://raw.githubusercontent.com/AustralianCancerDataNetwork/cava-devops/main/scripts/cava_system_info.py)
```
render: shell
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Discussions
url: https://github.com/orgs/AustralianCancerDataNetwork/discussions
about: Questions and general discussion about the CAVA stack.
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: "🚀 Feature Request"
description: Propose a new feature or enhancement.
type: "Feature"
body:
- type: checkboxes
attributes:
label: Pre-flight
options:
- label: I searched existing issues and this has not been requested before.
required: true

- type: textarea
id: problem
attributes:
label: Problem or motivation
description: What are you trying to do that you currently cannot?
validations:
required: true

- type: textarea
id: proposal
attributes:
label: Proposed solution
description: How would you like this to work?
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Other approaches you considered and why you ruled them out.
65 changes: 65 additions & 0 deletions .github/ISSUE_TEMPLATE/not_working.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: "❗ Something is not working"
description: Something behaves unexpectedly but you are not sure if it is a bug.
body:
- type: checkboxes
attributes:
label: Pre-flight
options:
- label: I searched existing issues for this problem.
required: true

- type: textarea
id: summary
attributes:
label: Problem summary
description: 1-2 sentences describing what is not working.
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Reproduction
description: Steps and/or a minimal code example. Wrap code in triple backticks.
placeholder: |
1. Import X and call Y with Z
2. Observe unexpected behaviour

```python
# minimal example
```
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual outcome
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected outcome
validations:
required: true

- type: textarea
id: logs
attributes:
label: Error messages
description: Full traceback if applicable. Formatted automatically.
render: python-traceback

- type: textarea
id: system
attributes:
label: System info
description: |
Run this in your environment and paste the output:

```shell
python <(curl -s https://raw.githubusercontent.com/AustralianCancerDataNetwork/cava-devops/main/scripts/cava_system_info.py)
```
render: shell
9 changes: 9 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## Summary

<!-- What does this PR do? This text becomes the changelog entry — write it for a reader who will see it months from now, not for the reviewer reading the diff. Leave blank for chore PRs. -->

## Checklist

- [ ] Applied exactly one label (`breaking`, `feature`, `fix`, `dependencies`, or `chore`)
- [ ] Tests pass locally (`uv run pytest -q`)
- [ ] Lint passes (`uv run ruff check .`)
33 changes: 33 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name-template: 'v$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
commitish: main

categories:
- title: Breaking Changes
labels: ['breaking']
- title: Features
labels: ['feature']
- title: Fixes
labels: ['fix']
- title: Dependencies
labels: ['dependencies']

template: |
$CHANGES

change-template: |
- **$TITLE** (#$NUMBER) by @$AUTHOR
$BODY

version-resolver:
major:
labels: ['breaking']
minor:
labels: ['feature']
patch:
labels: ['fix', 'dependencies']
default: patch

exclude-labels: ['chore']

autolabeler: []
33 changes: 8 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,12 @@
name: CI

on:
push:
branches: [main]
pull_request:

branches: [main]
types: [opened, synchronize, reopened, labeled, unlabeled]
jobs:
ruff:
name: ruff
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install ruff
run: |
python -m pip install --upgrade pip
pip install ruff

- name: Run ruff
run: |
ruff check src tests
label-gate:
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/label-gate.yml@main
build-test:
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/build-test-postgres.yml@main
with:
postgres-db: orm_loader_test
4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ name: Deploy Docs

on:
push:
branches:
- main
tags: ['v*']
workflow_dispatch:

permissions:
contents: write
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: Release Update
on:
pull_request:
types: [closed]
jobs:
sync-description:
if: github.event.pull_request.merged == true
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/sync-pr-description.yml@main
draft:
needs: [sync-description]
if: needs.sync-description.result == 'success'
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/release-drafter.yml@main
secrets: inherit
19 changes: 19 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Publish
on:
push:
tags: ['v*']
jobs:
build:
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/publish.yml@main
publish:
needs: build
runs-on: ubuntu-latest
permissions:
id-token: write
environment:
name: pypi
url: https://pypi.org/p/orm-loader
steps:
- uses: actions/download-artifact@v4
with: { name: dist, path: dist/ }
- uses: pypa/gh-action-pypi-publish@release/v1
31 changes: 0 additions & 31 deletions .github/workflows/python-publish.yml

This file was deleted.

Loading
Loading