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
|
_defaults: &defaults
|
||||||
|
cache:
|
||||||
services:
|
directories:
|
||||||
|
- $TRAVIS_HOME/.cargo
|
||||||
|
- $TRAVIS_HOME/.rustup
|
||||||
|
- $TRAVIS_HOME/.cache
|
||||||
|
- $TRAVIS_BUILD_DIR/crank/target
|
||||||
|
- $TRAVIS_BUILD_DIR/dex/target
|
||||||
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
before_install:
|
||||||
before_install:
|
- scripts/travis/run-docker.sh
|
||||||
- docker pull projectserum/development:latest
|
install:
|
||||||
- docker run -it -d --name dev projectserum/development:latest bash
|
- mkdir -p bin && ./bpf-sdk-install.sh bin
|
||||||
- docker exec dev git clone https://github.com/project-serum/serum-dex.git
|
before_cache:
|
||||||
|
- scripts/travis/stop-docker.sh
|
||||||
script:
|
- rm -rf "$TRAVIS_HOME/.cargo/registry/src"
|
||||||
- docker exec dev serum-dex/do.sh test dex
|
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)
|
@docker push $(IMG_ORG)/development:$(IMG_VER)
|
||||||
|
|
||||||
development-shell:
|
development-shell:
|
||||||
@docker run -ti --rm \
|
@docker run -ti --rm --net=host \
|
||||||
-v $(WORKDIR)/..:/workdir \
|
-v $(WORKDIR)/..:/workdir \
|
||||||
$(IMG_ORG)/development:$(IMG_VER) bash
|
$(IMG_ORG)/development:$(IMG_VER) bash
|
||||||
|
|
|
@ -3,14 +3,17 @@ FROM ubuntu:18.04
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
ARG SOLANA_CHANNEL=v1.2.17
|
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.
|
# Install base utilities.
|
||||||
RUN mkdir -p /workdir && mkdir -p /tmp && \
|
RUN mkdir -p /workdir && mkdir -p /tmp && \
|
||||||
apt-get update -qq && apt-get upgrade -qq && apt-get install -qq \
|
apt-get update -qq && apt-get upgrade -qq && apt-get install -qq \
|
||||||
build-essential git curl
|
build-essential git curl wget jq pkg-config python3-pip \
|
||||||
|
libssl-dev libudev-dev
|
||||||
ENV HOME="/root"
|
|
||||||
ENV PATH="${HOME}/.cargo/bin:${PATH}"
|
|
||||||
|
|
||||||
# Install rust.
|
# Install rust.
|
||||||
RUN curl "https://sh.rustup.rs" -sfo rustup.sh && \
|
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
|
rustup component add rustfmt clippy
|
||||||
|
|
||||||
# Install Solana tools.
|
# 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 && \
|
rm -rf bpf-sdk && \
|
||||||
mkdir -p bpf-sdk && \
|
mkdir -p bpf-sdk && \
|
||||||
tar jxf bpf-sdk.tar.bz2 && \
|
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