--- # need for docker build sudo: true dist: bionic addons: apt: packages: - coreutils - ruby - socat services: - docker language: go branches: only: - master env: global: - GO111MODULE=on - TEST_COVERAGE=stdout - GO_METALINTER_THREADS=1 - GO_COVER_DIR=_output - KUBECONFIG=$HOME/.kube/config # set CEPH_CSI_RUN_ALL_TESTS to non-empty to run all tests - CEPH_CSI_RUN_ALL_TESTS=true before_install: - export GOLANG_VERSION=$(source build.env ; echo ${GOLANG_VERSION}) - gimme ${GOLANG_VERSION} - source ~/.gimme/envs/go${GOLANG_VERSION}.env - mkdir -p $GOPATH/bin before_script: - curl https://download.ceph.com/keys/release.asc | sudo apt-key add - - sudo apt-add-repository "deb https://download.ceph.com/debian-nautilus $(lsb_release -sc) main" # yamllint enable rule:line-length - sudo apt-get -qq update # only the arm64 fallback repo is unsigned and needs --allow-unauthenticated - sudo apt-get -y --allow-unauthenticated install librados-dev librbd-dev # Two stages for testing, each stage runs its jobs in parallel, but stages are # run after each other, unless the last stage fails. # Only run the deploy stage on push (not pull_request) events. stages: - build testing - e2e testing - name: deploy if: type = push jobs: include: - stage: build testing name: static-check-make install: - gem install mdl - pip install --user --upgrade pip - pip install --user yamllint # install golangci-lint - export GOLANGCI_VERSION=$(source build.env ; echo ${GOLANGCI_VERSION}) - curl -sf "https://install.goreleaser.com/github.com/golangci/golangci-lint.sh" | bash -s -- -b $GOPATH/bin "${GOLANGCI_VERSION}" # install gosec - export GOSEC_VERSION=$(source build.env ; echo ${GOSEC_VERSION}) - curl -sfL "https://raw.githubusercontent.com/securego/gosec/master/install.sh" | sh -s -- -b $GOPATH/bin "${GOSEC_VERSION}" # install helm for helm lint - export HELM_VERSION=$(source build.env ; echo ${HELM_VERSION}) - curl -L https://git.io/get_helm.sh | bash -s -- -v "${HELM_VERSION}" # yamllint disable rule:line-length - mkdir -p /opt/commitlint && pushd /opt/commitlint && npm init -y && npm install --save-dev @commitlint/travis-cli && popd # yamllint enable rule:line-length - export PATH=/opt/commitlint/node_modules/.bin:$PATH script: - commitlint-travis - make go-lint - make lint-extras - make gosec - make go-test - make mod-check - stage: build testing name: Build multi-architecture image for amd64 and arm64 script: - ./scripts/build-multi-arch-image.sh || travis_terminate 1; - stage: e2e testing name: cephcsi with kube 1.16.9 script: - scripts/skip-doc-change.sh || travis_terminate 0; - make image-cephcsi || travis_terminate 1; - scripts/travis-functest.sh v1.16.9 || travis_terminate 1; - stage: e2e testing name: cephcsi with kube 1.17.5 script: - scripts/skip-doc-change.sh || travis_terminate 0; - make image-cephcsi || travis_terminate 1; - scripts/travis-functest.sh v1.17.5 || travis_terminate 1; - stage: e2e testing name: cephcsi helm charts with kube 1.17.5 script: - scripts/skip-doc-change.sh || travis_terminate 0; - make image-cephcsi || travis_terminate 1; - scripts/travis-helmtest.sh v1.17.5 || travis_terminate 1; - stage: deploy name: push artifacts to repositories script: ./deploy.sh