Upload builds to releases.parity.io (#1233)

* gitlab-ci.yml: upload binaries to s3

* gitlab-ci.yml: typo tag names

* gitlab-ci.yml: avoid dots in tags

* gitlab-ci.yml: try before_script

* gitlab-ci.yml: indentation

* gitlab-ci.yml: unified before_script

* gitlab-ci.yml: don't forget script

* use VERSION file

* build.sh only before builds

* git_strategy: none

* use own docker awscli image

* typo

* use artifacts folder

* enable uploads to s3 as well

* add builds.sh to tests
This commit is contained in:
gabriel klawitter
2018-12-10 17:24:35 +01:00
committed by Gav Wood
parent 5f48493b9a
commit 6c0cfd1781
+42 -25
View File
@@ -10,6 +10,9 @@ image: parity/rust:nightly
variables: variables:
CI_SERVER_NAME: "GitLab CI" CI_SERVER_NAME: "GitLab CI"
CARGO_HOME: "${CI_PROJECT_DIR}/.cargo" CARGO_HOME: "${CI_PROJECT_DIR}/.cargo"
# have OS based build containers in the future
DOCKER_OS: "ubuntu:xenial"
ARCH: "x86_64"
@@ -25,16 +28,9 @@ cache:
when: on_success when: on_success
expire_in: 7 days expire_in: 7 days
paths: paths:
- target/release/ - artifacts/
# not needed atm
# .determine_version: &determine_version |
# export VERSION="$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)";
# echo "Version = " $VERSION
before_script:
- ./scripts/build.sh
#### stage: test #### stage: test
@@ -53,9 +49,10 @@ test:rust:stable: &test
- web - web
- /^pr-[0-9]+$/ - /^pr-[0-9]+$/
- /^[0-9]+$/ - /^[0-9]+$/
tags: tags:
- linux-docker - linux-docker
before_script:
- ./scripts/build.sh
script: script:
- time cargo test --all --release --verbose --locked - time cargo test --all --release --verbose --locked
@@ -79,18 +76,24 @@ build:rust:linux:release: &build
- web - web
tags: tags:
- linux-docker - linux-docker
before_script:
- ./scripts/build.sh
script: script:
- time cargo build --release --verbose; - time cargo build --release --verbose;
- ./target/release/substrate --version - mkdir -p ./artifacts
- sha256sum ./target/release/substrate - mv ./target/release/substrate ./artifacts/.
- echo -n "Substrate version = "
- ./artifacts/substrate --version |
sed -n -r 's/^substrate ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p' |
tee ./artifacts/VERSION
- sha256sum ./artifacts/substrate | tee ./artifacts/substrate.sha256
#### stage: publish #### stage: publish
publish:docker:release: .publish: &publish
stage: publish stage: publish
dependencies: dependencies:
- build:rust:linux:release - build:rust:linux:release
@@ -99,28 +102,42 @@ publish:docker:release:
- master - master
- tags - tags
- web - web
publish:docker:release:
<<: *publish
tags: tags:
- shell - shell
variables: variables:
DOCKERFILE: scripts/docker/Dockerfile GIT_STRATEGY: none
CONTAINER_IMAGE: parity/substrate DOCKERFILE: scripts/docker/Dockerfile
before_script: CONTAINER_IMAGE: parity/substrate
script:
- VERSION="$(cat ./artifacts/VERSION)"
- test "$Docker_Hub_User_Parity" -a "$Docker_Hub_Pass_Parity" - test "$Docker_Hub_User_Parity" -a "$Docker_Hub_Pass_Parity"
|| ( echo "no docker credentials provided"; exit 1 ) || ( echo "no docker credentials provided"; exit 1 )
- docker login -u "$Docker_Hub_User_Parity" -p "$Docker_Hub_Pass_Parity" - docker login -u "$Docker_Hub_User_Parity" -p "$Docker_Hub_Pass_Parity"
- docker info - docker info
- VERSION="$(./target/release/substrate --version | sed -n -r 's/^substrate ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p')" - docker build --tag $CONTAINER_IMAGE:$VERSION --tag $CONTAINER_IMAGE:latest -f $DOCKERFILE ./artifacts/
- export VERSION
- echo "Substrate version = ${VERSION}"
script:
# - CONTAINER_TAG="${CI_COMMIT_TAG:-latest}"
# - docker build --tag $CONTAINER_IMAGE:$CI_BUILD_REF --tag $CONTAINER_IMAGE:$CONTAINER_TAG -f $DOCKERFILE ./target/release/
# - docker push $CONTAINER_IMAGE:$CONTAINER_TAG
- test -z "${VERSION}" && exit 1
- docker build --tag $CONTAINER_IMAGE:$VERSION --tag $CONTAINER_IMAGE:latest -f $DOCKERFILE ./target/release/
- docker push $CONTAINER_IMAGE:$VERSION - docker push $CONTAINER_IMAGE:$VERSION
- docker push $CONTAINER_IMAGE:latest - docker push $CONTAINER_IMAGE:latest
after_script: after_script:
- docker logout - docker logout
publish:s3:release:
<<: *publish
image: parity/awscli:latest
variables:
GIT_STRATEGY: none
BUCKET: "releases.parity.io"
PREFIX: "substrate/${ARCH}-${DOCKER_OS}"
script:
- aws s3 sync ./artifacts/ s3://${BUCKET}/${PREFIX}/$(cat ./artifacts/VERSION)/
after_script:
- aws s3 ls s3://${BUCKET}/${PREFIX}/
tags:
- linux-docker