Skip to content

Commit 011ecd3

Browse files
Merge branch 'master' into feat/add-dependabot-govulncheck
Signed-off-by: Mohammed Firdous <124298708+mohammedfirdouss@users.noreply.github.com>
2 parents c6f138a + e740e52 commit 011ecd3

File tree

112 files changed

+6868
-324
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+6868
-324
lines changed

.github/labeler.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ area/build:
1818
area/manifests:
1919
- manifests/**/*
2020

21+
area/docs:
22+
- docs/*
23+
- docs/**/*
24+
2125
area/examples:
2226
- examples/*
2327
- examples/**/*

.github/workflows/first-time-contributor.yaml

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ permissions:
1010
jobs:
1111
welcome:
1212
runs-on: ubuntu-latest
13-
1413
steps:
1514
- name: Welcome first-time contributor
1615
uses: actions/github-script@v7
@@ -38,47 +37,51 @@ jobs:
3837
3938
const body = `👋 Hi @${prAuthor}, welcome to **PipeCD** and thanks for opening your first pull request!
4039
41-
We’re really happy to have you here 🚀
42-
Before your PR gets merged, please check a few important things below.
40+
We’re really happy to have you here 🚀
41+
42+
Before your PR gets merged, please check a few important things below.
43+
44+
---
4345
44-
---
46+
### Helpful resources
47+
- Contributing guide: https://github.com/pipe-cd/pipecd/blob/master/CONTRIBUTING.md
48+
- Development setup: https://github.com/pipe-cd/pipecd/blob/master/CONTRIBUTING.md#development
4549
46-
### Helpful resources
47-
- Contributing guide: https://github.com/pipe-cd/pipecd/blob/master/CONTRIBUTING.md
48-
- Development setup: https://github.com/pipe-cd/pipecd/blob/master/CONTRIBUTING.md#development
50+
---
4951
50-
---
52+
### DCO Sign-off
53+
All commits must include a \`Signed-off-by\` line to comply with the Developer Certificate of Origin (DCO).
5154
52-
### DCO Sign-off
53-
All commits must include a \`Signed-off-by\` line to comply with the Developer Certificate of Origin (DCO).
55+
In case you forget to sign-off your commit(s), follow these steps:
5456
55-
For the last commit:
56-
\`\`\`bash
57-
git commit --amend --signoff
58-
git push --force-with-lease
59-
\`\`\`
57+
**For the last commit:**
58+
\`\`\`bash
59+
git commit --amend --signoff
60+
git push --force-with-lease
61+
\`\`\`
6062
61-
For multiple commits:
62-
\`\`\`bash
63-
git rebase --signoff origin/master
64-
git push --force-with-lease
65-
\`\`\`
63+
**For multiple commits:**
64+
\`\`\`bash
65+
git rebase --signoff origin/master
66+
git push --force-with-lease
67+
\`\`\`
6668
67-
---
69+
---
6870
69-
### Run checks locally
70-
\`\`\`bash
71-
make check
72-
\`\`\`
71+
### Run checks locally
72+
Before pushing updates, please run:
73+
\`\`\`bash
74+
make check
75+
\`\`\`
76+
This runs the same checks as CI and helps catch issues early.
7377
74-
---
78+
---
7579
76-
### 💬 Need help?
77-
Feel free to ask in this PR or join **#pipecd** on CNCF Slack:
78-
https://communityinviter.com/apps/cloud-native/cncf
80+
### 💬 Need help?
81+
If anything is unclear, feel free to ask in this PR or join us on the CNCF Slack in the **#pipecd** channel.
82+
You can get your Slack invite from: https://communityinviter.com/apps/cloud-native/cncf
7983
80-
Thanks for contributing to PipeCD! ❤️
81-
`;
84+
Thanks for contributing to PipeCD! ❤️`;
8285
8386
await github.rest.issues.createComment({
8487
owner,

CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@
66

77
# Docs dir
88
/docs/ @pipe-cd/pipecd-approvers-docs @pipe-cd/pipecd-approvers
9+
CONTRIBUTING.md @pipe-cd/pipecd-approvers-docs @pipe-cd/pipecd-approvers
10+
README.md @pipe-cd/pipecd-approvers-docs @pipe-cd/pipecd-approvers

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ We host the [PipeCD Development and Community Meetings](https://zoom-lfx.platfor
3636

3737
### Join our team on GitHub
3838

39-
We welcome and appreciate your contributions to the PipeCD project. If you would like to continue contributing to the project as a member of the pipe-cd GitHub organization, please attend the [public community meeting](#join-our-public-community-meeting) and let us know or ping us on the #pipecd channel in the CNCF Slack. Here are some minimum requirements to have before you can ask for the membership:
39+
We welcome and appreciate your contributions to the PipeCD project. If you would like to continue contributing to the project as a member of the pipe-cd GitHub organization, please attend the [public community meeting](https://zoom-lfx.platform.linuxfoundation.org/meeting/96831504919?password=2f60b8ec-5896-40c8-aa1d-d551ab339d00) and let us know or ping us on the #pipecd channel in the CNCF Slack. Here are some minimum requirements to have before you can ask for the membership:
4040

4141
- Have at least 5 PRs successfully merged to repositories in the pipe-cd GitHub organization
4242
- Have attended PipeCD public community meeting

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ lint: lint/go lint/web lint/helm
213213
.PHONY: lint/go
214214
lint/go: FIX ?= false
215215
lint/go: VERSION ?= sha256:91460846c43b3de53eb77e968b17363e8747e6f3fc190575b52be60c49446e23 # golangci/golangci-lint:v2.4.0
216-
lint/go: FLAGS ?= --rm -e GOCACHE=/repo/.cache/go-build -e GOLANGCI_LINT_CACHE=/repo/.cache/golangci-lint -v ${PWD}:/repo -it
216+
lint/go: FLAGS ?= --rm -e GOCACHE=/repo/.cache/go-build -e GOLANGCI_LINT_CACHE=/repo/.cache/golangci-lint -v ${PWD}:/repo
217217
lint/go: MODULES ?= $(shell find . -name go.mod | while read -r dir; do dirname "$$dir"; done | paste -sd, -) # comma separated list of modules. eg: MODULES=.,pkg/plugin/sdk
218218
lint/go:
219219
@echo "Linting go modules..."

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
[![Documentation](https://img.shields.io/badge/Documentation-pipecd-informational.svg)](https://pipecd.dev/docs/)
99
[![Slack](https://img.shields.io/badge/Slack-%23pipecd-informational.svg)](https://app.slack.com/client/T08PSQ7BQ/C01B27F9T0X)
1010
[![Twitter](https://img.shields.io/twitter/url/https/twitter.com/pipecd_dev.svg?style=social&label=Follow%20%40pipecd_dev)](https://twitter.com/pipecd_dev)
11+
[![CNCF Status](https://img.shields.io/badge/CNCF%20Status-Sandbox-lightgrey.svg)](https://www.cncf.io/projects/pipecd/)
1112

1213
<p align="center">
1314
<img src="https://github.com/pipe-cd/pipecd/blob/master/docs/static/images/logo.png" width="180"/>
Lines changed: 247 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,253 @@
11
---
2-
title: "Contributing"
3-
linkTitle: "Contributing"
2+
title: "Contribute to PipeCD"
3+
linkTitle: "Contribute to PipeCD"
44
weight: 1
55
description: >
66
This page describes how to contribute to PipeCD.
77
---
88

9-
PipeCD is an open source project that anyone in the community can use, improve, and enjoy. We'd love you to join us! [Contributing to PipeCD](https://github.com/pipe-cd/pipecd/tree/master/CONTRIBUTING.md) is the best place to start with.
9+
PipeCD is an open source project that anyone in the community can use, improve, and enjoy. We'd love you to join us!
10+
11+
## Code of Conduct
12+
13+
PipeCD follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). Please read it to understand which actions are acceptable and which are not.
14+
15+
## Ways to Contribute
16+
17+
There are many ways to contribute, and many don't involve writing code:
18+
19+
- **Use PipeCD** — Follow the [Quickstart](/docs/quickstart/) and report issues you encounter
20+
- **Triage issues** — Browse [open issues](https://github.com/pipe-cd/pipecd/issues), provide workarounds, ask for clarification, or suggest labels
21+
- **Fix bugs** — Issues labeled [good first issue](https://github.com/pipe-cd/pipecd/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) are great starting points
22+
- **Improve docs** — See [Contribute to PipeCD Documentation](../contributing-documentation/)
23+
- **Participate in discussions** — Share ideas in [GitHub Discussions](https://github.com/pipe-cd/pipecd/discussions)
24+
25+
## Development Setup
26+
27+
### Project Structure
28+
29+
PipeCD consists of several components:
30+
31+
| Component | Description |
32+
|-----------|-------------|
33+
| [cmd/pipecd](https://github.com/pipe-cd/pipecd/tree/master/cmd/pipecd) | Control Plane — manages deployment data and provides gRPC API |
34+
| [cmd/piped](https://github.com/pipe-cd/pipecd/tree/master/cmd/piped) | Piped agent — runs in your cluster |
35+
| [cmd/pipectl](https://github.com/pipe-cd/pipecd/tree/master/cmd/pipectl) | Command-line tool |
36+
| [cmd/launcher](https://github.com/pipe-cd/pipecd/tree/master/cmd/launcher) | Command executor for remote upgrade |
37+
| [web](https://github.com/pipe-cd/pipecd/tree/master/web) | Web UI |
38+
| [docs](https://github.com/pipe-cd/pipecd/tree/master/docs) | Documentation |
39+
40+
### Prerequisites
41+
42+
- Go (check `go.mod` for version)
43+
- Node.js and Yarn (for web development)
44+
- Docker
45+
- kubectl
46+
- kind (Kubernetes in Docker)
47+
48+
### Starting a Local Environment
49+
50+
#### 1. Update Dependencies
51+
52+
```bash
53+
make update/go-deps
54+
make update/web-deps
55+
```
56+
57+
> Starting a local environment may fail if dependencies are not up to date.
58+
59+
#### 2. Start Local Cluster and Registry
60+
61+
```bash
62+
make up/local-cluster
63+
```
64+
65+
This creates the `pipecd` Kubernetes namespace and starts a local registry.
66+
67+
To clean up later:
68+
69+
```bash
70+
make down/local-cluster
71+
```
72+
73+
#### 3. Run Control Plane
74+
75+
```bash
76+
make run/pipecd
77+
```
78+
79+
To stop:
80+
81+
```bash
82+
make stop/pipecd
83+
```
84+
85+
#### 4. Port Forward
86+
87+
In a separate terminal:
88+
89+
```bash
90+
kubectl port-forward -n pipecd svc/pipecd 8080
91+
```
92+
93+
#### 5. Access the UI
94+
95+
Open [http://localhost:8080?project=quickstart](http://localhost:8080?project=quickstart)
96+
97+
Login credentials:
98+
- **Username:** `hello-pipecd`
99+
- **Password:** `hello-pipecd`
100+
101+
### Running Piped Agent
102+
103+
1. Ensure Control Plane is running and accessible.
104+
105+
2. Register a new Piped:
106+
- Go to Settings → Piped (or [http://localhost:8080/settings/piped?project=quickstart](http://localhost:8080/settings/piped?project=quickstart))
107+
- Add a new piped and copy the generated Piped ID and base64 key
108+
109+
3. Create `piped-config.yaml` in the repository root:
110+
111+
> **Tip:** Create a `.dev` folder (gitignored) for multiple config files.
112+
113+
```yaml
114+
apiVersion: pipecd.dev/v1beta1
115+
kind: Piped
116+
spec:
117+
projectID: quickstart
118+
pipedID: <YOUR_PIPED_ID>
119+
pipedKeyData: <YOUR_PIPED_BASE64_KEY>
120+
apiAddress: localhost:8080
121+
repositories:
122+
- repoId: example
123+
remote: git@github.com:pipe-cd/examples.git
124+
branch: master
125+
syncInterval: 1m
126+
platformProviders:
127+
- name: example-kubernetes
128+
type: KUBERNETES
129+
config:
130+
kubeConfigPath: /path/to/.kube/config
131+
```
132+
133+
4. Start the Piped agent:
134+
135+
```bash
136+
make run/piped CONFIG_FILE=path/to/piped-config.yaml INSECURE=true
137+
```
138+
139+
### Useful Commands
140+
141+
Check the [Makefile](https://github.com/pipe-cd/pipecd/blob/master/Makefile) for available commands. Common ones:
142+
143+
```bash
144+
make check # Run all checks (lint, test, etc.)
145+
make test/go # Run Go tests
146+
make test/web # Run web tests
147+
make build/go # Build Go binaries
148+
```
149+
150+
## Pull Request Process
151+
152+
### Before You Start
153+
154+
1. **Find or create an issue** — Check if an issue exists, or open one for new features/bugs
155+
2. **Claim the issue** — Comment "I'd like to work on this" to get assigned (expected to submit PR within 7 days)
156+
3. **Investigate first** — Discuss your approach in the issue before coding to reduce back-and-forth on the PR
157+
4. **Focus on one issue** — Especially for newcomers, work on one issue at a time
158+
159+
### Submitting a Pull Request
160+
161+
1. **Keep PRs small** — Aim for ~300 lines of diff. Split larger changes into multiple PRs.
162+
163+
2. **Use descriptive titles** — Follow commit message style: present tense, capitalize first letter
164+
165+
```
166+
Add imports to Terraform plan result
167+
```
168+
169+
3. **Sign off commits** — Required for DCO compliance:
170+
171+
```bash
172+
git commit -s -m "Your commit message"
173+
```
174+
175+
4. **Run checks before submitting:**
176+
177+
```bash
178+
make check
179+
```
180+
181+
5. **Target the `master` branch** — All PRs should be opened against `master`
182+
183+
### User-Facing Changes
184+
185+
If your change affects users, update the PR description:
186+
187+
```md
188+
**Does this PR introduce a user-facing change?**:
189+
- **How are users affected by this change**:
190+
- **Is this breaking change**:
191+
- **How to migrate (if breaking change)**:
192+
```
193+
194+
### Licensing
195+
196+
By contributing, you agree to license your contributions under the Apache License Version 2.0. Add this header to new files:
197+
198+
```go
199+
// Copyright 2025 The PipeCD Authors.
200+
//
201+
// Licensed under the Apache License, Version 2.0 (the "License");
202+
// you may not use this file except in compliance with the License.
203+
// You may obtain a copy of the License at
204+
//
205+
// http://www.apache.org/licenses/LICENSE-2.0
206+
//
207+
// Unless required by applicable law or agreed to in writing, software
208+
// distributed under the License is distributed on an "AS IS" BASIS,
209+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
210+
// See the License for the specific language governing permissions and
211+
// limitations under the License.
212+
```
213+
214+
## Reporting Issues
215+
216+
### Bugs
217+
218+
File bugs at [GitHub Issues](https://github.com/pipe-cd/pipecd/issues/new?assignees=&labels=kind%2Fbug&projects=&template=bug-report.md):
219+
220+
- **One issue, one bug**
221+
- **Provide reproduction steps** — List all steps to reproduce the issue
222+
223+
### Security Issues
224+
225+
Report security vulnerabilities privately via Slack or Twitter DM to maintainers listed in [MAINTAINERS.md](https://github.com/pipe-cd/pipecd/blob/master/MAINTAINERS.md).
226+
227+
### Feature Requests
228+
229+
- [Enhancement request](https://github.com/pipe-cd/pipecd/issues/new?assignees=&labels=kind%2Fenhancement&projects=&template=enhancement.md) — Improvements to existing features
230+
- [Feature request](https://github.com/pipe-cd/pipecd/issues/new?assignees=&labels=kind%2Ffeature&projects=&template=new-feature.md) — Entirely new features
231+
232+
## Join the Community
233+
234+
### Slack
235+
236+
We have a `#pipecd` channel on [CNCF Slack](https://cloud-native.slack.com/) for discussions and help. You can also assist other users in the channel.
237+
238+
### Community Meetings
239+
240+
We host [PipeCD Development and Community Meetings](https://zoom-lfx.platform.linuxfoundation.org/meeting/96831504919?password=2f60b8ec-5896-40c8-aa1d-d551ab339d00) every 2 weeks where we share project news, demos, answer questions, and triage issues. View the [Meeting Notes and Agenda](https://bit.ly/pipecd-mtg-notes).
241+
242+
### Become a Member
243+
244+
If you'd like to join the pipe-cd GitHub organization:
245+
246+
- Have at least 5 PRs merged to repositories in the pipe-cd organization
247+
- Attend a PipeCD public community meeting
248+
249+
Membership isn't required to contribute—it's for those who want to contribute long-term or take ownership of features.
250+
251+
## What Happens Next?
252+
253+
The maintainers will review your PR. We'll help with obvious issues and work with you to get it merged. Thank you for contributing!

0 commit comments

Comments
 (0)