2021-12-07 06:15:58 +03:00
# Azure SDK Tools Contribution Guidelines
This is the repository used to host tools and libraries used by Azure SDK team engineering system.
We allow to create tools in any language suitable for the tools.
2022-01-13 01:02:38 +03:00
For every newly developing tool, create a new folder with brief description on its name.
2021-12-07 06:15:58 +03:00
Do not add third party tools directly in your folder, use it as dependencies.
2022-09-08 23:14:14 +03:00
## Coding Guidelines
See language specific guidelines:
- [PowerShell ](https://github.com/Azure/azure-sdk-tools/blob/main/doc/development/powershell.md )
2021-12-07 06:15:58 +03:00
## Codeowners
2022-01-13 01:02:38 +03:00
Add code owner in [CODEOWNERS ](https://github.com/Azure/azure-sdk-tools/blob/main/.github/CODEOWNERS ) with following format:
2021-12-07 06:15:58 +03:00
```
/tools/< tool-name > / @owner1 @owner2
```
## README
2022-01-13 01:02:38 +03:00
1. Add README.md file for every tool to illustrate:
2021-12-07 06:15:58 +03:00
* The purpose of the tool.
2022-01-13 01:02:38 +03:00
* Prerequisites before use.
2021-12-07 06:15:58 +03:00
* How to use, test and maintain the tool locally and remotely.
* Better to include where the tool is being used.
2022-01-13 01:02:38 +03:00
* Example: [README.md ](https://github.com/Azure/azure-sdk-tools/blob/main/tools/http-fault-injector/README.md )
2. Add tool details to the index in root [README.md ](https://github.com/Azure/azure-sdk-tools/blob/main/README.md#index ).
2021-12-07 06:15:58 +03:00
## Testing
2022-01-13 01:02:38 +03:00
Provide certain test cases to cover important workflow, especially on how it gets used in azure pipelines or running in prod.
2021-12-07 06:15:58 +03:00
Example: [Test library ](https://github.com/Azure/azure-sdk-tools/tree/main/tools/pipeline-witness/Azure.Sdk.Tools.PipelineWitness.Tests )
2022-01-13 01:02:38 +03:00
If there is any bundle script, do provide end-to-end test on script as well.
2021-12-07 06:15:58 +03:00
Example: [Custom Test on ci.yml ](https://github.com/Azure/azure-sdk-tools/blob/main/tools/code-owners-parser/ci.yml#L35 )
## Release ci.yml
2022-01-13 01:02:38 +03:00
- For the tool which is publishing to public repository, do provide ci.yml for building, testing and releasing.
2021-12-07 06:15:58 +03:00
Example: [ci.yml ](https://github.com/Azure/azure-sdk-tools/blob/main/tools/CreateRuleFabricBot/ci.yml )
- Pipelines should use common templates from `eng/pipelines/templates` .
The naming convention of the pipelines: `tools - <tool-name> - ci` for the public builds and `tools - <tool-name>` for internal builds.
- Use internal builds for releasing steps, and conditioning those steps similar to https://github.com/Azure/azure-sdk-tools/blob/main/eng/pipelines/templates/stages/archetype-sdk-tool-dotnet.yml#L89. *TODO: Will define release template for tools in other languages*