Skip to content

Commit

Permalink
test travis streamline
Browse files Browse the repository at this point in the history
  • Loading branch information
[email protected] committed May 26, 2020
1 parent 6d2e82c commit 8af78ab
Show file tree
Hide file tree
Showing 5 changed files with 225 additions and 171 deletions.
193 changes: 22 additions & 171 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,182 +1,33 @@
language: generic
sudo: required
cache:
timeout: 600
timeout: 1024
directories:
- $TRAVIS_BUILD_DIR/target/debug
- /opt/.cargo/git
- /opt/.cargo/registry
services:
- docker
git:
depth: 1
- "./docker/release"
stages:
- CheckShell
- Release
- IntegrateTest
- secp256k1
- sm2
- blake2b
before_install:
- docker pull cita/cita-build:ubuntu-18.04-20191128
jobs:
include:

- stage: CheckShell
include:
- stage: secp256k1
script:
# Fail if any of these files have warnings
- shellcheck scripts/*.sh env.sh

- stage: Release
name: Release for Integrate Test
language: node_js
node_js:
# - lts/*
- 8.10.0
cache:
directories:
- $TRAVIS_BUILD_DIR/target/release-cache
env: HASH_ALGO=sha3hash CRYPTO_ALGO=secp256k1
before_script:
- cd $TRAVIS_BUILD_DIR
- ./scripts/replace_default_feature.sh ./ sha3hash ${HASH_ALGO}
- ./scripts/replace_default_feature.sh ./ secp256k1 ${CRYPTO_ALGO}
script: ./env.sh make release
before_cache:
- cd $TRAVIS_BUILD_DIR
- rm -rf target/release-cache
- mv -vf target/install target/release-cache

- &stage-contract-test-sha3-secp256k1
stage: IntegrateTest
name: Unit Group
language: node_js
node_js:
# - lts/*
- 8.10.0
cache:
directories:
- $TRAVIS_BUILD_DIR/target/release-cache
env: HASH_ALGO=sha3hash CRYPTO_ALGO=secp256k1
before_install:
- cd $TRAVIS_BUILD_DIR
- rm -rf target/install
- cp -rv target/release-cache target/install
install:
- rm -rf /opt/cita-run/test-chain
- cd $TRAVIS_BUILD_DIR/target/install
- ./bin/cita create
--nodes "127.0.0.1:4100"
--super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523"
- ./bin/cita setup test-chain/0
- ./bin/cita start test-chain/0
before_script:
- cd $TRAVIS_BUILD_DIR/target/install/scripts/contracts/tests
- travis_retry yarn install
script: npm run-script unit_group
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Permission
script: npm run-script unit_permission
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Auth
script: npm run-script unit_auth
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Chain
script: npm run-script unit_chain
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Group Management
script: npm run-script unit_gm
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Permission Management
script: npm run-script unit_pm
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Role Management
script: npm run-script unit_rm
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Quota Management
script: npm run-script unit_qm
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Quota
script: npm run-script unit_quota
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Abi
script: npm run-script abi
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Admin
script: npm run-script unit_admin
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Store
script: npm run-script store
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Batch Tx
script: npm run-script batch_tx
- <<: *stage-contract-test-sha3-secp256k1
name: Unit Uint8
script: npm run-script uint8
- <<: *stage-contract-test-sha3-secp256k1
name: Unit VersionManager
script: npm run-script unit_vm

- <<: *stage-contract-test-sha3-secp256k1
name: Unit Node
install:
- cd $TRAVIS_BUILD_DIR/target/install
- ./bin/cita create
--nodes "127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002"
--super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523"
- for i in {0..2} ; do
./bin/cita setup test-chain/$i
&& ./bin/cita start test-chain/$i ;
done
- "./scripts/release_sha3.sh"
- stage: sm2
script:
- npm run-script unit_node

- <<: *stage-contract-test-sha3-secp256k1
name: Integrate Quota
install:
- cd $TRAVIS_BUILD_DIR/target/install
- ./bin/cita create
--nodes "127.0.0.1:4100"
--contract_arguments "SysConfig.checkQuota=true"
--super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523"
- ./bin/cita setup test-chain/0
- ./bin/cita start test-chain/0
- "./scripts/release_sm2.sh"
- stage: blake2b
script:
- npm run-script integrate_quota

- <<: *stage-contract-test-sha3-secp256k1
name: Integrate Permission
install:
- cd $TRAVIS_BUILD_DIR/target/install
- ./bin/cita create
--nodes "127.0.0.1:4100"
--contract_arguments "SysConfig.checkCallPermission=true"
--super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523"
- ./bin/cita setup test-chain/0
- ./bin/cita start test-chain/0
script:
- npm run-script permission

- <<: *stage-contract-test-sha3-secp256k1
name: Integrate AutoExec
install:
- cd $TRAVIS_BUILD_DIR/target/install
- ./bin/cita create
--nodes "127.0.0.1:4100"
--contract_arguments "SysConfig.autoExec=true"
--super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523"
- ./bin/cita setup test-chain/0
- ./bin/cita start test-chain/0
script:
- npm run-script auto_exec

- <<: *stage-contract-test-sha3-secp256k1
name: Integrate Lifetime
install:
- cd $TRAVIS_BUILD_DIR/target/install
- ./bin/cita create
--nodes "127.0.0.1:4100"
--contract_arguments "SysConfig.economicalModel=1 PriceManager.quotaPrice=1"
--super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523"
--init_token 0x1000000
- ./bin/cita setup test-chain/0
- ./bin/cita start test-chain/0
script:
- npm run-script lifetime
- "./scripts/release_black2b.sh"
deploy:
provider: releases
api_key:
secure: UmH2AT2HhPBL3wkaFa5lCRnK5j1PbqeT7w4LpJ7LqS7/YakpIYlMLmLutEVH2Gu8tvhUHM7Wm2soHMWUgo08L+eN7RPeV6t2r6z/5N9aD4I+l7ki5W6XwwZ5kYcs05xuSFn6cJxyPHR4TeM1aZmJ+/ngKAUhdGr6f16z1XAt4HUvg/HKVOZRukbnHp3pKQeMuXYlMSJBsaAvyY64cwGnKQMngAnZJxEG7s/5LfJb3zrlfxm2gRSnvcvTjdfeYSk4kXaWvWVQXeNIwEjNkKu7/EnoaYr5hmylTGukA8lIMeDdmJClroBZeTESJLSZ0gLNIlX03PyM50IVMayKp16+aAf6IY0/CPFYZSCGtR6MyV4GpQBMHgNkNR+B6TtzR9N7CRoXtoKfK5Gb/sba3Y01koaFRwq6Fu0rjofl+u04R8JEMaBKzY/OgjK2nbhYReU63dRWEesFZOxVYhp9v9/Tv+0ZFluq9Aukn7c4ePs96YBaUgCVbtzCebyNx85t05C0RmXaB/EsX7VwXwoJltE8CGJ9A9ZuBusZsjupFNOxsqzrNzhfkro5BVp7jgBgSn0X9D2dx1PL6xNkMneLz5npyrcbshFXjOkMV9d0w9gMX543tQlfuVIBPmrGGFGqX2cRWADwoRKKfxVSoWrHR0RhQk8dF3pcVsmILS70PCoSqGI=
file:
- "./docker/release/cita_secp256k1_sha3.tar.gz"
- "./docker/release/cita_sm2_sm3.tar.gz"
- "./docker/release/cita_ed25519_blake2b.tar.gz"
on:
tags: true
48 changes: 48 additions & 0 deletions scripts/release_black2b.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash
DIR=./docker/release
SOURCE_DIR=`pwd`
echo "pwd travis is " "$(pwd)"
git submodule init
git submodule update

function replace_default_feature () {
local workspacedir="${1}"
local old_feature="${2}"
local new_feature="${3}"
if [ "${old_feature}" = "${new_feature}" ]; then
return
fi
local before_feature='[ \t]*default[ \t]*=[ \t]*\[.*\"'
local before_feature2='[ \t]*features[ \t]*=[ \t]*\[.*\"'
local all_feature='[ \t]*\(features\|default\)[ \t]*=[ \t]*\[.*\"'
local after_feature='\".*'
find "${workspacedir}" -mindepth 2 -name "Cargo.toml" -print0 \
| xargs -0 grep -l "^${all_feature}${old_feature}${after_feature}" \
| while read -r cargotoml; do
if [ -f "${cargotoml}" ]; then
echo "[Info ] Replace [${old_feature}] by [${new_feature}] for [${cargotoml}] ..."
sed -i "s/\(${before_feature}\)${old_feature}\(${after_feature}\)\$/\1${new_feature}\2/" "${cargotoml}"
sed -i "s/\(${before_feature2}\)${old_feature}\(${after_feature}\)\$/\1${new_feature}\2/" "${cargotoml}"
else
echo "[Error] [${cargotoml}] is not a file."
fi
done
}

DEFAULT_HASH="sha3hash"
DEFAULT_CRYPT="secp256k1"

# blake2b
SELECT_HASH_Blake2b="blake2bhash"
SELECT_CRYPT_Blake2b="ed25519"

function replace_algorithm_blake2b() {
replace_default_feature "${SOURCE_DIR}" "${DEFAULT_HASH}" "${SELECT_HASH_Blake2b}"
replace_default_feature "${SOURCE_DIR}" "${DEFAULT_CRYPT}" "${SELECT_CRYPT_Blake2b}"
}

replace_algorithm_blake2b
sudo rm -rf target
sudo ./env.sh make release > /dev/null
cp -r target/install $DIR/cita_ed25519_blake2b

94 changes: 94 additions & 0 deletions scripts/release_multi_algorithm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/bin/bash
DIR=./docker/release
SOURCE_DIR=`pwd`
echo "pwd travis is " "$(pwd)"
git submodule init
git submodule update

function replace_default_feature () {
local workspacedir="${1}"
local old_feature="${2}"
local new_feature="${3}"
if [ "${old_feature}" = "${new_feature}" ]; then
return
fi
local before_feature='[ \t]*default[ \t]*=[ \t]*\[.*\"'
local before_feature2='[ \t]*features[ \t]*=[ \t]*\[.*\"'
local all_feature='[ \t]*\(features\|default\)[ \t]*=[ \t]*\[.*\"'
local after_feature='\".*'
find "${workspacedir}" -mindepth 2 -name "Cargo.toml" -print0 \
| xargs -0 grep -l "^${all_feature}${old_feature}${after_feature}" \
| while read -r cargotoml; do
if [ -f "${cargotoml}" ]; then
echo "[Info ] Replace [${old_feature}] by [${new_feature}] for [${cargotoml}] ..."
sed -i "s/\(${before_feature}\)${old_feature}\(${after_feature}\)\$/\1${new_feature}\2/" "${cargotoml}"
sed -i "s/\(${before_feature2}\)${old_feature}\(${after_feature}\)\$/\1${new_feature}\2/" "${cargotoml}"
else
echo "[Error] [${cargotoml}] is not a file."
fi
done
}

# sha256
sudo rm -rf target
sed -i "s/\"\${USE_TTY}\" \"\${CONTAINER_NAME}\"/\${USE_TTY} \${CONTAINER_NAME}/" ./env.sh
sudo ./env.sh make release

cp -r target/install $DIR/cita_secp256k1_sha3

DEFAULT_HASH="sha3hash"
DEFAULT_CRYPT="secp256k1"

# sm2
SELECT_HASH_SM2="sm3hash"
SELECT_CRYPT_SM2="sm2"
function replace_algorithm_sm2() {
replace_default_feature "${SOURCE_DIR}" "${SELECT_HASH}" "${SELECT_HASH_SM2}"
replace_default_feature "${SOURCE_DIR}" "${SELECT_CRYPT}" "${SELECT_CRYPT_SM2}"
}
replace_algorithm_sm2
sudo rm -rf target
sudo ./env.sh make release > /dev/null
cp -r target/install $DIR/cita_sm2_sm3


# blake2b
SELECT_HASH_Blake2b="blake2bhash"
SELECT_CRYPT_Blake2b="ed25519"

function replace_algorithm_blake2b() {
replace_default_feature "${SOURCE_DIR}" "${DEFAULT_HASH}" "${SELECT_HASH_Blake2b}"
replace_default_feature "${SOURCE_DIR}" "${DEFAULT_CRYPT}" "${SELECT_CRYPT_Blake2b}"
}

replace_algorithm_blake2b
sudo rm -rf target
sudo ./env.sh make release > /dev/null
cp -r target/install $DIR/cita_ed25519_blake2b

# tar.gz
cd $DIR
tar -zcf cita_secp256k1_sha3.tar.gz cita_secp256k1_sha3
tar -zcf cita_sm2_sm3.tar.gz cita_sm2_sm3
tar -zcf cita_ed25519_blake2b.tar.gz cita_ed25519_blake2b

# build image
CITA_REPOSITORY_NAME=hhliyan/cli-test-20
cat "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
docker push "$CITA_CLI_REPOSITORY_NAME":"$TRAVIS_TAG"


docker build . --build-arg ENCRYPTION_ALG=secp256k1 --build-arg HASH_ALG=sha3 -t $CITA_REPOSITORY_NAME:$TRAVIS_TAG-secp256k1-sha3
docker push $CITA_REPOSITORY_NAME:$TRAVIS_TAG-secp256k1-sha3

docker build . --build-arg ENCRYPTION_ALG=sm2 --build-arg HASH_ALG=sm3 -t $CITA_REPOSITORY_NAME:$TRAVIS_TAG-sm2-sm3
docker push $CITA_REPOSITORY_NAME:$TRAVIS_TAG-sm2-sm3


docker build . --build-arg ENCRYPTION_ALG=ed25519 --build-arg HASH_ALG=blake2b -t $CITA_REPOSITORY_NAME:$TRAVIS_TAG-ed25519-blake2b
docker push $CITA_REPOSITORY_NAME:$TRAVIS_TAG-ed25519-blake2b





15 changes: 15 additions & 0 deletions scripts/release_sha3.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

#!/bin/bash
git submodule init
git submodule update

DIR=./docker/release

sudo rm -rf target

sed -i "s/\"\${USE_TTY}\" \"\${CONTAINER_NAME}\"/\${USE_TTY} \${CONTAINER_NAME}/" ./env.sh
sudo ./env.sh make release

cp -r target/install $DIR
cd $DIR
tar czvf cita_secp256k1_sha3.tar.gz cita_secp256k1_sha3
Loading

0 comments on commit 8af78ab

Please sign in to comment.