iotedgedev/CONTRIBUTING.md

123 строки
4.9 KiB
Markdown

# Contributing
This section describes how to get your developer workspace running for the first time so that you're ready to start making contributions.
Please fork, branch and pull-request any changes you'd like to make.
## Workspace Setup
1. Clone this repository
`git clone https://github.com/azure/iotedgedev.git`
1. Rename `.env.tmp` in the root of the repo to `.env` and set the `IOTHUB_CONNECTION_STRING` and `DEVICE_CONNECTION_STRING` values to settings from your IoT Hub and Edge Device. To set these values you could run `iotedgedev iothub setup` in the root of the repo.
1. Install **[Docker](https://docs.docker.com/engine/installation/)**
- Windows
- Be sure to check whether you are running in Linux container mode or Windows container mode.
- Linux
- We've seen some issues with docker.io. If IoT Edge doesn't run for you, then try installing Docker CE directly instead of via docker.io. Use the [CE install steps](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce), or use the [convenience script](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-using-the-convenience-script).
- By default, you need `sudo` to run `docker` commands. If you want to avoid this, please follow the [post-installation steps for Linux](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user).
### A) Contributor Dev Machine Setup
1. Install **Python 3.6+**, and **pip**
- Windows: [Install from Python's website](https://www.python.org/downloads/)
- Linux: `sudo apt-get install python-pip python3-pip`
- macOS: The OpenSSL used by the system built-in Python is old and vulnerable. Please use Python installed with [Homebrew](https://docs.brew.sh/Homebrew-and-Python).
1. Install **[Azure CLI 2.0](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest)**
1. Install **[Azure CLI IoT extension](https://github.com/Azure/azure-iot-cli-extension/)**
- New Install: `az extension add --name azure-iot`
- Update Install: `az extension update --name azure-iot`
1. Install **[Node.js](https://nodejs.org/en/download/)** and the **`iothub-explorer`** package
- `npm i -g iothub-explorer`
1. (Linux only) Install [Docker Compose](https://docs.docker.com/compose/)
```
pip install -U docker-compose
```
1. (Linux only) Install extra system dependencies
```
sudo apt-get install -y libffi-dev libssl-dev
```
1. Install module dependencies
##### C# module and C# Azure Functions module
Install **[.NET Core SDK 2.1 or later](https://www.microsoft.com/net/download)**
##### Python module
1. Install **[Git](https://git-scm.com/)**
2. Install **[Cookiecutter](https://github.com/audreyr/cookiecutter)**
```
pip install -U cookiecutter
```
##### Node.js module
1. Install **[Node.js](https://nodejs.org/en/download/)**
2. Install **[Yeoman](http://yeoman.io/)** and **[Azure IoT Edge Node.js module generator](https://github.com/Azure/generator-azure-iot-edge-module)** packages
```
npm i -g yo generator-azure-iot-edge-module
```
##### Java module
1. Install **[JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html)**
1. Install **[Maven](https://maven.apache.org/)**
1. Install Python development dependencies
```
pip install -r requirements_dev.txt
```
### B) Contributor Docker Devcontainer Setup
#### With VSCode
Developing with docker using VSCode's [remote containers](https://code.visualstudio.com/docs/remote/containers):
- Install [Remote Development Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) in VSCode
- Open the project in VSCode
- When prompted by VSCode, select "Reopen in Container"
> To further customize your devcontainer checkout [Personalizing with `dotfile` repositories](https://code.visualstudio.com/docs/remote/containers#_personalizing-with-dotfile-repositories). In the same settings you're also able to add personal extensions for your container.
#### Without VSCode
- Build the development environment: `docker build -f .devcontainer/Dockerfile -t dev .`
- Mount the root directory into the docker container, and drop into a bash shell in the container:
```bash
docker run -it -v ${PWD}:/workspaces/iotedgedev iotedgedev
```
## Developing
1. Run IoT Edge Dev Tool in editable mode
Run the following command from the root of the repo to see changes to iotedgedev commands as you change code.
```
pip install -e .
```
## VS Code Debugging
VS Code Debugging works only with Python 3.6 VS Code Python Environments for now. Make sure that your VS Code Python Environment is [pointing to Python 3.6](https://code.visualstudio.com/docs/python/environments#_how-to-choose-an-environment)
Set your CLI arguments in .vscode/launch.json and hit **F5**
## Run Tests
Run the following command to run tests.
`tox`