зеркало из https://github.com/Azure/iotedgedev.git
123 строки
4.9 KiB
Markdown
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`
|