Congratulations, you are going to contribute to the rust-azure-devops repository. First of all, I want to thank you for spending time to improve this project 🙏!
The following guidelines ensure your contributions respect the project philosophy, design, conventions and rules.
ℹ️ You can talk about this project on Slack
Bug reports are one of the contributions you can do on rust-azure-devops project.
First, ensure your bug isn't listed in issues. It is better to contribute to an existing issue instead of creating a new one. It's really important that you respect a specific format for your bug reports. This provides an optimal reading for contributors and ease the implementation of fixes:
### Description
[Description of the issue]
### Bug scenario
#### Steps
1. [First]
2. [Second]
3. [and so on...]
#### Expected
[What you expect to happen]
#### Actual
[What actually happens]
### Additional Information
**Can be reproduced ?**: [Pick one of the following: *Yes*|*No*]
**Severity**: [Pick one of the following: *Low*|*Medium*|*High*|*Critical*]
**Version**: [version number]
**Other**: [Others information]
If a bug can be cover with an unit test, you are more than welcome to write it! It's one of the best way to quickly resolve the issue 👍
Features can add some new capabilities to the project.
First, ensure your feature isn't listed in issues.
A feature must be created as a proposal for discussion with the community. When an agreement is found, the proposal is added as a feature inside a project. A feature can be considered too large to be a single card in a project. If so, the team can decide to create the feature as a project and split it into multiples small features (for an easier integration inside the project).
First, you need to take a look at Conventions to ensure your code respect project rules. These rules are mandatories to ensure each pull request respects the philosophy of the project.
All commits must be made with your personnal Github account and signing commits if possible (Take a look at Github documentation to set your user name, email & GPG).
To setup dependencies, execute "install" command of npm:
$ npm install
The project can be compile with the "compile" npm script:
$ npm run compile
Code analysis need to succeed because of the continious integration. You can run it with:
$ npm run lint
⚠️ Always ensure compile and lint succeeded before commit some code
To build the VSIX extension file, execute the "build" and "package" scripts:
$ npm run build
$ npm run package
By default, the build script generate a beta package and use the current date value to set the patch number. Those information can be change by passing "--release" and "--patch" arguments to the script:
$ npm run build -- --release --patch 1
$ npm run package
Ensure each commit has an understandable message for request reviewers.
Git command example:
$ git add .
$ git commit -m"{message}"
Each pull request must be synchronized with remote repository. We recommand to use an interactive rebase to synchronize local and remote repositories.
Git command example:
$ git fetch
$ git rebase -i origin/develop
External contributors have to synchronize local repository with the forked one (Take a look at the Github documentation here).
Git command example:
$ git push {origin} feature/{featureNameOrIssueId}
If a Pull requests resolve an issue, include it inside the description. When approved by reviewers, pull request are merged into the "master" branch.
⚠️ To be reviewed, CI process must succeeded
Debug can be done by running files inside the debug folder with Node.js.
VS Code debug configuration allows you to launch the debugger from any of those files.
Please respect TSLint rules.
⚠️ Pull request with TSLint configuration changes whitout valid reasons will be rejected.
Don't install new dependencies. Remember that the project is an extension and the package weight must be as small as possible. If for any reason a dependency is required for a specific feature, add all the information about it in the pull request.
Use camelCase convention when naming a file.
Azure DevOps task library isn't unit tests friendy... That's why there is no unit tests setup in the project...