Merge pull request #8 from project-serum/armani/shebang
Run wholeshebang in CI
This commit is contained in:
commit
27d6bdf70b
46
.travis.yml
46
.travis.yml
|
@ -1,14 +1,36 @@
|
|||
language: minimal
|
||||
language: shell
|
||||
os: linux
|
||||
|
||||
sudo: required
|
||||
|
||||
services:
|
||||
_defaults: &defaults
|
||||
cache:
|
||||
directories:
|
||||
- $TRAVIS_HOME/.cargo
|
||||
- $TRAVIS_HOME/.rustup
|
||||
- $TRAVIS_HOME/.cache
|
||||
- $TRAVIS_BUILD_DIR/crank/target
|
||||
- $TRAVIS_BUILD_DIR/dex/target
|
||||
services:
|
||||
- docker
|
||||
|
||||
before_install:
|
||||
- docker pull projectserum/development:latest
|
||||
- docker run -it -d --name dev projectserum/development:latest bash
|
||||
- docker exec dev git clone https://github.com/project-serum/serum-dex.git
|
||||
|
||||
script:
|
||||
- docker exec dev serum-dex/do.sh test dex
|
||||
before_install:
|
||||
- scripts/travis/run-docker.sh
|
||||
install:
|
||||
- mkdir -p bin && ./bpf-sdk-install.sh bin
|
||||
before_cache:
|
||||
- scripts/travis/stop-docker.sh
|
||||
- rm -rf "$TRAVIS_HOME/.cargo/registry/src"
|
||||
jobs:
|
||||
include:
|
||||
- <<: *defaults
|
||||
name: Unit tests
|
||||
script:
|
||||
- docker exec dev ./do.sh test dex
|
||||
- <<: *defaults
|
||||
name: Integration tests
|
||||
language: node_js
|
||||
node_js:
|
||||
- "node"
|
||||
script:
|
||||
- npm install -g @solana/web3.js
|
||||
- npx solana-localnet update
|
||||
- npx solana-localnet up
|
||||
- docker exec dev ./scripts/travis/e2e-tests.sh
|
||||
|
|
|
@ -14,6 +14,6 @@ development-push:
|
|||
@docker push $(IMG_ORG)/development:$(IMG_VER)
|
||||
|
||||
development-shell:
|
||||
@docker run -ti --rm \
|
||||
@docker run -ti --rm --net=host \
|
||||
-v $(WORKDIR)/..:/workdir \
|
||||
$(IMG_ORG)/development:$(IMG_VER) bash
|
||||
|
|
|
@ -3,14 +3,17 @@ FROM ubuntu:18.04
|
|||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ARG SOLANA_CHANNEL=v1.2.17
|
||||
ARG SOLANA_CLI=v1.3.9
|
||||
|
||||
ENV HOME="/root"
|
||||
ENV PATH="${HOME}/.cargo/bin:${PATH}"
|
||||
ENV PATH="${HOME}/.local/share/solana/install/active_release/bin:${PATH}"
|
||||
|
||||
# Install base utilities.
|
||||
RUN mkdir -p /workdir && mkdir -p /tmp && \
|
||||
apt-get update -qq && apt-get upgrade -qq && apt-get install -qq \
|
||||
build-essential git curl
|
||||
|
||||
ENV HOME="/root"
|
||||
ENV PATH="${HOME}/.cargo/bin:${PATH}"
|
||||
build-essential git curl wget jq pkg-config python3-pip \
|
||||
libssl-dev libudev-dev
|
||||
|
||||
# Install rust.
|
||||
RUN curl "https://sh.rustup.rs" -sfo rustup.sh && \
|
||||
|
@ -18,7 +21,9 @@ RUN curl "https://sh.rustup.rs" -sfo rustup.sh && \
|
|||
rustup component add rustfmt clippy
|
||||
|
||||
# Install Solana tools.
|
||||
RUN curl -L --retry 5 --retry-delay 2 -o bpf-sdk.tar.bz2 http://solana-sdk.s3.amazonaws.com/${SOLANA_CHANNEL}/bpf-sdk.tar.bz2 && \
|
||||
RUN curl -sSf https://raw.githubusercontent.com/solana-labs/solana/${SOLANA_CLI}/install/solana-install-init.sh | sh -s - ${SOLANA_CLI} && \
|
||||
# BPF sdk.
|
||||
curl -L --retry 5 --retry-delay 2 -o bpf-sdk.tar.bz2 http://solana-sdk.s3.amazonaws.com/${SOLANA_CHANNEL}/bpf-sdk.tar.bz2 && \
|
||||
rm -rf bpf-sdk && \
|
||||
mkdir -p bpf-sdk && \
|
||||
tar jxf bpf-sdk.tar.bz2 && \
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euxo pipefail
|
||||
|
||||
CLUSTER=localnet
|
||||
KEYPAIR_FILE=$HOME/.config/solana/id.json
|
||||
CLUSTER_URL=http://localhost:8899
|
||||
|
||||
#
|
||||
# Assumes the current working directory is top-level serum-dex dir.
|
||||
#
|
||||
main() {
|
||||
#
|
||||
# Create a keypair for the tests.
|
||||
#
|
||||
set +e
|
||||
yes | solana-keygen new --outfile $KEYPAIR_FILE
|
||||
#
|
||||
# Fund the keypair.
|
||||
#
|
||||
yes | solana airdrop --url $CLUSTER_URL 100
|
||||
set -e
|
||||
#
|
||||
# Run the tests.
|
||||
#
|
||||
dex_whole_shebang
|
||||
}
|
||||
|
||||
dex_whole_shebang() {
|
||||
#
|
||||
# Build the program.
|
||||
#
|
||||
./do.sh build dex
|
||||
#
|
||||
# Deploy the program.
|
||||
#
|
||||
local dex_program_id="$(solana deploy --url ${CLUSTER_URL} dex/target/bpfel-unknown-unknown/release/serum_dex.so --use-deprecated-loader | jq .programId -r)"
|
||||
#
|
||||
# Run the whole-shebang.
|
||||
#
|
||||
pushd crank
|
||||
cargo run -- $CLUSTER whole-shebang $KEYPAIR_FILE $dex_program_id
|
||||
popd
|
||||
}
|
||||
|
||||
main
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euxo pipefail
|
||||
|
||||
main() {
|
||||
docker pull projectserum/development:latest
|
||||
#
|
||||
# Bind the relevant host directories to the docker image so that the
|
||||
# relevant files are synced.
|
||||
#
|
||||
docker volume create --driver local \
|
||||
--opt type=none \
|
||||
--opt device=$TRAVIS_HOME/.cargo \
|
||||
--opt o=bind \
|
||||
cargodir
|
||||
docker volume create --driver local \
|
||||
--opt type=none \
|
||||
--opt device=$TRAVIS_HOME/.rustup \
|
||||
--opt o=bind \
|
||||
rustupdir
|
||||
docker volume create --driver local \
|
||||
--opt type=none \
|
||||
--opt device=$TRAVIS_HOME/.cache \
|
||||
--opt o=bind \
|
||||
cachedir
|
||||
docker volume create --driver local \
|
||||
--opt type=none \
|
||||
--opt device=$TRAVIS_BUILD_DIR \
|
||||
--opt o=bind \
|
||||
workdir
|
||||
#
|
||||
# Start the container.
|
||||
#
|
||||
docker run -it -d --net host --name dev \
|
||||
-v cargodir:/root/.cargo \
|
||||
-v rustupdir:/root/.rustup \
|
||||
-v cachedir:/root/.cache \
|
||||
-v workdir:/workdir \
|
||||
projectserum/development:latest bash
|
||||
}
|
||||
|
||||
main
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euxo pipefail
|
||||
|
||||
main() {
|
||||
#
|
||||
# Files created within a docker container can't be used outside
|
||||
# by the host without root. So Change file permissions so that
|
||||
# travis can create a cache archive.
|
||||
#
|
||||
sudo chown -R travis:travis $TRAVIS_HOME/.cargo
|
||||
sudo chown -R travis:travis $TRAVIS_HOME/.rustup
|
||||
sudo chown -R travis:travis $TRAVIS_HOME/.cache
|
||||
sudo chown -R travis:travis $TRAVIS_BUILD_DIR/dex/target
|
||||
sudo chown -R travis:travis $TRAVIS_BUILD_DIR/crank/target
|
||||
|
||||
docker stop dev
|
||||
}
|
||||
|
||||
main
|
Loading…
Reference in New Issue