name: Message Buffer Check on: pull_request: paths: - .github/workflows/ci-message-buffer.yml - pythnet/message_buffer/** push: branches: - main jobs: abi-check: name: Check Message Buffer formatting & IDL files runs-on: ubuntu-latest defaults: run: working-directory: pythnet/message_buffer steps: - name: Checkout sources uses: actions/checkout@v3 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: cache-workspaces: "pythnet/message_buffer -> target" - name: Install Solana run: | wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb sh -c "$(curl -sSfL https://release.anza.xyz/v1.17.34/install)" echo "/home/runner/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH - name: Install Anchor run: | unset CARGO_UNSTABLE_SPARSE_REGISTRY unset CARGO_REGISTRIES_CRATES_IO_PROTOCOL # Anchor doesn't build with newer Rust cargo +1.66.1 install --git https://github.com/coral-xyz/anchor --tag v0.27.0 anchor-cli --locked - name: Install g++ 12 run: | sudo apt-get install g++-12 echo "CXX=/usr/bin/g++-12" >> "${GITHUB_ENV}" - uses: actions/setup-node@v4 with: node-version-file: "package.json" # Libusb is a build requirement for the node-hid package and so pnpm # install will fail if this isn't in the build environment and if a # precompiled binary isn't found. - name: Install libusb run: sudo apt-get update && sudo apt-get install -y libusb-1.0-0-dev libudev-dev - uses: pnpm/action-setup@v4 name: Install pnpm with: run_install: true - name: Build and generate IDLs run: | unset CARGO_UNSTABLE_SPARSE_REGISTRY unset CARGO_REGISTRIES_CRATES_IO_PROTOCOL rustup override set 1.66.1 anchor build rustup override unset - name: Copy anchor target files run: cp ./target/idl/message_buffer.json idl/ && cp ./target/types/message_buffer.ts idl/ - name: Fix formatting (to avoid pre-commit failures) run: pnpm turbo --filter message_buffer fix:format - name: Check IDL changes # Fails if the IDL files are not up to date. Please use anchor build to regenerate the IDL files for # the current version of the contract and update idl directory. run: git diff --exit-code idl/* if: success() || failure() - name: Cargo format run: cargo fmt --all -- --check if: success() || failure() - name: Cargo clippy run: cargo clippy --all-targets -- --deny warnings