mirror of
https://github.com/ralsina/tartrazine.git
synced 2024-11-10 13:32:24 +00:00
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>
This commit is contained in:
parent
ccb6264699
commit
20f6f11a43
123
.travis.yml
123
.travis.yml
@ -5,14 +5,13 @@ language: go
|
||||
go:
|
||||
- '1.10.x'
|
||||
|
||||
go_import_path: gopkg.in/src-d/enry.v1
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libonig-dev
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
|
||||
env:
|
||||
global:
|
||||
- GO_VERSION='1.10.x'
|
||||
@ -20,120 +19,91 @@ env:
|
||||
- ONIGURUMA=0
|
||||
- ONIGURUMA=1
|
||||
|
||||
install:
|
||||
- go version
|
||||
- rm -rf $GOPATH/src/gopkg.in/src-d
|
||||
- mkdir -p $GOPATH/src/gopkg.in/src-d
|
||||
- ln -s $PWD $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- cd $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- if [ "$ONIGURUMA" == "1" ]; then tags="$tags oniguruma"; fi; go get -v -t --tags "$tags" ./...
|
||||
script:
|
||||
- make test-coverage
|
||||
stages:
|
||||
- name: test
|
||||
- name: release
|
||||
if: tag IS present
|
||||
|
||||
after_success:
|
||||
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)
|
||||
|
||||
before_deploy:
|
||||
- make packages
|
||||
- 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
|
||||
|
||||
deploy:
|
||||
- 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
|
||||
on:
|
||||
tags: true
|
||||
|
||||
jobs:
|
||||
env:
|
||||
- ONIGURUMA=0
|
||||
include:
|
||||
- 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
|
||||
- export GOPATH=$HOME/gopath
|
||||
- mkdir -p $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- rsync -az ${TRAVIS_BUILD_DIR}/ $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- go get -v gopkg.in/src-d/enry.v1/...
|
||||
|
||||
before_script:
|
||||
- cd java
|
||||
- make
|
||||
|
||||
script:
|
||||
- make test
|
||||
|
||||
before_deploy:
|
||||
- cd ..
|
||||
|
||||
- name: 'linux shared lib'
|
||||
stage: release
|
||||
script: make linux-shared
|
||||
deploy:
|
||||
provider: releases
|
||||
provider: release
|
||||
api_key:
|
||||
secure: $GITHUB_TOKEN
|
||||
file:
|
||||
- ./.shared/linux-x86-64/libenry.so
|
||||
skip_cleanup: true
|
||||
on:
|
||||
tags: true
|
||||
|
||||
- stage: Build MacOS shared
|
||||
|
||||
- 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"
|
||||
|
||||
sudo: true
|
||||
|
||||
install:
|
||||
- if [[ -z "$TRAVIS_TAG" ]]; then echo "Skipping this build for non-tag builds."; exit 0; fi
|
||||
- rm -rf $GOPATH/src/gopkg.in/src-d
|
||||
- mkdir -p $GOPATH/src/gopkg.in/src-d
|
||||
- ln -s $PWD $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- cd $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- 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
|
||||
|
||||
before_deploy:
|
||||
- echo "skip before_deploy"
|
||||
|
||||
script: make darwin-shared
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: $GITHUB_TOKEN
|
||||
file: ./.shared/darwin/libenry.dylib
|
||||
skip_cleanup: true
|
||||
on:
|
||||
tags: true
|
||||
|
||||
- stage: Publish Maven
|
||||
- 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
|
||||
- export GOPATH=$HOME/gopath
|
||||
- mkdir -p $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- rsync -az ${TRAVIS_BUILD_DIR}/ $GOPATH/src/gopkg.in/src-d/enry.v1
|
||||
- go version
|
||||
- go get -v gopkg.in/src-d/enry.v1/...
|
||||
|
||||
before_script:
|
||||
- if [[ -z "$TRAVIS_TAG" ]]; then echo "Skipping this build for non-tag builds."; exit 0; fi
|
||||
- cd java
|
||||
- make
|
||||
- curl -o ./shared/linux-x86-64/libenry.so -sL "https://github.com/$TRAVIS_REPO_SLUG/releases/download/$TRAVIS_TAG/libenry.so"
|
||||
@ -141,19 +111,16 @@ jobs:
|
||||
- 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:
|
||||
@ -161,5 +128,3 @@ jobs:
|
||||
file_glob: true
|
||||
file: ./target/enry-java*.jar
|
||||
skip_cleanup: true
|
||||
on:
|
||||
tags: true
|
||||
|
Loading…
Reference in New Issue
Block a user