First of all, welcome. Thank you for your interest in furthering Go support for Azure Service Bus.
The following programs should be installed on your machine before you begin developing.
Note: Adhering to the linters below is enforced in CI. It is not required to have the tools locally, but contributors are expected to fix those issues found in CI.
Tool | Necessary | Description |
---|---|---|
go | Required | This is a Go project, and as such you should have Go installed on your machine. We use modules for package management, so we recommend at least using go1.11. However, you may also use go1.9.7+ or go1.10.3+. |
git | Required | azure-service-bus-go uses Git as its source control management solution. |
az | Optional | The Azure CLI is used for its ability to authenticate against Azure. Tests themselves only need a connection string and other metadata about the Service Bus namespace, but tooling to automatically setup the necessary infrastructure to run the tests may depend on the Azure CLI. |
terraform | Optional | terraform is used to help provision the Azure infrastructure needed to run our tests both in CI and on your local machine. If you have already provisioned a Service Bus Namespace, and created the necessary Service Bus Queues, you do not need terraform. |
golint | Optional | golint is a linter that finds basic stylistic mistakes in Go programs. |
gocyclo | Optional | gocyclo checks for programmatic complexity, to ensure code readability. |
megacheck | Optional | megacheck is a linter that checks for a broader set of errors than go vet or golint . |
Feel free to use your editor of choice for modifying this project! We use both both VS Code
and Goland. Whichever editor you choose, please do not commit any project configuration
files such as the contents of the .vscode/
or .idea/
directories.
In order for us to accept your contribution, you must have signed the the Microsoft Open Source Contribution License Agreement. It only takes a minute, and is attached to your GitHub account. Sign once and commit to any Microsoft Open Source Project.
-
Ensure that you have an App Registration (Service Principal) with a Key setup with access to your subscription.
-
Set the following environment variables:
Name Contents SERVICEBUS_CONNECTION_STRING The escaped connection string associated with the Service Bus namespace that should be targeted. AZURE_CLIENT_ID The Application ID of the App Registration (i.e. Service Principal) to be used to create test infrastructure. AZURE_CLIENT_SECRET The Key associated with the App Registration to be used to create test infrastructure. AZURE_SUBSCRIPTION_ID The Azure Subscription to be used to run your tests. AZURE_TENANT_ID The UUID used to identify the tenant your Azure Subscription belongs to. TEST_SERVICEBUS_RESOURCE_GROUP The Azure Resource Group that holds the infrastructure needed to run the tests. TEST_SERVICEBUS_LOCATION The Azure Region containing your resource group. (e.g. "eastus", "westus2", etc.) -
Authenticate using the CLI byt running the command
az login
.Note: Alternatively, set environment variables
ARM_CLIENT_ID
,ARM_CLIENT_SECRET
,ARM_TENANT_ID
, andARM_SUBSCRIPTION_ID
equal to their AZURE counterparts. -
Run
terraform apply
to make sure that all of the infrastructure needed to run the tests is available.Note: you can save values that it asks you for by defining them in a file named
terraform.tfvars
. -
Run the tests by executing
go test
from the repository's root directory.
Running the command make test
will automatically run all linting rules, terraform, and go test
for you.
If you feel that you've found a way to improve Azure Service Bus itself, or with this library, feel free to open an issue here in GitHub. We'll see that it gets into the hands of the appropriate people, whomever that is.
When filing an issue to bring awareness to a bug, please provide the following information:
- The OS and Go version you are using. i.e. the output of running
go version
. - The version of Azure-Service-Bus-Go you are using.
It also significantly speeds things up if you can provide the minimum amount of code it takes to reproduce the bug in the form of a GitHub Gist or Go Playground snippet.
For expanded capabilities, please describe what you'd like to see and whom you believe would benefit.