tartrazine/.travis.yml
Alexander Bezzubov 20f6f11a43
ci: break down to multiple stages \w prallel jobs
Biggest benefit of using separate stage for tests and release
is that we are not waiting for osx VM instance instance any
more on every PR, just to run
`if [[ -z "$TRAVIS_TAG" ]]; then echo "Skipping this build for non-tag builds."; exit 0; fi`
there.

It alos adds clarity to CI structure => is easier to maintain.

Signed-off-by: Alexander Bezzubov <bzz@apache.org>
2018-10-23 14:09:44 +02:00

131 lines
3.9 KiB
YAML

sudo: false
dist: trusty
language: go
go:
- '1.10.x'
go_import_path: gopkg.in/src-d/enry.v1
addons:
apt:
packages:
- libonig-dev
env:
global:
- GO_VERSION='1.10.x'
matrix:
- ONIGURUMA=0
- ONIGURUMA=1
stages:
- name: test
- name: release
if: tag IS present
jobs:
include:
- name: 'golang unitTests'
stage: test
install:
- if [ "$ONIGURUMA" == "1" ]; then tags="$tags oniguruma"; fi; go get -v -t --tags "$tags" ./...
script:
- make test-coverage
after_success:
- bash <(curl -s https://codecov.io/bash)
- name: 'java unitTests'
stage: test
language: scala
jdk: oraclejdk8
install:
- gimme version
- eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=$GO_VERSION bash)"
- go version
- go get -v gopkg.in/src-d/enry.v1/...
before_script:
- cd java
- make
script:
- make test
- name: 'linux packages'
stage: release
script: make packages
deploy:
provider: releases
api_key:
secure: $GITHUB_TOKEN
file_glob: true
file: build/*.tar.gz
skip_cleanup: true
- name: 'linux shared lib'
stage: release
script: make linux-shared
deploy:
provider: release
api_key:
secure: $GITHUB_TOKEN
file:
- ./.shared/linux-x86-64/libenry.so
skip_cleanup: true
- name: 'macOS shared lib'
stage: release
sudo: true
env:
- OSXCROSS_PACKAGE="osxcross_3034f7149716d815bc473d0a7b35d17e4cf175aa.tar.gz"
- OSXCROSS_URL="https://github.com/bblfsh/client-scala/releases/download/v1.5.2/${OSXCROSS_PACKAGE}"
- PATH="/$HOME/osxcross/bin:$PATH"
install:
- go get -v -t ./...
- sudo apt-get update
- sudo apt-get install -y --no-install-recommends clang g++ gcc gcc-multilib libc6-dev libc6-dev-i386 mingw-w64 patch xz-utils
- cd ${HOME}
- curl -sSL ${OSXCROSS_URL} | tar -C ${HOME} -xzf -
- cd $GOPATH/src/gopkg.in/src-d/enry.v1
script: make darwin-shared
deploy:
provider: releases
api_key:
secure: $GITHUB_TOKEN
file: ./.shared/darwin/libenry.dylib
skip_cleanup: true
- name: 'java: publish to maven'
stage: release
language: scala
jdk: oraclejdk8
install:
- eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=$GO_VERSION bash)"
- go version
- go version
- go get -v gopkg.in/src-d/enry.v1/...
before_script:
- cd java
- make
- curl -o ./shared/linux-x86-64/libenry.so -sL "https://github.com/$TRAVIS_REPO_SLUG/releases/download/$TRAVIS_TAG/libenry.so"
- mkdir -p ./shared/darwin
- curl -o ./shared/darwin/libenry.dylib -sL "https://github.com/$TRAVIS_REPO_SLUG/releases/download/$TRAVIS_TAG/libenry.dylib"
- openssl aes-256-cbc -K $encrypted_a0e1c69dbbc7_key -iv $encrypted_a0e1c69dbbc7_iv -in key.asc.enc -out key.asc -d
- gpg --no-default-keyring --primary-keyring ./project/.gnupg/pubring.gpg --secret-keyring ./project/.gnupg/secring.gpg --keyring ./project/.gnupg/pubring.gpg --fingerprint --import key.asc
script:
- make test # ensure the shared objects are functional
- ./sbt publishLocal
- ./sbt publishSigned
- ./sbt sonatypeRelease
before_deploy:
- rm ./target/enry-java-*-javadoc.jar
- rm ./target/enry-java-*-sources.jar
- rm ./target/enry-java-*-tests.jar
- rm ./target/enry-java-assembly-*.jar
deploy:
provider: releases
api_key:
secure: $GITHUB_TOKEN
file_glob: true
file: ./target/enry-java*.jar
skip_cleanup: true