|
|
@@ -0,0 +1,85 @@ |
|
|
|
|
|
# drone-with-go [](http://beta.drone.io/drone-demos/drone-with-go) [](https://aircover.co/drone-demos/drone-with-go) |
|
|
|
|
|
|
|
|
|
|
|
An example of how to test Go code with Drone. |
|
|
|
|
|
|
|
|
|
|
|
# Basic Testing |
|
|
|
|
|
To run basic CI tests use the following in your `.drone.yml` file. |
|
|
|
|
|
|
|
|
|
|
|
```yaml |
|
|
|
|
|
build: |
|
|
|
|
|
image: golang:1.5.3 |
|
|
|
|
|
commands: |
|
|
|
|
|
- go test ./... |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
In this config `image: golang:1.5.3` references the official Golang Docker image hosted at https://hub.docker.com/r/_/golang/ and Go tests are execute with the `go test ./...` command. |
|
|
|
|
|
|
|
|
|
|
|
# Advanced Testing |
|
|
|
|
|
|
|
|
|
|
|
## Environment Variables |
|
|
|
|
|
Use environment variables to configure Go testing. |
|
|
|
|
|
Set environment variables with the `build` section's `environment`. |
|
|
|
|
|
|
|
|
|
|
|
```yaml |
|
|
|
|
|
build: |
|
|
|
|
|
image: golang:1.5.3 |
|
|
|
|
|
environment: |
|
|
|
|
|
- GO15VENDOREXPERIMENT=1 |
|
|
|
|
|
- GOOS=linux |
|
|
|
|
|
- GOARCH=amd64 |
|
|
|
|
|
- CGO_ENABLED=0 |
|
|
|
|
|
commands: |
|
|
|
|
|
- go test ./... |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Coverage |
|
|
|
|
|
Drone tests work best with the [Coverage plugin](http://readme.drone.io/plugins/coverage/) and the [aircover.co](https://aircover.co/docs/overview/) service. |
|
|
|
|
|
We only want to send a coverage report when all tests pass, so the Coverage plugin uses `publish`. |
|
|
|
|
|
Also, we should specify a particular branch so that coverage reports are consistent. |
|
|
|
|
|
|
|
|
|
|
|
```yaml |
|
|
|
|
|
build: |
|
|
|
|
|
image: golang:1.5.3 |
|
|
|
|
|
environment: |
|
|
|
|
|
- GO15VENDOREXPERIMENT=1 |
|
|
|
|
|
- GOOS=linux |
|
|
|
|
|
- GOARCH=amd64 |
|
|
|
|
|
- CGO_ENABLED=0 |
|
|
|
|
|
commands: |
|
|
|
|
|
- go test -cover -coverprofile coverage.out |
|
|
|
|
|
|
|
|
|
|
|
publish: |
|
|
|
|
|
coverage: |
|
|
|
|
|
when: |
|
|
|
|
|
branch: master |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Plugins |
|
|
|
|
|
Notification plugins use `notify` for integrations like HipChat. |
|
|
|
|
|
`publish` is used for publishing GitHub Releases, Coverage reports, and more. |
|
|
|
|
|
`deploy` is used for deployments to systems like AWS and Rancher. |
|
|
|
|
|
You can find a list of plugins at [readme.drone.io/plugins](http://readme.drone.io/plugins/). |
|
|
|
|
|
|
|
|
|
|
|
```yaml |
|
|
|
|
|
build: |
|
|
|
|
|
image: golang:1.5.3 |
|
|
|
|
|
environment: |
|
|
|
|
|
- GO15VENDOREXPERIMENT=1 |
|
|
|
|
|
- GOOS=linux |
|
|
|
|
|
- GOARCH=amd64 |
|
|
|
|
|
- CGO_ENABLED=0 |
|
|
|
|
|
commands: |
|
|
|
|
|
- go test -cover -coverprofile coverage.out |
|
|
|
|
|
|
|
|
|
|
|
publish: |
|
|
|
|
|
coverage: |
|
|
|
|
|
when: |
|
|
|
|
|
branch: master |
|
|
|
|
|
|
|
|
|
|
|
notify: |
|
|
|
|
|
hipchat: |
|
|
|
|
|
from: Your_Project |
|
|
|
|
|
notify: true |
|
|
|
|
|
room_id_or_name: Your_Room |
|
|
|
|
|
auth_token: $$HIPCHAT_DRONE_TOKEN |
|
|
|
|
|
``` |