name: Pull Request on: pull_request: paths-ignore: - 'docs/**' push: branches: [master] paths-ignore: - 'docs/**' jobs: all_github_action_checks: runs-on: ubuntu-latest needs: - rustfmt - clippy - cargo-build-test - js-test-token - js-test-token-swap - js-test-token-lending - fuzz steps: - run: echo "Done" rustfmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set env vars run: | source ci/rust-version.sh echo "RUST_STABLE=$rust_stable" >> $GITHUB_ENV - uses: actions-rs/toolchain@v1 with: toolchain: ${{ env.RUST_STABLE }} override: true profile: minimal components: rustfmt - name: Run fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set env vars run: | source ci/rust-version.sh echo "RUST_NIGHTLY=$rust_nightly" >> $GITHUB_ENV - uses: actions-rs/toolchain@v1 with: toolchain: ${{ env.RUST_NIGHTLY }} override: true profile: minimal components: clippy - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git target key: cargo-clippy-${{ hashFiles('**/Cargo.lock') }} restore-keys: | cargo-clippy- - name: Install dependencies run: ./ci/install-build-deps.sh - name: Run clippy uses: actions-rs/cargo@v1 with: command: clippy args: -Zunstable-options --workspace --all-targets -- --deny=warnings cargo-build-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set env vars run: | source ci/rust-version.sh echo "RUST_STABLE=$rust_stable" >> $GITHUB_ENV source ci/solana-version.sh echo "SOLANA_VERSION=$solana_version" >> $GITHUB_ENV - uses: actions-rs/toolchain@v1 with: toolchain: ${{ env.RUST_STABLE }} override: true profile: minimal - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git # target # Removed due to build dependency caching conflicts key: cargo-build-${{ hashFiles('**/Cargo.lock') }}-${{ env.RUST_STABLE}} - uses: actions/cache@v2 with: path: | ~/.cargo/bin/rustfilt key: cargo-bpf-bins-${{ runner.os }} - uses: actions/cache@v2 with: path: | ~/.cache key: solana-${{ env.SOLANA_VERSION }} - name: Install dependencies run: | ./ci/install-build-deps.sh ./ci/install-program-deps.sh echo "$HOME/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH - name: Build and test run: ./ci/cargo-build-test.sh - name: Upload programs uses: actions/upload-artifact@v2 with: name: programs path: "target/deploy/*.so" if-no-files-found: error js-test-token: runs-on: ubuntu-latest env: NODE_VERSION: 12.x needs: cargo-build-test steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v1 with: node-version: ${{ env.NODE_VERSION }} - uses: actions/cache@v2 with: path: ~/.npm key: node-token-${{ hashFiles('**/package-lock.json') }} restore-keys: | node-token- - name: Download programs uses: actions/download-artifact@v2 with: name: programs path: target/bpfel-unknown-unknown/release - run: ./ci/js-test-token.sh js-test-token-swap: runs-on: ubuntu-latest env: NODE_VERSION: 12.x needs: cargo-build-test steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v1 with: node-version: ${{ env.NODE_VERSION }} - uses: actions/cache@v2 with: path: ~/.npm key: node-token-swap-${{ hashFiles('**/package-lock.json') }} restore-keys: | node-token-swap- - name: Download programs uses: actions/download-artifact@v2 with: name: programs path: target/deploy - run: ./ci/js-test-token-swap.sh js-test-token-lending: runs-on: ubuntu-latest env: NODE_VERSION: 12.x needs: cargo-build-test steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v1 with: node-version: ${{ env.NODE_VERSION }} - uses: actions/cache@v2 with: path: ~/.npm key: node-token-lending-${{ hashFiles('**/package-lock.json') }} restore-keys: | node-token-lending- - name: Download programs uses: actions/download-artifact@v2 with: name: programs path: target/deploy - run: ./ci/js-test-token-lending.sh fuzz: runs-on: ubuntu-latest strategy: matrix: fuzz_target: [token-swap-instructions] steps: - uses: actions/checkout@v2 - name: Set env vars run: | source ci/rust-version.sh echo "RUST_STABLE=$rust_stable" >> $GITHUB_ENV source ci/solana-version.sh echo "SOLANA_VERSION=$solana_version" >> $GITHUB_ENV - uses: actions-rs/toolchain@v1 with: toolchain: ${{ env.RUST_STABLE }} override: true profile: minimal - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git target key: cargo-fuzz-${{ hashFiles('**/Cargo.lock') }} - uses: actions/cache@v2 with: path: | ~/.cargo/bin/cargo-hfuzz ~/.cargo/bin/cargo-honggfuzz key: cargo-fuzz-bins-${{ runner.os }} - uses: actions/cache@v2 with: path: | ~/.cache key: solana-${{ env.SOLANA_VERSION }} restore-keys: | solana- - name: Install dependencies run: | ./ci/install-build-deps.sh ./ci/install-program-deps.sh echo "$HOME/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH - name: Run fuzz target run: ./ci/fuzz.sh ${{ matrix.fuzz_target }} 30 # 30 seconds, just to check everything is ok