.gitlab-ci.yml 4.58 KiB
Newer Older
image: parity/rust:gitlab-ci
variables:
  GIT_DEPTH: "3"
  SIMPLECOV: "true"
  RUST_BACKTRACE: "1"
  RUSTFLAGS: " -C link-arg=-s"
  CARGOFLAGS: ""
  GIT_STRATEGY:                    pull
  GIT_SUBMODULE_STRATEGY:          recursive
  CARGO_TARGET:                    x86_64-unknown-linux-gnu
  key: "$CI_BUILD_STAGE-$CI_BUILD_REF_NAME"
  untracked: true
.test_tags:              &test_tags #branches and tags for test stage
    tags:
      - linux-docker

.no_git:                           &no_git # disable git strategy
  variables:
    GIT_STRATEGY:                  none
    GIT_SUBMODULE_STRATEGY:        none

.releaseable_branches:             # list of git refs for building GitLab artifacts (think "pre-release binaries")
  only:                            &releaseable_branches
    - stable
    - beta
    - tags
    - schedules
    - master

.collect_artifacts:                &collect_artifacts
  artifacts:
    name:                          "${CI_JOB_NAME}_${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}"
    when:                          on_success
    expire_in:                     12 mos
    paths:
      - artifacts/

linux-stable-test:
    - rustup default stable
    - echo 'Running tests' && echo -en 'gitlab_fold:start:tests'
    - echo -en 'gitlab_fold:end:tests'
linux-beta-test:
  script:
    - rustup default beta
    - echo 'Running check'
    - time cargo check
    - echo 'End check'
  allow_failure: true
linux-nightly-test:
    - rustup default nightly
    - echo 'Running check'
    - time cargo check
    - echo 'End check'
  allow_failure: true
  stage: build
  only:                              *releaseable_branches
  script:
    - git submodule update --init
    - echo 'Building in release mode' && echo -en 'gitlab_fold:start:build.release'
    - rustup default stable
    - ешьу cargo build --target $CARGO_TARGET -p pbtc --release
    #- export SHA3=$(target/release/pbtc tools hash target/release/pbtc)
    - md5sum target/$CARGO_TARGET/release/pbtc > pbtc.md5
    - echo -en 'gitlab_fold:end:build.release'
5chdn's avatar
5chdn committed
    - echo 'Running regtests from ./tools/regtests.sh' && echo -en 'gitlab_fold:start:regtests'
    - ./tools/regtests.sh
    - echo -en 'gitlab_fold:end:regtests'
5chdn's avatar
5chdn committed
    - echo 'Running bench from ./tools/bench.sh' && echo -en 'gitlab_fold:start:bench'
    - ./tools/bench.sh
    - echo -en 'gitlab_fold:end:bench'
    - sh tools/deb_build.sh amd64
    - cp target/$CARGO_TARGET/release/pbtc deb/usr/bin/pbtc
    - export VER=$(grep -m 1 version Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n")
    - dpkg-deb -b deb "pbtc_"$VER"_amd64.deb"
    - md5sum "pbtc_"$VER"_amd64.deb" > "pbtc_"$VER"_amd64.deb.md5"
    - echo "_____ Post-processing binaries _____"
    - rm -rf artifacts/*
    - mkdir -p artifacts/$CARGO_TARGET
    - cd artifacts/$CARGO_TARGET
    - mv -v ../../target/$CARGO_TARGET/release/pbtc pbtc
    - mv -v ../../target/$CARGO_TARGET/release/pbtc_"$VER"_amd64.deb pbtc_"$VER"_amd64.deb
    - mv -v ../../target/$CARGO_TARGET/release/pbtc.md5 pbtc.md5
    - mv -v ../../target/$CARGO_TARGET/release/pbtc_"$VER"_amd64.deb.md5 pbtc_"$VER"_amd64.deb.md5
  tags:
    - linux-docker
  <<: *collect_artifacts

publish-docker:                    &publish_release
  stage: publish
  only:                            *releaseable_branches
  <<:                              *no_git
  cache:                           {}
  dependencies:
    - build-linux
  before_script:
    - docker info
  script:
    - if [ "$CI_BUILD_REF_NAME" == "beta-release" ]; then DOCKER_TAG="latest"; else DOCKER_TAG=$CI_BUILD_REF_NAME; fi
    - docker login -u $Docker_Hub_User_Parity -p $Docker_Hub_Pass_Parity
    - sh tools/docker_build.sh $DOCKER_TAG pbtc
    - docker logout
  tags:
publish-awss3-release:
  image:                           parity/awscli:latest
  <<:                           *publish_release
  script:
    - echo "__________Push binaries to AWS S3____________"
    - case "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" in
       (beta|stable|nightly)
         export BUCKET=parity-bitcoin-published;
         ;;
       (*)
         export BUCKET=parity-bitcoin-builds;
         ;;
     esac
    - aws s3 sync ./artifacts s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/
    - echo "__________Read from S3____________"
    - aws s3 ls s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}} --recursive --human-readable --summarize
  tags:
    - linux-docker