From b330463662825a7d7b22efabb2b7a40640d2b18e Mon Sep 17 00:00:00 2001 From: Joseph Richey Date: Sun, 11 Feb 2018 21:22:53 -0800 Subject: travis: use multiple build stages This change rewrites .travis.yml to use many build stages/jobs. This allows our build to run faster, as almost all jobs run in containers. Stage 1: Run on all pushes to all branches - Job Build: just runs "make" to make sure everything is OK Stage 2: Run on all PRs and pushes to master - Job Lint: Makes sure dep, "make gen", "make format", and "make lint" are all happy. - Job Build 1: Make sure "go get" and "make" will work. This job will later run unit tests. - Job Build 2: Same as Job Build 1, except with another go version. - Job Integeration: Run integration tests (needs sudo, so needs VM) Stage 3: Run on releases (if other stages pass) - Job Deploy: Publishes amd64 binaries to GitHub. --- .travis.yml | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 72 insertions(+), 16 deletions(-) (limited to '.travis.yml') diff --git a/.travis.yml b/.travis.yml index 925007d..6d0ae57 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,77 @@ language: go -sudo: required -go: - - 1.9.x +sudo: false dist: trusty +go: 1.9.x -addons: - apt: - sources: - - sourceline: 'deb http://en.archive.ubuntu.com/ubuntu/ artful main universe' - packages: - - libpam0g-dev - - e2fsprogs - - protobuf-compiler - - git # Needed to stop git from getting deleted +notifications: + email: false -install: - - make travis-install +stages: + - name: build + if: type = push + - name: presubmits + if: type = pr OR branch = master OR tag IS present + - name: deploy + if: type = push AND tag IS present -script: - - make travis-script +jobs: + include: + - stage: build + install: skip + script: make + + - stage: presubmits + env: Generate, Format, and Lint + install: + - wget -q https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 -O /tmp/dep + - chmod a+x /tmp/dep + - make tools + script: + - /tmp/dep status + - make gen + - bin/files-changed proto + - make format + - bin/files-changed format + - make lint + + - &build + env: Build and Unit Tests + install: skip + script: + - go build github.com/google/fscrypt/cmd/fscrypt + - make + - <<: *build + go: 1.8.x + + - env: Integration Tests + sudo: required + addons: + apt: + sources: + - sourceline: 'deb http://en.archive.ubuntu.com/ubuntu/ artful main universe' + packages: + - e2fsprogs + install: + - go get -u github.com/mattn/goveralls + - make test-setup + script: + - make coverage.out + - goveralls -coverprofile=coverage.out -service=travis-ci + + - stage: deploy + env: Release Binaries + install: skip + script: skip + before_deploy: make + deploy: + - provider: releases + api_key: + secure: TODO + file: + - bin/fscrypt + - bin/pam_fscrypt.so + skip_cleanup: true + on: + repo: google/master + branch: master + tags: true -- cgit v1.2.3