snap: reenable i386, arm64, armhf architecture publishing (#10386)

* snap: reenable i386, arm64, armhf architecture publishing

* gitlab: fix indent

* gitlab: fix yml syntax

* Linker for crosscomile

* fix target to linker

* new docker image

* fix lint, add build to this PR

* calc SHA3 using rhash

* add new images for i386, armhf

* show snap target & artifacts

* set CARGO_TARGET for publish snap

* move detect Version to publish snap

* rm libc6 dep from snap-template up pub-snap script

* clean up cargo config before add linker

* move linker config to docker images
This commit is contained in:
5chdn 2019-02-25 12:56:38 +01:00 committed by Denis S. Soldatov aka General-Beck
parent fcccbf3b75
commit bceb883d99
4 changed files with 57 additions and 37 deletions

View File

@ -4,8 +4,7 @@ stages:
- publish - publish
- optional - optional
image: parity/rust:gitlab-ci image: parity/rust-parity-ethereum-build:xenial
variables: variables:
GIT_STRATEGY: fetch GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
@ -35,14 +34,6 @@ variables:
paths: paths:
- artifacts/ - artifacts/
.determine_version: &determine_version
- VERSION="$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)"
- DATE_STR="$(date +%Y%m%d)"
- ID_SHORT="$(echo ${CI_COMMIT_SHA} | cut -c 1-7)"
- test "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" = "nightly" && VERSION="${VERSION}-${ID_SHORT}-${DATE_STR}"
- export VERSION
- echo "Version = ${VERSION}"
test-linux: test-linux:
stage: test stage: test
variables: variables:
@ -62,7 +53,7 @@ test-audit:
tags: tags:
- linux-docker - linux-docker
build-linux: build-linux: &build-linux
stage: build stage: build
only: *releaseable_branches only: *releaseable_branches
script: script:
@ -72,6 +63,24 @@ build-linux:
tags: tags:
- linux-docker - linux-docker
build-linux-i386:
<<: *build-linux
image: parity/rust-parity-ethereum-build:i386
variables:
CARGO_TARGET: i686-unknown-linux-gnu
build-linux-arm64:
<<: *build-linux
image: parity/rust-parity-ethereum-build:arm64
variables:
CARGO_TARGET: aarch64-unknown-linux-gnu
build-linux-armhf:
<<: *build-linux
image: parity/rust-parity-ethereum-build:armhf
variables:
CARGO_TARGET: armv7-unknown-linux-gnueabihf
build-darwin: build-darwin:
stage: build stage: build
only: *releaseable_branches only: *releaseable_branches
@ -108,7 +117,7 @@ publish-docker:
script: script:
- scripts/gitlab/publish-docker.sh parity - scripts/gitlab/publish-docker.sh parity
publish-snap: publish-snap: &publish-snap
stage: publish stage: publish
only: *releaseable_branches only: *releaseable_branches
# <<: *no_git # <<: *no_git
@ -116,16 +125,35 @@ publish-snap:
variables: variables:
BUILD_ARCH: amd64 BUILD_ARCH: amd64
cache: {} cache: {}
before_script: *determine_version
dependencies: dependencies:
- build-linux - build-linux
tags: tags:
- rust-stable - linux-docker
script: script:
- scripts/gitlab/publish-snap.sh - scripts/gitlab/publish-snap.sh
allow_failure: true
<<: *collect_artifacts <<: *collect_artifacts
publish-snap-i386:
<<: *publish-snap
variables:
BUILD_ARCH: i386
dependencies:
- build-linux-i386
publish-snap-arm64:
<<: *publish-snap
variables:
BUILD_ARCH: arm64
dependencies:
- build-linux-arm64
publish-snap-armhf:
<<: *publish-snap
variables:
BUILD_ARCH: armhf
dependencies:
- build-linux-armhf
publish-onchain: publish-onchain:
stage: publish stage: publish
only: *releaseable_branches only: *releaseable_branches
@ -191,4 +219,3 @@ build-android:
- linux-docker - linux-docker
allow_failure: true allow_failure: true
<<: *collect_artifacts <<: *collect_artifacts

View File

@ -11,6 +11,9 @@ echo "CC: " $CC
echo "CXX: " $CXX echo "CXX: " $CXX
#strip ON #strip ON
export RUSTFLAGS=" -C link-arg=-s" export RUSTFLAGS=" -C link-arg=-s"
# Linker for crosscomile
echo "_____ Linker _____"
cat .cargo/config
echo "_____ Building target: "$CARGO_TARGET" _____" echo "_____ Building target: "$CARGO_TARGET" _____"
if [ "${CARGO_TARGET}" = "armv7-linux-androideabi" ] if [ "${CARGO_TARGET}" = "armv7-linux-androideabi" ]
@ -43,11 +46,6 @@ fi
echo "_____ Calculating checksums _____" echo "_____ Calculating checksums _____"
for binary in $(ls) for binary in $(ls)
do do
rhash --sha256 $binary -o $binary.sha256 rhash --sha256 $binary -o $binary.sha256 #do we still need this hash (SHA2)?
if [ "${CARGO_TARGET}" = "armv7-linux-androideabi" ] rhash --sha3-256 $binary -o $binary.sha3
then
echo "> ${binary} cannot be hashed with cross-compiled binary"
else
./parity tools hash $binary > $binary.sha3
fi
done done

View File

@ -8,7 +8,10 @@ set -u # treat unset variables as error
# gsub(/ /, "", $2) deletes whitespaces # gsub(/ /, "", $2) deletes whitespaces
TRACK=`awk -F '=' '/^track/ {gsub(/"/, "", $2); gsub(/ /, "", $2); print $2}' ./util/version/Cargo.toml` TRACK=`awk -F '=' '/^track/ {gsub(/"/, "", $2); gsub(/ /, "", $2); print $2}' ./util/version/Cargo.toml`
echo Track is: $TRACK echo Track is: $TRACK
# prepare variables
VERSION=v"$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)"
SNAP_PACKAGE="parity_"$VERSION"_"$BUILD_ARCH".snap"
CARGO_TARGET="$(ls artifacts)"
# Choose snap release channel based on parity ethereum version track # Choose snap release channel based on parity ethereum version track
case ${TRACK} in case ${TRACK} in
nightly) export GRADE="devel" CHANNEL="edge";; nightly) export GRADE="devel" CHANNEL="edge";;
@ -21,24 +24,16 @@ esac
case ${CI_COMMIT_REF_NAME} in case ${CI_COMMIT_REF_NAME} in
beta|stable) export GRADE="stable" CHANNEL="candidate";; beta|stable) export GRADE="stable" CHANNEL="candidate";;
esac esac
VERSION="v"$VERSION
SNAP_PACKAGE="parity_"$VERSION"_"$BUILD_ARCH".snap"
echo "__________Create snap package__________" echo "__________Create snap package__________"
echo "Release channel :" $GRADE " Branch/tag: " $CI_COMMIT_REF_NAME echo "Release channel :" $GRADE " Branch/tag: " $CI_COMMIT_REF_NAME
echo $VERSION:$GRADE:$BUILD_ARCH echo $VERSION:$GRADE:$BUILD_ARCH:$CARGO_TARGET
# cat scripts/snap/snapcraft.template.yaml | envsubst '$VERSION:$GRADE:$BUILD_ARCH:$CARGO_TARGET' > snapcraft.yaml
# a bit more necromancy (substitutions):
pwd
cd /builds/$CI_PROJECT_PATH/scripts/snap/
sed -e 's/$VERSION/'"$VERSION"'/g' \ sed -e 's/$VERSION/'"$VERSION"'/g' \
-e 's/$GRADE/'"$GRADE"'/g' \ -e 's/$GRADE/'"$GRADE"'/g' \
-e 's/$BUILD_ARCH/'"$BUILD_ARCH"'/g' \ -e 's/$BUILD_ARCH/'"$BUILD_ARCH"'/g' \
-e 's/$CARGO_TARGET/'"$CARGO_TARGET"'/g' \ -e 's/$CARGO_TARGET/'"$CARGO_TARGET"'/g' \
snapcraft.template.yaml > /builds/$CI_PROJECT_PATH/snapcraft.yaml scripts/snap/snapcraft.template.yaml > snapcraft.yaml
cd /builds/$CI_PROJECT_PATH
pwd
apt update apt update
apt install -y --no-install-recommends rhash apt install -y --no-install-recommends rhash
cat snapcraft.yaml cat snapcraft.yaml

View File

@ -50,4 +50,4 @@ parts:
cp -v ethkey $SNAPCRAFT_PART_INSTALL/usr/bin/ethkey cp -v ethkey $SNAPCRAFT_PART_INSTALL/usr/bin/ethkey
cp -v ethstore $SNAPCRAFT_PART_INSTALL/usr/bin/ethstore cp -v ethstore $SNAPCRAFT_PART_INSTALL/usr/bin/ethstore
cp -v whisper $SNAPCRAFT_PART_INSTALL/usr/bin/whisper cp -v whisper $SNAPCRAFT_PART_INSTALL/usr/bin/whisper
stage-packages: [libc6, libudev1, libstdc++6, cmake, libdb5.3] stage-packages: [libudev1, libstdc++6, cmake, libdb5.3]