96 lines
3.2 KiB
YAML
96 lines
3.2 KiB
YAML
# Use the newer Travis-CI build templates based on the
|
|
# Ubuntu Linux distribution "Xenial Xerus" release.
|
|
os: linux
|
|
dist: xenial
|
|
|
|
# Disable sudo for all builds by default. This ensures all jobs use
|
|
# Travis-CI's containerized build environment unless specified otherwise.
|
|
# The container builds have *much* shorter queue times than the VM-based
|
|
# build environment on which the sudo builds depend.
|
|
sudo: false
|
|
services: false
|
|
|
|
# Set the version of Go.
|
|
language: go
|
|
go: 1.13
|
|
|
|
# Always set the project's Go import path to ensure that forked
|
|
# builds get cloned to the correct location.
|
|
go_import_path: github.com/vmware/govmomi
|
|
|
|
# Ensure all the jobs know where the temp directory is.
|
|
env:
|
|
global: TMPDIR=/tmp
|
|
|
|
jobs:
|
|
include:
|
|
|
|
# The "lint" stage runs the various linters against the project.
|
|
- &lint-stage
|
|
stage: lint
|
|
env: LINTER=govet
|
|
install: true
|
|
script: make "${LINTER}"
|
|
|
|
- <<: *lint-stage
|
|
env: LINTER=goimports
|
|
|
|
# The "build" stage verifies the program can be built against the
|
|
# various GOOS and GOARCH combinations found in the Go releaser
|
|
# config file, ".goreleaser.yml".
|
|
- &build-stage
|
|
stage: build
|
|
env: GOOS=linux GOARCH=amd64
|
|
install: true
|
|
script: make install
|
|
|
|
- <<: *build-stage
|
|
env: GOOS=linux GOARCH=386
|
|
|
|
- <<: *build-stage
|
|
env: GOOS=darwin GOARCH=amd64
|
|
- <<: *build-stage
|
|
env: GOOS=darwin GOARCH=386
|
|
|
|
- <<: *build-stage
|
|
env: GOOS=freebsd GOARCH=amd64
|
|
- <<: *build-stage
|
|
env: GOOS=freebsd GOARCH=386
|
|
|
|
- <<: *build-stage
|
|
env: GOOS=windows GOARCH=amd64
|
|
- <<: *build-stage
|
|
env: GOOS=windows GOARCH=386
|
|
|
|
# The test stage executes the test target.
|
|
- stage: test
|
|
install: true
|
|
script: make test
|
|
|
|
# The deploy stage deploys the build artifacts using goreleaser.
|
|
#
|
|
# This stage will only be activated when there is an annotated tag present
|
|
# or when the text "/ci-deploy" is present in the commit message. However,
|
|
# the "deploy" phase of the build will still only be executed on non-PR
|
|
# builds as that restriction is baked into Travis-CI.
|
|
#
|
|
# Finally, this stage requires the Travis-CI VM infrastructure in order to
|
|
# leverage Docker. This will increase the amount of time the jobs sit
|
|
# in the queue, waiting to be built. However, it's a necessity as Travis-CI
|
|
# only allows the use of Docker with VM builds.
|
|
- stage: deploy
|
|
if: tag IS present OR commit_message =~ /\/ci-deploy/
|
|
sudo: required
|
|
services: docker
|
|
install: true
|
|
script: make install
|
|
after_success: docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
|
|
deploy:
|
|
- provider: script
|
|
skip_cleanup: true
|
|
script: curl -sL http://git.io/goreleaser | bash
|
|
addons:
|
|
apt:
|
|
update: true
|
|
packages: xmlstarlet
|