Skip to content
Merged
2 changes: 2 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@
* [Test an integration](https://www.elastic.co/guide/en/integrations-developer/current/testing.html)
* [Publish an integration](https://www.elastic.co/guide/en/integrations-developer/current/_publish_an_integration.html)
* [Developer workflows](https://www.elastic.co/guide/en/integrations-developer/current/developer-workflows.html)

To improve your chances of getting your Pull Request merged, ensure you follow all of the steps outlined in [Publish an integration](https://www.elastic.co/guide/en/integrations-developer/current/_publish_an_integration.html) prior to making your Pull Request.

Check notice on line 12 in CONTRIBUTING.md

View workflow job for this annotation

GitHub Actions / Lint Documentation

Elastic.Wordiness: Consider using 'before' instead of 'prior to'.

Check notice on line 12 in CONTRIBUTING.md

View workflow job for this annotation

GitHub Actions / Lint Documentation

Elastic.Wordiness: Consider using 'all' instead of 'all of '.
55 changes: 41 additions & 14 deletions docs/extend/_publish_an_integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,51 @@
When your integration is done, it’s time to open a PR to include it in the integrations repository.
Before opening your PR, make sure you have:

1. Pass all checks
Run:
```bash
elastic-package check
```
1. **Run pre-submission checks**
Run `elastic-package check` to validate formatting, build, and linting. Run `elastic-package format` if files need reformatting.

This command validates that your package is built correctly, formatted properly, and aligned with the specification. Passing this `check` is required before submitting your integration.
2. **Add a changelog entry**
Include a `link:` field pointing to your PR. Use the correct type: `enhancement`, `bugfix`, or `breaking-change`.

2. Added a new entry into `changelog.yml`
Update the package’s `changelog.yml` with a clear description of your changes for the new version.
3. **Update CODEOWNERS** (new integrations only)
Add your package to `.github/CODEOWNERS` with the format: `packages/<package_name> @elastic/<team-name>`.
Comment thread
strawgate marked this conversation as resolved.
Outdated

3. Bumped the package version
If you are releasing new changes, increment the version in your manifest.yml file. This is required for the package to be published.
4. **Include test coverage**
Run `elastic-package test` before submitting. Generate `sample_event.json` using `elastic-package test system --generate`.

4. Wrote clear PR title and description
- Use a concise, descriptive title (e.g., `[New Integration] Add Acme Logs integration`).
- In the PR description, summarize what your integration or change does, list key features or fixes, reference related issues, and provide testing instructions.
- Ensure your documentation, sample events, and tests are included and up to date.
5. **Bump the package version appropriately**
Use patch version bumps for backward-compatible bug fixes and documentation-only changes. Use minor version bumps for backward-compatible new features.

6. **Document breaking changes**
Use `breaking-change` type in changelog and clearly describe impact on existing users. Breaking changes require a major version bump.

The following changes are considered breaking:

- **Field type changes**: Changing a field's data type (e.g., `keyword` to `long`, `long` to `keyword`) causes mapping conflicts for existing users
- **Field removal**: Removing fields that users may depend on in dashboards, alerts, or queries
- **Field renaming**: Renaming fields breaks existing references (dashboards, saved queries, detection rules)
- **ECS field collisions**: Removing non-ECS fields from ECS namespaces or changing ECS field mappings
- **Event value changes**: Changing standardized values (e.g., `event.outcome` from `"Succeeded"` to `"success"`)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This wouldn't be considered a bug fix?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A breaking bug fix 😂

- **Configuration changes**: Requiring new credentials, changing authentication methods, or modifying required settings
- **Data stream changes**: Splitting, merging, or restructuring data streams
- **Transform destination changes**: Modifying transform destination indices (requires updating `fleet_transform_version`)
- **Default behavior changes**: Changing defaults that alter data collection (e.g., deduplication settings, data stream datasets)

**Minimizing risk from breaking changes:**

Breaking changes can affect content inside and outside this repository. Before introducing a breaking change:

- **Search for dependent content in this repository**: Use `grep` or search tools to find dashboards, transforms, and other assets that reference the fields you're changing.
- **Check the `security_detection_engine` package**: Security detection rules may depend on your integration's fields. Search in `packages/security_detection_engine/` for references to affected fields.
- **Coordinate with other teams**: Other Elastic repositories (e.g., `detection-rules`, `kibana`) may contain content that depends on your integration's fields. Reach out to relevant teams before merging breaking changes.
- **Consider deprecation first**: Instead of immediately removing or renaming fields, consider a deprecation period where both old and new fields are populated, giving users time to migrate.
- **Update dependent assets**: If dashboards or other assets in this repository reference changed fields, update them in the same PR or coordinate the changes.

7. **Add error handling to ingest pipelines**
Include `tag` fields on processors and use `on_failure` handlers. Follow the standard error message format with `_ingest.on_failure_*` fields.

8. **Write a clear PR title and description**
Use a concise, descriptive title (e.g., `[New Integration] Add Acme Logs integration`). Summarize changes, reference related issues, and ensure documentation is up to date.

Check warning on line 55 in docs/extend/_publish_an_integration.md

View workflow job for this annotation

GitHub Actions / Lint Documentation

Elastic.Latinisms: Latin terms and abbreviations are a common source of confusion. Use 'for example' instead of 'e.g'.

::::{tip}
A well-written PR with clear documentation, versioning, and testing instructions will speed up the review and publishing process!
Expand Down
Loading