diff --git a/.travis.yml b/.travis.yml index 32821ff6..85e44a56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,34 +1,51 @@ dist: bionic sudo: required -language: rust -services: -- docker -cache: - cargo: true - directories: - - "~/.npm" + notifications: email: false -install: - - cargo --version - - rustup install nightly - - rustup component add clippy --toolchain nightly - - docker --version - - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - - sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main" - - sudo apt-get update - - sudo apt-get install -y clang-7 --allow-unauthenticated - - sudo apt-get install -y openssl --allow-unauthenticated - - sudo apt-get install -y libssl-dev --allow-unauthenticated - - sudo apt-get install -y libssl1.1 --allow-unauthenticated - - clang-7 --version - - nvm install node - - node --version +cache: + cargo: true + directories: + - "~/.npm" + +services: + - docker jobs: include: - - stage: "Test Programs" - script: ./ci/memo.sh - - script: ./ci/token-swap.sh - - script: ./ci/token.sh + - name: "Test Memo" + language: rust + install: + source .travis/install-program-deps.sh + script: + ./ci/memo.sh + + - name: "Test Token-Swap" + language: rust + install: + source .travis/install-program-deps.sh + script: + ./ci/token-swap.sh + + - name: "Test Token Program" + language: rust + install: + source .travis/install-program-deps.sh + script: + ./ci/token.sh + + + # docs pull request or commit to master + - name: "Build Docs" + if: type IN (push, pull_request) AND branch = master + language: node_js + node_js: + - "node" + + before_install: + - .travis/affects.sh docs/ .travis || travis_terminate 0 + - cd docs/ + - source .travis/before_install.sh + script: + - source .travis/script.sh diff --git a/.travis/affects.sh b/.travis/affects.sh new file mode 100755 index 00000000..0d6bf388 --- /dev/null +++ b/.travis/affects.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# +# Check if files in the commit range match one or more prefixes +# + +( + set -x + git diff --name-only "$TRAVIS_COMMIT_RANGE" +) + +for file in $(git diff --name-only "$TRAVIS_COMMIT_RANGE"); do + for prefix in "$@"; do + if [[ $file =~ ^"$prefix" ]]; then + exit 0 + fi + done +done + +echo "No modifications to $*" +exit 1 diff --git a/.travis/install-program-deps.sh b/.travis/install-program-deps.sh new file mode 100755 index 00000000..9e13b172 --- /dev/null +++ b/.travis/install-program-deps.sh @@ -0,0 +1,16 @@ +# |source| this file + +cargo --version +rustup install nightly +rustup component add clippy --toolchain nightly +docker --version +wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - +sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main" +sudo apt-get update +sudo apt-get install -y clang-7 --allow-unauthenticated +sudo apt-get install -y openssl --allow-unauthenticated +sudo apt-get install -y libssl-dev --allow-unauthenticated +sudo apt-get install -y libssl1.1 --allow-unauthenticated +clang-7 --version +nvm install node +node --version diff --git a/ci/env.sh b/ci/env.sh new file mode 100644 index 00000000..d075b259 --- /dev/null +++ b/ci/env.sh @@ -0,0 +1,92 @@ +# +# Normalized CI environment variables +# +# |source| me +# + +if [[ -n $CI ]]; then + export CI=1 + if [[ -n $TRAVIS ]]; then + export CI_BRANCH=$TRAVIS_BRANCH + export CI_BASE_BRANCH=$TRAVIS_BRANCH + export CI_BUILD_ID=$TRAVIS_BUILD_ID + export CI_COMMIT=$TRAVIS_COMMIT + export CI_JOB_ID=$TRAVIS_JOB_ID + if [[ $TRAVIS_PULL_REQUEST != false ]]; then + export CI_PULL_REQUEST=true + else + export CI_PULL_REQUEST= + fi + export CI_OS_NAME=$TRAVIS_OS_NAME + export CI_REPO_SLUG=$TRAVIS_REPO_SLUG + export CI_TAG=$TRAVIS_TAG + elif [[ -n $BUILDKITE ]]; then + export CI_BRANCH=$BUILDKITE_BRANCH + export CI_BUILD_ID=$BUILDKITE_BUILD_ID + export CI_COMMIT=$BUILDKITE_COMMIT + export CI_JOB_ID=$BUILDKITE_JOB_ID + # The standard BUILDKITE_PULL_REQUEST environment variable is always "false" due + # to how solana-ci-gate is used to trigger PR builds rather than using the + # standard Buildkite PR trigger. + if [[ $CI_BRANCH =~ pull/* ]]; then + export CI_BASE_BRANCH=$BUILDKITE_PULL_REQUEST_BASE_BRANCH + export CI_PULL_REQUEST=true + else + export CI_BASE_BRANCH=$BUILDKITE_BRANCH + export CI_PULL_REQUEST= + fi + export CI_OS_NAME=linux + if [[ -n $BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG ]]; then + # The solana-secondary pipeline should use the slug of the pipeline that + # triggered it + export CI_REPO_SLUG=$BUILDKITE_ORGANIZATION_SLUG/$BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG + else + export CI_REPO_SLUG=$BUILDKITE_ORGANIZATION_SLUG/$BUILDKITE_PIPELINE_SLUG + fi + # TRIGGERED_BUILDKITE_TAG is a workaround to propagate BUILDKITE_TAG into + # the solana-secondary pipeline + if [[ -n $TRIGGERED_BUILDKITE_TAG ]]; then + export CI_TAG=$TRIGGERED_BUILDKITE_TAG + else + export CI_TAG=$BUILDKITE_TAG + fi + elif [[ -n $APPVEYOR ]]; then + export CI_BRANCH=$APPVEYOR_REPO_BRANCH + export CI_BUILD_ID=$APPVEYOR_BUILD_ID + export CI_COMMIT=$APPVEYOR_REPO_COMMIT + export CI_JOB_ID=$APPVEYOR_JOB_ID + if [[ -n $APPVEYOR_PULL_REQUEST_NUMBER ]]; then + export CI_PULL_REQUEST=true + else + export CI_PULL_REQUEST= + fi + if [[ $CI_LINUX = True ]]; then + export CI_OS_NAME=linux + else + export CI_OS_NAME=windows + fi + export CI_REPO_SLUG=$APPVEYOR_REPO_NAME + export CI_TAG=$APPVEYOR_REPO_TAG_NAME + fi +else + export CI= + export CI_BRANCH= + export CI_BUILD_ID= + export CI_COMMIT= + export CI_JOB_ID= + export CI_OS_NAME= + export CI_PULL_REQUEST= + export CI_REPO_SLUG= + export CI_TAG= +fi + +cat <0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/docs/publish-docs.sh b/docs/publish-docs.sh new file mode 100755 index 00000000..2a19ba0d --- /dev/null +++ b/docs/publish-docs.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +set -ex + +if [[ -d .vercel ]]; then + rm -r .vercel +fi + +CONFIG_FILE=vercel.json +PROJECT_NAME=spl-solana-com + +PRODUCTION= +if [[ -n "$CI" ]]; then + PRODUCTION=--prod +fi + +cat > "$CONFIG_FILE" < + + + + diff --git a/docs/static/img/favicon-16x16.png b/docs/static/img/favicon-16x16.png new file mode 100644 index 00000000..b1cb5f95 Binary files /dev/null and b/docs/static/img/favicon-16x16.png differ diff --git a/docs/static/img/favicon-32x32.png b/docs/static/img/favicon-32x32.png new file mode 100644 index 00000000..7580b177 Binary files /dev/null and b/docs/static/img/favicon-32x32.png differ diff --git a/docs/static/img/favicon.ico b/docs/static/img/favicon.ico new file mode 100644 index 00000000..86b9f3ce Binary files /dev/null and b/docs/static/img/favicon.ico differ diff --git a/docs/static/img/logo-horizontal-dark.svg b/docs/static/img/logo-horizontal-dark.svg new file mode 100644 index 00000000..b17305fa --- /dev/null +++ b/docs/static/img/logo-horizontal-dark.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/static/img/logo-horizontal.svg b/docs/static/img/logo-horizontal.svg new file mode 100644 index 00000000..2cab6185 --- /dev/null +++ b/docs/static/img/logo-horizontal.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/static/img/logo.svg b/docs/static/img/logo.svg new file mode 100644 index 00000000..4e78f610 --- /dev/null +++ b/docs/static/img/logo.svg @@ -0,0 +1,6 @@ + + + + + +