-
Notifications
You must be signed in to change notification settings - Fork 7
add definitions.md #53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This commit adds the foundation for definitions to give a common semantics across the various concepts within the SDLC. This commit explicitly starts with 'build'. Signed-off-by: xibz <[email protected]>
✅ Deploy Preview for cdevents ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
In reference to cdevents/spec#253 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WIP, more comments on the way
| Docker Registry | Stores and manages Docker container images | | ||
| Git/GitHub/GitLab| Version Control Systems that store source code and its history | | ||
| Amazon S3/Azure Blob Storage/GCS | Object storage services used for archiving logs, backups, or raw data | | ||
| Kubernetes | Can store configuration via ConfigMaps/Secrets, but not typically "artifacts" | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would push against the idea of Kube as a store. It is an anti-pattern to rely on Kube ConfigMaps/Secrets for durable storage. Typically "ConfigMaps/Secrets" are simply the add-on data to assist Kube to accomplish its scheduling / declarative-state tasks.
run a system. These include: | ||
|
||
- **Static assets**: images, fonts, CSS, markdown | ||
- **Configuration files**: YAML, JSON, XML, `.env` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Terraform/CloudFormation etc.. ?
|
||
This document defines common concepts and ideas used across the SDLC (software | ||
development lifecycle). By establishing a shared vocabulary, it ensures that | ||
tools leveraging CDEvents use a consistent language and adhere to common |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you want to link back to the cdevents spec?
- CD ..
- CI ...
- Testing ..
- Operations ...
|
||
## 🏗️ Build | ||
|
||
A **build** is the automated process of transforming **source code** and |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reference cdevents spec of build
?
Related CDEvents for Builds
- 🏷️ **Versioning**: tagging or stamping artifacts | ||
- 🧪 **Static analysis** *(pre-build or during build)* | ||
- 🧬 **Configuration templating**: injecting environment-specific variables | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SBOM?
Helm/Kustomzie?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Manifest rendering
Artifact signing
@@ -0,0 +1,208 @@ | |||
# CDEvents Concepts and Definitions | |||
|
|||
This document defines common concepts and ideas used across the SDLC (software |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the introduction, highlight that this is meant to be used as a dictionary
| Helm template to Kubernetes | ✅ Yes | `helm template` to render manifests | Generates deployable infra config | | ||
| Helm chart packaging | ✅ Yes | `helm package` to create `.tgz` chart | Versioned artifact used in CI/CD pipelines | | ||
| Helm deployment | ❌ No | `helm install` or `upgrade` | Deployment, not artifact creation | | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
More Build Example possibilities:
- Terraform plan generation
- CloudFormation packaging
- Lambda function packaging
- Buildpack container creation
- Kustomize overlay build
- SBOM generation
- Sealed Secret encryption
| GitHub Actions | No strict definition — "build" is defined by your workflow steps | | ||
| GitLab CI/CD | Often treated as a named stage (e.g., `build`, `test`, `deploy`) | | ||
| Spinnaker | Uses "bake" or "artifact" stages, and may trigger builds externally | | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other Tool Possibilities:
- AWS CodeBuild
- Azure Pipelines
- Google Cloud Build
- CircleCI / Tekton
- BuildKit/Kaniko
- Skaffold
- **Test Cases**: Specific inputs, execution steps, and expected outputs or behaviors. | ||
- **Test Suites**: Collections of related test cases, often grouped by functionality or type. | ||
- **Test Data**: Data used as input for test cases (e.g., mock data, sanitized production data). | ||
- **Test Environments**: Specific configurations of hardware, software, and network settings where tests are executed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ephemeral / Declarative / etc.. as other Environment possibilities?
- 📝 **Reporting**: Generating logs, metrics, and reports of test results. | ||
- ⚙️ **Setup/Teardown**: Preparing the test environment before execution and cleaning up resources afterward. | ||
- 📈 **Coverage Analysis**: Measuring the extent to which the code or system has been exercised by tests. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Possibly add metric collection and analysis for canary/blue-green/progressive delivery?
| Manual Exploratory Testing | ❌ No | Human tester exploring application functionality | Not an automated process, thus outside CDEvents scope | | ||
| Code Linting/Formatting | ❌ No | `prettier --check`, `gofmt` | Focuses on code style and consistency, not functional correctness | | ||
| Dependency Vulnerability Scan| ❌ No | `npm audit`, Snyk scan | Scans for known vulnerabilities in dependencies, not functional test of *your* code | | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other Test possibilities:
- Policy validation (OPA/Kyverno)
- chaos engineering?
- canary analysis?
- conformance testing
| SonarQube | Primarily for static analysis and code quality, but often integrated with test results for coverage | | ||
| Jest/JUnit/Pytest| Frameworks for writing and executing tests within codebases | | ||
| Selenium/Cypress | Frameworks for automated browser-based functional testing | | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
other tool possibilities:
- Litmus/Chaos Mesh
- Flagger / Argo Rollouts
- Sonobuoy
- k6/Locust
- Testcontainers
**Storing** is the automated process of persistently saving, managing, and | ||
making accessible any **artifact, data, or metadata** generated or consumed | ||
during the SDLC. It ensures that necessary components and information are | ||
retrievable for future use, auditing, or deployment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alternative:
Storing is the automated process of persisting, versioning, and managing access to artifacts and metadata in durable, addressable repositories. This includes initial publication, cross-region replication, artifact promotion between environments, and lifecycle management, but excludes deployment or execution of stored artifacts.
- **Metrics**: Performance, usage, or health data collected over time. | ||
- **Documentation**: Generated or manually created documentation. | ||
- **Snapshots/Backups**: Point-in-time copies of databases or systems. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other assets?:
- SBOMs, signatures, attestations
- charts, OCI artifacts, policy bundles
- GitOps State? could be the same as VCS/Source-code?
- 🧹 **Retention/Cleanup**: Managing the lifecycle of stored assets, including deletion policies. | ||
- 🔄 **Replication**: Copying assets to multiple locations for redundancy or distribution. | ||
- 🔗 **Linking**: Establishing relationships between stored assets and other SDLC events (e.g., linking an artifact to the build that produced it). | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
additional ideas:
- Promotion: Moving artifacts between environment-specific repositories (dev→staging→prod)
- Signing/Attestation: Adding cryptographic signatures or metadata to stored artifacts
- Scanning: Automated security/vulnerability scanning upon storage
| Caching Build Dependencies | ❌ No | Local Maven `.m2` repository cache | Temporary storage for performance, not persistent distribution | | ||
| Downloading a Dependency | ❌ No | `npm install` | Retrieval from storage, not the act of storing | | ||
| Writing a Log File to Local Disk | ❌ No | `logger.info("message")` to a local file | Local/temporary persistence; "storing" implies a managed, accessible repository | | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
other example ideas:
- Push Helm Chart as OCI
- Cosign Image Signing
- Artifact Promotion
- GitOps Manifest Commit
- SBOM Attachment
- Multi-region Replication
- Harbor Vulnerability Scan Results
- BuildKit Cache Export
This commit adds the foundation for definitions to give a common semantics across the various concepts within the SDLC.
This commit explicitly starts with 'build'.
I wanted to first create the page, and once we agree we can figure out where to best link it from