Skip to content

Commit f21e17a

Browse files
stubbiclaude
andauthored
docs: world-class repo metadata + govulncheck security workflow (#3)
README rewrite (badges, architecture, NodeClass reference, cost notes), CONTRIBUTING/SECURITY/CODE_OF_CONDUCT/CODEOWNERS, issue+PR templates, dependabot, chart README, and a govulncheck workflow. Bumps golang.org/x/net to v0.55.0 (GO-2026-5026) which the new scan flagged as reachable. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 579fba4 commit f21e17a

14 files changed

Lines changed: 438 additions & 15 deletions

File tree

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Default owners for everything in the repo.
2+
* @paperclipinc/maintainers
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Bug report
2+
description: Report a problem with the provider
3+
labels: [bug]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: Thanks for the report. Please do not include secrets (tokens, kubeconfigs) in logs.
8+
- type: textarea
9+
id: what-happened
10+
attributes:
11+
label: What happened?
12+
description: A clear description of the bug and what you expected instead.
13+
validations:
14+
required: true
15+
- type: textarea
16+
id: repro
17+
attributes:
18+
label: Steps to reproduce
19+
description: NodePool/HCloudNodeClass YAML and the sequence that triggers it.
20+
render: yaml
21+
validations:
22+
required: true
23+
- type: textarea
24+
id: logs
25+
attributes:
26+
label: Controller logs
27+
description: Relevant controller logs (redact secrets).
28+
render: shell
29+
- type: input
30+
id: provider-version
31+
attributes:
32+
label: Provider version / image tag
33+
validations:
34+
required: true
35+
- type: input
36+
id: k8s-version
37+
attributes:
38+
label: Kubernetes & Karpenter version
39+
validations:
40+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security vulnerability
4+
url: https://github.com/paperclipinc/karpenter-provider-hetzner/security/advisories/new
5+
about: Report security issues privately — do not open a public issue.
6+
- name: Question / discussion
7+
url: https://github.com/paperclipinc/karpenter-provider-hetzner/discussions
8+
about: Ask usage questions or discuss ideas.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Feature request
2+
description: Suggest an enhancement
3+
labels: [enhancement]
4+
body:
5+
- type: textarea
6+
id: problem
7+
attributes:
8+
label: Problem
9+
description: What are you trying to do that the provider does not support today?
10+
validations:
11+
required: true
12+
- type: textarea
13+
id: proposal
14+
attributes:
15+
label: Proposed solution
16+
description: What would you like to see? API/behavior sketch is welcome.
17+
validations:
18+
required: true
19+
- type: textarea
20+
id: alternatives
21+
attributes:
22+
label: Alternatives considered

.github/dependabot.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: gomod
4+
directory: "/"
5+
schedule:
6+
interval: weekly
7+
groups:
8+
go-dependencies:
9+
patterns: ["*"]
10+
open-pull-requests-limit: 5
11+
- package-ecosystem: github-actions
12+
directory: "/"
13+
schedule:
14+
interval: weekly
15+
- package-ecosystem: docker
16+
directory: "/"
17+
schedule:
18+
interval: weekly

.github/pull_request_template.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
## Summary
2+
3+
<!-- What does this change do, and why? -->
4+
5+
## Changes
6+
7+
<!-- Bullet the notable changes. -->
8+
-
9+
10+
## Verification
11+
12+
<!-- How did you verify this works? Commands + results. -->
13+
- [ ] `make test` passes
14+
- [ ] `make lint` passes
15+
- [ ] `make generate-verify` passes (CRD/deepcopy up to date)
16+
- [ ] Added/updated tests for the change
17+
18+
## Notes
19+
20+
<!-- Breaking changes, follow-ups, anything reviewers should know. -->

.github/workflows/security.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Security
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
schedule:
8+
- cron: "0 6 * * 1"
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
govulncheck:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: actions/setup-go@v5
19+
with:
20+
go-version: "1.26"
21+
- run: go run golang.org/x/vuln/cmd/govulncheck@latest ./...

CODE_OF_CONDUCT.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6+
7+
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8+
9+
## Our Standards
10+
11+
Examples of behavior that contributes to a positive environment:
12+
13+
- Demonstrating empathy and kindness toward other people
14+
- Being respectful of differing opinions, viewpoints, and experiences
15+
- Giving and gracefully accepting constructive feedback
16+
- Accepting responsibility and apologizing to those affected by our mistakes
17+
- Focusing on what is best for the overall community
18+
19+
Examples of unacceptable behavior:
20+
21+
- The use of sexualized language or imagery, and sexual attention or advances of any kind
22+
- Trolling, insulting or derogatory comments, and personal or political attacks
23+
- Public or private harassment
24+
- Publishing others' private information without explicit permission
25+
- Other conduct which could reasonably be considered inappropriate in a professional setting
26+
27+
## Enforcement Responsibilities
28+
29+
Community leaders are responsible for clarifying and enforcing our standards and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
30+
31+
## Scope
32+
33+
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces.
34+
35+
## Enforcement
36+
37+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at **conduct@paperclip.inc**. All complaints will be reviewed and investigated promptly and fairly. Community leaders are obligated to respect the privacy and security of the reporter of any incident.
38+
39+
## Attribution
40+
41+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

CONTRIBUTING.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Contributing
2+
3+
Thanks for your interest in improving `karpenter-provider-hetzner`. This document covers how to set up, build, test, and submit changes.
4+
5+
## Development environment
6+
7+
- Go (see the `go` directive in [`go.mod`](go.mod)).
8+
- `make`, `git`, `docker` (for image builds), and `helm` (for chart changes).
9+
- A Hetzner Cloud API token is only needed for end-to-end testing, not for unit tests.
10+
11+
## Common tasks
12+
13+
```bash
14+
make test # run unit + controller tests with the race detector
15+
make lint # run golangci-lint
16+
make generate # regenerate the CRD and deepcopy from the Go types
17+
make build # build the controller binary into ./bin
18+
make docker-build TAG=dev
19+
```
20+
21+
CI runs `make test`, `golangci-lint`, `make generate-verify` (fails if generated files are stale), and the controller tests. Run these locally before opening a pull request.
22+
23+
## Code generation
24+
25+
The `HCloudNodeClass` CRD and `zz_generated.deepcopy.go` are generated from the API types in `pkg/apis/v1alpha1` by `controller-gen`. If you change those types, run `make generate` and commit the regenerated files. CI will fail if they are out of date.
26+
27+
## Testing conventions
28+
29+
- Write tests first (TDD) for new behavior.
30+
- Tests must assert real behavior, not mock internals. The provider packages use small in-package fakes that implement the narrow hcloud client interfaces; reuse those patterns.
31+
- Keep `go test -race ./...` green.
32+
33+
## Commit and PR guidelines
34+
35+
- Use clear, conventional-ish commit subjects (`feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `ci:`, `chore:`).
36+
- Keep PRs focused. Separate refactors from behavior changes where practical.
37+
- Fill out the pull request template, including how you verified the change.
38+
- All status checks must pass before merge.
39+
40+
## Reporting bugs and requesting features
41+
42+
Use the issue templates. For security issues, follow [SECURITY.md](SECURITY.md) instead of opening a public issue.
43+
44+
## License
45+
46+
By contributing, you agree that your contributions are licensed under the [Apache 2.0 License](LICENSE).

0 commit comments

Comments
 (0)