stages:
  - build
  - test
  - deploy
variables:
  GIT_DEPTH: "3"
  SIMPLECOV: "true" 
  RUST_BACKTRACE: "1"
cache:
  key: "$CI_BUILD_NAME/$CI_BUILD_REF_NAME"
  untracked: true
linux-beta:
  stage: build
  image: ethcore/rust:beta
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - export
    - cargo build --release --verbose
    - strip target/release/parity
    - cp target/release/parity parity
  tags:
    - rust
    - rust-beta
  artifacts:
    paths:
    - target/release/parity
    name: "${CI_BUILD_NAME}_parity"
  stage: deploy
  tags:
    - rust
    - rust-beta
  script:
    - ./deploy.sh
linux-nightly:
  stage: build
  image: ethcore/rust:nightly
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - cargo build --release --verbose
    - strip target/release/parity
  tags:
    - rust
    - rust-nightly
  artifacts:
    paths:
    - target/release/parity
    name: "${CI_BUILD_NAME}_parity"
  allow_failure: true
linux-centos:
  stage: build
  image: ethcore/rust-centos:latest
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - export CXX="g++"
    - export CC="gcc"
    - cargo build --release --verbose
    - strip target/release/parity
  tags:
    - rust
    - rust-centos
  artifacts:
    paths:
    - target/release/parity
    name: "${CI_BUILD_NAME}_parity"
linux-armv7:
  stage: build
  image: ethcore/rust-arm:latest
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - export
    - rm -rf .cargo
    - mkdir -p .cargo
    - echo "[target.armv7-unknown-linux-gnueabihf]" >> .cargo/config
    - echo "linker= \"arm-linux-gnueabihf-gcc\"" >> .cargo/config
    - cat .cargo/config
    - cargo build --target armv7-unknown-linux-gnueabihf --release --verbose
    - arm-linux-gnueabihf-strip target/armv7-unknown-linux-gnueabihf/release/parity
  tags:
    - rust
    - rust-arm
  artifacts:
    paths:
    - target/armv7-unknown-linux-gnueabihf/release/parity
    name: "${CI_BUILD_NAME}_parity"
linux-arm:
  stage: build
  image: ethcore/rust-arm:latest
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - export
    - rm -rf .cargo
    - mkdir -p .cargo
    - echo "[target.arm-unknown-linux-gnueabihf]" >> .cargo/config
    - echo "linker= \"arm-linux-gnueabihf-gcc\"" >> .cargo/config
    - cat .cargo/config
    - cargo build --target arm-unknown-linux-gnueabihf --release --verbose
    - arm-linux-gnueabihf-strip target/arm-unknown-linux-gnueabihf/release/parity
  tags:
    - rust
    - rust-arm
  artifacts:
    paths:
    - target/arm-unknown-linux-gnueabihf/release/parity
    name: "${CI_BUILD_NAME}_parity"
  allow_failure: true
linux-armv6:
  stage: build
  image: ethcore/rust-arm:latest
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - export
    - rm -rf .cargo
    - mkdir -p .cargo
    - echo "[target.arm-unknown-linux-gnueabi]" >> .cargo/config
    - echo "linker= \"arm-linux-gnueabi-gcc\"" >> .cargo/config
    - cat .cargo/config
    - cargo build --target arm-unknown-linux-gnueabi --release --verbose
    - arm-linux-gnueabi-strip target/arm-unknown-linux-gnueabi/release/parity
  tags:
    - rust
    - rust-arm
  artifacts:
    paths:
    - target/arm-unknown-linux-gnueabi/release/parity
    name: "${CI_BUILD_NAME}_parity"
  allow_failure: true
linux-aarch64:
  stage: build
  image: ethcore/rust-arm:latest
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - export
    - rm -rf .cargo
    - mkdir -p .cargo
    - echo "[target.aarch64-unknown-linux-gnu]" >> .cargo/config
    - echo "linker= \"aarch64-linux-gnu-gcc\"" >> .cargo/config
    - cat .cargo/config
    - cargo build --target aarch64-unknown-linux-gnu --release --verbose
    - aarch64-linux-gnu-strip target/aarch64-unknown-linux-gnu/release/parity
  tags:
    - rust
    - rust-arm
  artifacts:
    paths:
    - target/aarch64-unknown-linux-gnu/release/parity
    name: "${CI_BUILD_NAME}_parity"
  allow_failure: true
darwin:
  stage: build
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - cargo build --release --verbose
  tags:
    - osx
  artifacts:
    paths:
    - target/release/parity
    name: "${CI_BUILD_NAME}_parity"
windows:
  stage: build
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;C:\vs2015\VC\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
    - set LIB=C:\vs2015\VC\lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
    - set RUST_BACKTRACE=1
    - rustup default stable-x86_64-pc-windows-msvc
    - cargo build --release --verbose
  tags:
   - rust-windows
  artifacts:
    paths:
    - target/release/parity.exe
    - target/release/parity.pdb
    name: "${CI_BUILD_NAME}_parity"
linux-stable:
  stage: build
  image: ethcore/rust:stable
  only:
    - master
    - beta
    - tags
    - stable
  script:
    - export
    - cargo build --release --verbose
    - strip target/release/parity
  tags:
    - rust
    - rust-stable
  artifacts:
    paths:
    - target/release/parity
    name: "${CI_BUILD_NAME}_parity"
test-linux:
  stage: test
  before_script:
    - git submodule update --init --recursive
  script:
    - ./test.sh --verbose
  dependencies:
    - linux-stable
