@@ -34,42 +34,53 @@ To onboard a new addon-contrib project:
34341 . If not already discussed with maintainers, open an issue to propose your idea.
35351 . Once acknowledged, create a folder named after your project and add your code/docs.
36361 . Add an ` OWNERS ` file listing the new project's maintainers.
37- 1 . Create a PR with a brief project overview and confirm the ` OWNERS ` file is present.
37+ 1 . ** Register your project** in ` .github/repositories.json ` (see [ Repository Registration] ( #repository-registration ) below).
38+ 1 . ** Ensure CI/CD compliance** by implementing required structure and targets (see [ GitHub Actions Requirements] ( #github-actions-requirements ) below).
39+ 1 . Create a PR with a brief project overview and confirm all requirements are met.
38401 . An OCM maintainer will review and merge the PR.
3941
40- ### GitHub Actions
42+ ### GitHub Actions Requirements
4143
4244All projects must follow certain conventions to ensure compatibility with the addon-contrib repository's Github Actions workflows.
4345
4446Refer to the [ Test] ( ./.github/workflows/test.yml ) and [ E2E] ( ./.github/workflows/e2e.yml ) workflows for exact details.
4547
46- #### ` make ` targets
48+ #### Required ` make ` Targets
4749
48- All projects must define the following ` make ` targets:
50+ All projects ** must** define the following ` make ` targets in their ` Makefile ` :
4951
50- - ` verify ` : Import statement formatting verification using ` gci ` and static code analysis and linting using ` golangci-lint `
51- - ` build ` : Compile the Go application into a statically linked binary with debug information stripped for optimal container deployment
52- - ` test-unit ` : Invoke unit tests and return an exit code accordingly.
53- - ` test-chart ` : Invoke scripts to verify your chart can be installed successfully.
54- - ` test-e2e ` : Invoke end-to-end tests and return an exit code accordingly.
55- - ` image ` : Build all container image.
56- - ` image-push ` : Push all container images.
57- - ` image-manifest ` : Create annotate and push multi-architecture manifests for all images.
52+ | Target | Description | Can be Stub? |
53+ | --------| -------------| --------------|
54+ | ` verify ` | Code verification (linting, formatting) | No - should run actual checks |
55+ | ` vendor ` | Update Go module dependencies | No - if Go project |
56+ | ` build ` | Build the application binary | No - if Go project |
57+ | ` test-unit ` | Run unit tests | No - should run actual tests |
58+ | ` test-integration ` | Run integration tests | ** Yes** - can return true if not implemented |
59+ | ` test-e2e ` | Run end-to-end tests | ** Yes** - can return true if not implemented |
60+ | ` test-chart ` | Test Helm chart installation | ** Yes** - can return true if no chart |
61+ | ` image ` | Build container image | ** Yes** - only if Dockerfile exists |
62+ | ` image-push ` | Push container image to registry | ** Yes** - only if Dockerfile exists |
63+ | ` image-manifest ` | Create multi-arch image manifest | ** Yes** - only if Dockerfile exists |
5864
59- #### Dockerfiles
65+ #### Dockerfiles (Optional)
6066
61- All Dockerfiles for the project must reside under ` <project_name>/ ` and the default Dockerfile must be named ` Dockerfile ` .
67+ Container images are ** optional** . If your addon requires a container image:
68+
69+ - Dockerfile must reside under ` <project_name>/Dockerfile `
70+ - The workflow will automatically detect Dockerfile presence
71+ - If no Dockerfile exists, image build steps will be skipped
6272
6373#### Helm Charts
6474
65- Any projects that require a Helm chart must be structured as follows:
75+ ** If ** your project requires a Helm chart, it must be structured as follows:
6676
6777``` bash
6878< project_name>
6979└── charts
70- └── < project_name> # chart name must match project directory name
80+ └── < project_name> # Chart name must match project directory name
7181 ├── Chart.yaml
7282 ├── templates
83+ │ └── * .yaml
7384 └── values.yaml
7485```
7586
0 commit comments