Skip to content
Merged
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 .`)
31 changes: 31 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
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) @$AUTHOR'

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

exclude-labels: ['chore']

autolabeler: []
27 changes: 27 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: CI
on:
pull_request:
branches: [main]
types: [opened, synchronize, reopened, labeled, unlabeled]
jobs:
label-gate:
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/label-gate.yml@main
build-test-sqlite:
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/build-test.yml@main
with:
ty-src: omop_alchemy
Comment thread
nicoloesch marked this conversation as resolved.
build-test-postgres:
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/build-test-postgres.yml@main
with:
ty-src: omop_alchemy
postgres-db: test_db
setup-commands: |
uv run omop-config configure omop_alchemy \
--test-dialect postgresql+psycopg \
--test-database pg_test \
--test-host localhost \
--test-port 5432 \
--test-cdm-schema public \
--test-user test \
--test-password test \
--test-database-name test_db
24 changes: 3 additions & 21 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,10 @@
name: Deploy Docs

on:
push:
branches:
- main

tags: ['v*']
workflow_dispatch:
permissions:
contents: write

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install MkDocs
run: |
pip install mkdocs mkdocs-material mkdocstrings-python mkdocs-mermaid2-plugin
pip install -e .

- name: Deploy to GitHub Pages
run: |
mkdocs gh-deploy --force
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/deploy-docs.yml@main
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]
branches: [main]
permissions:
contents: write
pull-requests: read
jobs:
draft:
if: github.event.pull_request.merged == true
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/release-drafter.yml@main
secrets: inherit
21 changes: 21 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Publish
on:
push:
tags: ['v*']
jobs:
build:
uses: AustralianCancerDataNetwork/cava-devops/.github/workflows/publish.yml@main
publish:
# Inline: PyPI OIDC checks job_workflow_ref, which must point to this file.
# Moving pypa/gh-action-pypi-publish into cava-devops would break the trusted publisher.
needs: build
runs-on: ubuntu-latest
permissions:
id-token: write
environment:
name: pypi
url: https://pypi.org/p/omop-alchemy
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