Skip to content

bigz/add-lp-order-risk-mitigations #4694

bigz/add-lp-order-risk-mitigations

bigz/add-lp-order-risk-mitigations #4694

Workflow file for this run

name: main
on:
push:
branches: [master]
pull_request:
branches: [master]
defaults:
run:
shell: bash
working-directory: .
env:
CARGO_TERM_COLOR: always
RUST_TOOLCHAIN: 1.62.0
SOLANA_VERSION: "1.14.16"
jobs:
fmt-clippy:
name: fmt & clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust nightly
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
profile: minimal
override: true
components: rustfmt, clippy
- name: Cache build files
uses: Swatinem/rust-cache@v1
- name: Cargo fmt
run: cargo fmt -- --check
- name: Cargo clippy
run: cargo clippy -p drift
unit:
name: Unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
profile: minimal
override: true
- name: Cache build artefacts
uses: Swatinem/rust-cache@v1
- name: Run package checks
run: cargo check # run package checks
- name: Run unit tests
run: cargo test --lib # run unit tests
cargo-audit:
name: Cargo audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Cache cargo-audit version
uses: Swatinem/rust-cache@v1
- name: Download cargo-audit
uses: actions-rs/[email protected]
with:
crate: cargo-audit
version: latest
- name: Run cargo-audit # Using args from .cargo/audit.toml
run: cargo audit
yarn-prettier:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: "16.x"
registry-url: "https://registry.npmjs.org"
- name: Install yarn
run: yarn
- name: Print prettier version
run: npx prettier --version
- name: Run prettier
run: yarn prettify
yarn-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: "16.x"
registry-url: "https://registry.npmjs.org"
- name: Install yarn
run: yarn
- name: Run lint
run: yarn lint
anchor-tests:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v2
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
profile: minimal
override: true
- name: Cache build artefacts
uses: Swatinem/rust-cache@v1
with:
cache-on-failure: "true"
- uses: ./.github/actions/setup-solana/
- name: install anchor cli
run: cargo install --git https://github.com/coral-xyz/anchor --tag v0.26.0 anchor-cli --locked
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: "16.x"
registry-url: "https://registry.npmjs.org"
- name: Setup yarn
run: npm install -g yarn
- name: Install yarn
run: yarn
- name: install typescript
run: npm install typescript -g
- name: install mocha
run: |
npm install ts-mocha -g
npm install --global mocha
- name: build sdk
run: cd sdk/ && yarn && yarn build && cd ..
- name: run anchor tests
run: bash test-scripts/run-anchor-tests.sh
check-for-sdk-changes:
runs-on: ubuntu-latest
# Set job outputs to values from filter step
outputs:
sdk: ${{ steps.filter.outputs.sdk }}
steps:
# For pull requests it's not necessary to checkout the code
- uses: actions/checkout@v2
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
sdk:
- 'sdk/**'
release:
runs-on: ubuntu-latest
needs:
[
fmt-clippy,
unit,
cargo-audit,
yarn-prettier,
yarn-lint,
check-for-sdk-changes,
]
if: ${{ github.ref == 'refs/heads/master' && needs.check-for-sdk-changes.outputs.sdk == 'true' }}
defaults:
run:
working-directory: ./sdk
outputs:
version: ${{ steps.git-commit.outputs.version }}
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: "16.x"
registry-url: "https://registry.npmjs.org"
- name: Build sdk
run: yarn
- run: yarn build
- name: Update package version
run: |
VERSION=$(node -e "console.log(require('./package.json').version);")
[[ "$VERSION" == *beta* ]] && npm version prerelease --preid=beta || npm version preminor --preid=beta
- name: Git commit
id: git-commit
run: |
VERSION=$(node -e "console.log(require('./package.json').version);")
echo "version=$VERSION" >> $GITHUB_OUTPUT
git config user.name "GitHub Actions"
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git add ..
git commit -a -m "sdk: release v$VERSION"
git push origin HEAD
- name: Publish to npm
run: npm publish --access=public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
emit-dispatch-events:
runs-on: ubuntu-latest
needs: [release, check-for-sdk-changes]
if: ${{ github.ref == 'refs/heads/master' && needs.check-for-sdk-changes.outputs.sdk == 'true' }}
strategy:
matrix:
repo:
[
"jit-proxy",
"internal-keeper-bot",
"dlob-server",
"drift-competitions",
]
steps:
- name: Checkout code with new updated version
uses: actions/checkout@v2
- name: Emit dispatch event
run: |
curl -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token ${{ secrets.GH_PAT }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/drift-labs/${{ matrix.repo }}/dispatches" \
-d "{\"event_type\": \"sdk-update\", \"client_payload\": {
\"version\": \"$VERSION\"
}}"
env:
GH_PAT: ${{ secrets.GH_PAT }}
VERSION: ${{ needs.release.outputs.version }}
working-directory: ./sdk
verified-build:
name: Build Verifiable Artifact
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Solana Verify
run: |
cargo install solana-verify
solana-verify --version
- name: Verifiable Build
run: |
solana-verify build --library-name drift
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: build
path: target/deploy/drift.so
code-coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
profile: minimal
override: true
- name: Cache build artefacts
uses: Swatinem/rust-cache@v1
- name: Run package checks
run: cargo check # run package checks
- name: Run cargo-tarpaulin
uses: actions-rs/[email protected]
with:
version: '0.15.0'
args: '-- --test-threads 1'
- name: Upload to codecov.io
uses: codecov/[email protected]
with:
token: ${{secrets.CODECOV_TOKEN}}
- name: Archive code coverage results
uses: actions/upload-artifact@v1
with:
name: code-coverage-report
path: cobertura.xml