openethereum/.gitlab-ci.yml
Denis S. Soldatov aka General-Beck ebc6b9cec9
Updating the CI system with the publication of releases and binary files on github
Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>
2018-06-02 04:22:02 +03:00

365 lines
9.6 KiB
YAML

stages:
- test
- build
- package
- publish
- push-release
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
LIBSSL: "libssl1.0.0 (>=1.0.0)"
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
- nightly
- triggers
.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
- triggers
.collect_artifacts: &collect_artifacts
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: on_success
expire_in: 1 mos
paths:
- artifacts/
.collect_packages: &collect_packages
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: on_success
expire_in: 1 mos
paths:
- packages/
.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:
- triggers
- master
- nightly
test:rust:beta:
<<: *optional_test
script:
- scripts/gitlab/test.sh beta
allow_failure: true
test:rust:nightly:
<<: *optional_test
script:
- scripts/gitlab/test.sh nightly
allow_failure: true
#test:rustfmt:
# <<: *optional_test
# script:
# - scripts/gitlab/rustfmt.sh
#test:clippy:
# <<: *optional_test
# script:
# - scripts/gitlab/clippy.sh
test:coverage:
stage: test
only:
- master
- gitlab-next
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
build:linux:debian:amd64:
<<: *build
image: parity/rust-debian:gitlab-ci
variables:
LIBSSL: "libssl1.1 (>=1.1.0)"
CARGO_TARGET: x86_64-unknown-linux-gnu
build:linux:centos:x86_64:
<<: *build
image: parity/rust-centos:gitlab-ci
retry: 2 #if version `GLIBC_2.18' not found
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
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/"
variables:
CARGO_TARGET: x86_64-pc-windows-msvc
script:
- sh scripts/gitlab/build-windows.sh
tags:
- rust-windows
<<: *collect_artifacts
#### stage: package
package:ubuntu:deb:amd64: &package_unix
stage: package
only: *releaseable_branches
before_script:
- *determine_version
variables:
BUILD_ARCH: amd64
IDENT: ubuntu
PKG: deb
LIBSSL: "libssl1.1 (>=1.1.0)"
dependencies:
- build:linux:ubuntu:amd64
script:
- scripts/gitlab/package-unix.sh
tags:
- rust-stable
<<: *collect_packages
package:ubuntu:deb:arm64:
<<: *package_unix
variables:
BUILD_ARCH: arm64
IDENT: ubuntu
PKG: deb
dependencies:
- build:linux:ubuntu:arm64
package:ubuntu:deb:armhf:
<<: *package_unix
variables:
BUILD_ARCH: armhf
IDENT: ubuntu
PKG: deb
dependencies:
- build:linux:ubuntu:armhf
package:debian:deb:amd64:
<<: *package_unix
variables:
BUILD_ARCH: amd64
IDENT: debian
PKG: deb
dependencies:
- build:linux:debian:amd64
package:centos:rpm:x86_64:
<<: *package_unix
variables:
BUILD_ARCH: x86_64
IDENT: centos
PKG: rpm
LIBSSL: "libssl >= 1.0.0"
dependencies:
- build:linux:centos:x86_64
package:macos:pkg:x86_64:
<<: *package_unix
dependencies:
- build:macos:x86_64
script:
- scripts/gitlab/package-macos.sh
tags:
- osx
package:linux:snap:amd64: &package_snap
stage: package
only: *releaseable_branches
before_script:
- *determine_version
dependencies:
- build:linux:ubuntu:amd64
script:
- scripts/gitlab/package-snap.sh
tags:
- rust-stable
<<: *collect_packages
package:linux:snap:arm64:
<<: *package_snap
variables:
BUILD_ARCH: arm64
dependencies:
- build:linux:ubuntu:arm64
package:linux:snap:armhf:
<<: *package_snap
variables:
BUILD_ARCH: armhf
dependencies:
- build:linux:ubuntu:armhf
package-windows-exe-x86_64:
stage: package
only: *releaseable_branches
dependencies:
- build-windows-x86_64
script:
- sh scripts/gitlab/package-windows.sh
<<: *collect_packages
tags:
- rust-windows
#### stage: publish
publish:linux:snap:amd64: &publish_snap
stage: publish
only: *publishable_branches
image: snapcore/snapcraft:stable
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:arm64:
<<: *publish_snap
before_script:
- *determine_version
- sleep 120
variables:
BUILD_ARCH: arm64
dependencies:
- package:linux:snap:arm64
publish:linux:snap:armhf:
<<: *publish_snap
before_script:
- *determine_version
- sleep 360
variables:
BUILD_ARCH: armhf
dependencies:
- package:linux:snap:armhf
publish:docker:parity:amd64: &publish_docker
stage: publish
only: *publishable_branches
dependencies:
- build:linux:ubuntu:amd64
tags:
- shell
script:
- scripts/gitlab/publish-docker.sh parity
publish:docker:parity-evm:amd64:
<<: *publish_docker
script:
- scripts/gitlab/publish-docker.sh parity-evm
publish:github:
stage: publish
only: *publishable_branches
dependencies:
- package:ubuntu:deb:amd64
- package:ubuntu:deb:armhf
- package:ubuntu:deb:arm64
- package:debian:deb:amd64
- package:centos:rpm:x86_64
- package:macos:pkg:x86_64
- package-windows-exe-x86_64
before_script:
- *determine_version
script:
- scripts/gitlab/push-github.sh
#### stage: push-release
push:release:
stage: push-release
only:
- tags
- triggers
image: parity/rust:gitlab-ci
script:
- scripts/gitlab/push-release.sh
tags:
- curl