openethereum/.gitlab-ci.yml
Denis S. Soldatov aka General-Beck ef997cba5a
small fixes
2018-08-02 15:35:53 +03:00

303 lines
7.7 KiB
YAML

stages:
- test
- build
- package
- publish
- docs
image: parity/rust:gitlab-ci
variables:
CI_SERVER_NAME: "GitLab CI"
CARGO_HOME: "${CI_PROJECT_DIR}/cargo"
BUILD_TARGET: ubuntu
BUILD_ARCH: amd64
CARGO_TARGET: x86_64-unknown-linux-gnu
cache:
key: "${CI_JOB_NAME}"
paths:
- ${CI_PROJECT_DIR}/target/
- ${CI_PROJECT_DIR}/cargo/
.releaseable_branches: # list of git refs for building GitLab artifacts (think "pre-release binaries")
only: &releaseable_branches
- master
- stable
- beta
- tags
- gitlab-next
.publishable_branches: # list of git refs for publishing builds to the "production" locations
only: &publishable_branches
- nightly # Our nightly builds from schedule, on `master`
- "v*" # Our version tags
- gitlab-next
.collect_artifacts: &collect_artifacts
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: on_success
expire_in: 1 mos
paths:
- artifacts/
.determine_version: &determine_version |
export VERSION=$(grep -m 1 "version =" Cargo.toml | awk '{print $3}' | tr -d '"' | tr -d "\n")
echo "Version" $VERSION
#### stage: test
test:rust:stable: &test
stage: test
script:
- scripts/gitlab/test.sh stable
tags:
- rust-stable
.optional_test: &optional_test
<<: *test
allow_failure: true
only:
- master
test:rust:beta:
<<: *optional_test
script:
- scripts/gitlab/test.sh beta
test:rust:nightly:
<<: *optional_test
script:
- scripts/gitlab/test.sh nightly
#test:rustfmt:
# <<: *optional_test
# script:
# - scripts/gitlab/rustfmt.sh
#test:clippy:
# <<: *optional_test
# script:
# - scripts/gitlab/clippy.sh
test:coverage:
stage: test
only:
- master
script:
- scripts/gitlab/coverage.sh
tags:
- shell
allow_failure: true
#### stage: build
build:linux:ubuntu:amd64: &build
stage: build
only: *releaseable_branches
variables:
CARGO_TARGET: x86_64-unknown-linux-gnu
script:
- scripts/gitlab/build-unix.sh
<<: *collect_artifacts
tags:
- rust-stable
allow_failure: true
build:linux:ubuntu:i386:
<<: *build
image: parity/rust-i686:gitlab-ci
variables:
CARGO_TARGET: i686-unknown-linux-gnu
build:linux:ubuntu:arm64:
<<: *build
image: parity/rust-arm64:gitlab-ci
variables:
CARGO_TARGET: aarch64-unknown-linux-gnu
build:linux:ubuntu:armhf:
<<: *build
image: parity/rust-armv7:gitlab-ci
variables:
CARGO_TARGET: armv7-unknown-linux-gnueabihf
build:linux:android:armhf:
<<: *build
image: parity/rust-android:gitlab-ci
variables:
CARGO_TARGET: armv7-linux-androideabi
build:macos:x86_64:
<<: *build
variables:
CARGO_TARGET: x86_64-apple-darwin
CC: gcc
CXX: g++
tags:
- osx
<<: *collect_artifacts
build-windows-x86_64:
stage: build
only: *releaseable_branches
cache:
key: "%CI_JOB_NAME%"
paths:
- "%CI_PROJECT_DIR%/target/"
- "%CI_PROJECT_DIR%/cargo/"
# No cargo caching, since fetch-locking on Windows gets stuck
variables:
CARGO_TARGET: x86_64-pc-windows-msvc
script:
- sh scripts/gitlab/build-windows.sh
tags:
- rust-windows
<<: *collect_artifacts
#### stage: package
package:linux:snap:amd64: &package_snap
stage: package
only: *releaseable_branches
cache: {}
before_script:
- *determine_version
variables:
CARGO_TARGET: x86_64-unknown-linux-gnu
dependencies:
- build:linux:ubuntu:amd64
script:
- scripts/gitlab/package-snap.sh
tags:
- rust-stable
<<: *collect_artifacts
package:linux:snap:i386:
<<: *package_snap
variables:
BUILD_ARCH: i386
CARGO_TARGET: i686-unknown-linux-gnu
dependencies:
- build:linux:ubuntu:i386
package:linux:snap:arm64:
<<: *package_snap
variables:
BUILD_ARCH: arm64
CARGO_TARGET: aarch64-unknown-linux-gnu
dependencies:
- build:linux:ubuntu:arm64
package:linux:snap:armhf:
<<: *package_snap
variables:
BUILD_ARCH: armhf
CARGO_TARGET: armv7-unknown-linux-gnueabihf
dependencies:
- build:linux:ubuntu:armhf
#### stage: publish
publish:linux:snap:amd64: &publish_snap
stage: publish
only: *publishable_branches
image: snapcore/snapcraft:stable
cache: {}
before_script:
- *determine_version
variables:
BUILD_ARCH: amd64
dependencies:
- package:linux:snap:amd64
script:
- scripts/gitlab/publish-snap.sh
tags:
- rust-stable
publish:linux:snap:i386:
<<: *publish_snap
before_script:
- *determine_version
#- sleep 60
variables:
BUILD_ARCH: i386
dependencies:
- package:linux:snap:i386
publish:linux:snap:arm64:
<<: *publish_snap
before_script:
- *determine_version
#- sleep 360
variables:
BUILD_ARCH: arm64
dependencies:
- package:linux:snap:arm64
publish:linux:snap:armhf:
<<: *publish_snap
before_script:
- *determine_version
#- sleep 520
variables:
BUILD_ARCH: armhf
dependencies:
- package:linux:snap:armhf
publish:docker:parity:amd64: &publish_docker
stage: publish
only: *publishable_branches
cache: {}
dependencies:
- build:linux:ubuntu:amd64
tags:
- shell
allow_failure: true
script:
- scripts/gitlab/publish-docker.sh parity
publish:docker:parity-evm:amd64:
<<: *publish_docker
script:
- scripts/gitlab/publish-docker.sh parity-evm
publish:github:s3:
stage: publish
only: *publishable_branches
cache: {}
dependencies:
- build:linux:ubuntu:amd64
- build:linux:ubuntu:i386
- build:linux:ubuntu:armhf
- build:linux:ubuntu:arm64
- build:macos:x86_64
- build-windows-x86_64
before_script:
- *determine_version
script:
- scripts/gitlab/push.sh
tags:
- shell
allow_failure: true
####stage: docs
json:rpc:docs:
stage: docs
only:
- tags
- gitlab-next
cache: {}
script:
- scripts/gitlab/rpc-docs.sh
tags:
- shell