Skip to content

Basic Scaffolding#1

Merged
mweibel merged 5 commits intomainfrom
scaffolding
Mar 5, 2026
Merged

Basic Scaffolding#1
mweibel merged 5 commits intomainfrom
scaffolding

Conversation

@mweibel
Copy link
Copy Markdown
Collaborator

@mweibel mweibel commented Feb 25, 2026

Scaffolding commands used:

$ go mod init github.com/cloudscale-ch/cluster-api-provider-cloudscale
$ kubebuilder init --domain cluster.x-k8s.io --owner "cloudscale.ch" --plugins go/v4,autoupdate/v1-alpha,grafana/v1-alpha --project-name cluster-api-provider-cloudscale

$ kubebuilder create api --group infrastructure --version v1beta2 --kind CloudscaleCluster
$ kubebuilder create api --group infrastructure --version v1beta2 --kind CloudscaleMachine
$ kubebuilder create api --group infrastructure --version v1beta2 --kind CloudscaleMachineTemplate

$ kubebuilder create webhook --group infrastructure --version v1beta2 --kind CloudscaleCluster --defaulting --programmatic-validation
$ kubebuilder create webhook --group infrastructure --version v1beta2 --kind CloudscaleMachine --defaulting --programmatic-validation
$ kubebuilder create webhook --group infrastructure --version v1beta2 --kind CloudscaleMachineTemplate --defaulting --programmatic-validation

Then setup README and tilt provider yaml according to reference docs.

Custom golangci-lint linter has been removed because there isn't an easy way to use the golangci-lint action with custom plugins and I don't see a huge benefit to that specific linter.

Disabled automatic e2e tests because they don't currently work yet because there's no actual code yet.

using kubebuilder:

```
$ go mod init github.com/cloudscale-ch/cluster-api-provider-cloudscale
$ kubebuilder init --domain cluster.x-k8s.io --owner "cloudscale.ch"
--plugins go/v4,autoupdate/v1-alpha,grafana/v1-alpha --project-name
cluster-api-provider-cloudscale
```
using kubebuilder:
```
$ kubebuilder create api --group infrastructure --version v1beta2 --kind
CloudscaleCluster
$ kubebuilder create api --group infrastructure --version v1beta2 --kind
CloudscaleMachine
$ kubebuilder create api --group infrastructure --version v1beta2 --kind
CloudscaleMachineTemplate
```
using kubebuilder:
```
$ kubebuilder create webhook --group infrastructure --version v1beta2
--kind CloudscaleCluster --defaulting --programmatic-validation
$ kubebuilder create webhook --group infrastructure --version v1beta2
--kind CloudscaleMachine --defaulting --programmatic-validation
$ kubebuilder create webhook --group infrastructure --version v1beta2
--kind CloudscaleMachineTemplate --defaulting --programmatic-validation
```
@mweibel mweibel force-pushed the scaffolding branch 3 times, most recently from dad3bda to 7c3bd5e Compare February 27, 2026 13:40
- remove custom linter - not much benefit for increased complexity
- disable automatic e2e tests for now, set them to manual. e2e tests
  don't work yet since we have no actual code in the controller yet.
- only run push lint/test on main branch to avoid running two actions
  (pull_request and push) on each push to a PR branch.
- ensure to clone with repo access token due to setting the repository
  temporarily private
- update readme to incorporate review feedback and make things more
  clear
@mweibel mweibel merged commit ad454ad into main Mar 5, 2026
2 checks passed
@mweibel mweibel deleted the scaffolding branch March 5, 2026 12:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant