--- # need for docker build os: linux dist: bionic addons: apt: packages: - coreutils - ruby - socat services: - docker language: go branches: only: - release-v3.1 env: global: - GO111MODULE=on - 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 # csi release to use for upgrade testing - export UPGRADE_VERSION=$(source build.env ; echo ${UPGRADE_VERSION}) before_script: - export CV=$(source build.env ; echo ${CEPH_VERSION}) - test -z "${CV}" || export GO_TAGS="-tags=${CV}" - curl https://download.ceph.com/keys/release.asc | sudo apt-key add - - sudo apt-add-repository "deb https://download.ceph.com/debian-${CV} $(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 - sudo apt-get -y install conntrack # 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 - upgrade 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 - export PATH=/opt/commitlint/node_modules/.bin:$PATH # install pylint and prettytable. # target python script requires python3 dependencies. - sudo apt install python3-pip python3-prettytable python3-setuptools python3-wheel -y - pip3 install pylint # yamllint enable rule:line-length script: - commitlint-travis - make go-lint - make lint-extras - make gosec - make go-test TEST_COVERAGE=stdout GO_COVER_DIR=_output/ - 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: upgrade testing name: CephFS upgrade tesing with CSI v3.0.0 script: - scripts/skip-doc-change.sh || travis_terminate 0; - make image-cephcsi || travis_terminate 1; - scripts/travis-functest.sh v1.18.5 --test-cephfs=true --test-rbd=false --upgrade-testing=true --upgrade-version="${UPGRADE_VERSION}" || travis_terminate 1; - stage: upgrade testing name: RBD upgrade tesing with CSI v3.0.0 script: - scripts/skip-doc-change.sh || travis_terminate 0; - make image-cephcsi || travis_terminate 1; - scripts/travis-functest.sh v1.18.5 --test-cephfs=false --test-rbd=true --upgrade-testing=true --upgrade-version="${UPGRADE_VERSION}" || travis_terminate 1; - stage: deploy name: push artifacts to repositories script: ./deploy.sh