diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 89bea614..4daf96d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,34 +5,66 @@ on: branches: - main - release-* + tags: + - v*.*.* pull_request: + branches: + - main + - release-* workflow_dispatch: -env: - RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: - build: + lint: runs-on: ubuntu-latest + env: + RUST_LOG: info + RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" steps: - uses: actions/checkout@v4 name: Checkout Repository - uses: Swatinem/rust-cache@v2 name: Enable Rust Caching - with: - cache-on-failure: true - name: Format Check run: cargo fmt -- --check - - uses: actions-rs/clippy-check@v1 - name: Clippy + - name: Clippy + uses: actions-rs-plus/clippy-check@v1 with: - token: ${{ github.token }} - args: --workspace --all-features --all-targets -- -D warnings + token: ${{ github.token }} + args: --workspace --all-features --all-targets -- -D warnings + + build: + runs-on: ubuntu-latest + env: + RUST_LOG: info + RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" + steps: + - uses: actions/checkout@v4 + name: Checkout Repository - - name: Audit - run: cargo audit --ignore RUSTSEC-2023-0065 + - uses: Swatinem/rust-cache@v2 + name: Enable Rust Caching + + - name: Build + run: cargo build --all-features --all-targets --release + + build-windows: + runs-on: windows-2022 + env: + RUST_LOG: info + RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - uses: Swatinem/rust-cache@v2 + name: Enable Rust Caching - name: Build run: | @@ -44,9 +76,40 @@ jobs: cargo test --workspace --release --all-features --verbose -- --test-threads 2 timeout-minutes: 30 + test: + runs-on: ubuntu-latest + env: + RUST_LOG: info + RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" + steps: + - uses: actions/checkout@v4 + name: Checkout Repository + + - uses: Swatinem/rust-cache@v2 + name: Enable Rust Caching + + - name: Build tests + run: cargo test --workspace --release --all-features --no-run + + - name: Test + run: cargo test --workspace --release --all-features --verbose -- --test-threads 2 + timeout-minutes: 60 + + docs: + runs-on: ubuntu-latest + env: + RUST_LOG: info + RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" + steps: + - uses: actions/checkout@v4 + name: Checkout Repository + + - uses: Swatinem/rust-cache@v2 + name: Enable Rust Caching + - name: Generate Documentation run: | - cargo doc --no-deps --lib --release + cargo doc --no-deps --lib --release --all-features echo '' > target/doc/index.html - name: Deploy Documentation @@ -56,3 +119,39 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./target/doc cname: tide-disco.docs.espressosys.com + + # semver-check: + # runs-on: ubuntu-latest + # env: + # RUST_LOG: info + # RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" + # steps: + # - uses: actions/checkout@v4 + # name: Checkout Repository + + # - uses: Swatinem/rust-cache@v2 + # name: Enable Rust Caching + + # - name: Check semver + # uses: obi1kenobi/cargo-semver-checks-action@v2 + + publish: + needs: + - build + - build-windows + - test + - lint + - docs + # - semver-check + runs-on: ubuntu-latest + env: + RUST_LOG: info + RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" + steps: + - uses: actions/checkout@v4 + - uses: katyo/publish-crates@v2 + with: + # Only do an actual publish if this is a push to a release tag. Otherwise, do a dry run. + dry-run: ${{ !(github.event_name == 'push' && github.ref_type == 'tag') }} + ignore-unpublished-changes: true + registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} diff --git a/.github/workflows/build_windows.yml b/.github/workflows/build_windows.yml deleted file mode 100644 index eb0e7a1c..00000000 --- a/.github/workflows/build_windows.yml +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (c) 2022 Espresso Systems (espressosys.com) -# This file is part of the Tide Disco library. -# -# This program is free software: you can redistribute it and/or modify it under the terms of the GNU -# General Public License as published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# You should have received a copy of the GNU General Public License along with this program. If not, -# see . - -name: Windows build - -on: - push: - branches: - - main - - release-* - workflow_dispatch: -env: - RUSTFLAGS: "--cfg async_executor_impl=\"async-std\" --cfg async_channel_impl=\"async-std\"" - -jobs: - windows: - runs-on: windows-2022 - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - uses: Swatinem/rust-cache@v2 - name: Enable Rust Caching - - - name: Build - run: | - cargo build --workspace --release - - - name: Test - run: | - cargo test --workspace --release --all-features --no-run - cargo test --workspace --release --all-features --verbose -- --test-threads 2 - timeout-minutes: 30 diff --git a/Cargo.lock b/Cargo.lock index b8d6f157..558fdadd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -199,17 +199,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 2.5.3", "futures-core", ] [[package]] name = "async-compatibility-layer" -version = "1.0.0" -source = "git+https://github.com/EspressoSystems/async-compatibility-layer.git?tag=1.4.2#482cece7d27f20d5a543e209a5d88b1837778b4c" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7d24a8f9d6fec5b9313ceebbd82133ae87cf94944c362e8169d7ec735c88a23" dependencies = [ - "async-channel", - "async-lock", + "async-lock 3.3.0", "async-std", "async-trait", "color-eyre", @@ -239,7 +239,7 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" dependencies = [ - "async-lock", + "async-lock 2.8.0", "async-task", "concurrent-queue", "fastrand 1.9.0", @@ -256,7 +256,7 @@ dependencies = [ "async-channel", "async-executor", "async-io", - "async-lock", + "async-lock 2.8.0", "blocking", "futures-lite", "once_cell", @@ -285,7 +285,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "cfg-if", "concurrent-queue", @@ -305,7 +305,18 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ - "event-listener", + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy", + "pin-project-lite 0.2.12", ] [[package]] @@ -315,11 +326,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" dependencies = [ "async-io", - "async-lock", + "async-lock 2.8.0", "autocfg", "blocking", "cfg-if", - "event-listener", + "event-listener 2.5.3", "futures-lite", "rustix 0.37.25", "signal-hook", @@ -350,7 +361,7 @@ dependencies = [ "async-channel", "async-global-executor", "async-io", - "async-lock", + "async-lock 2.8.0", "async-process", "crossbeam-utils", "futures-channel", @@ -579,7 +590,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" dependencies = [ "async-channel", - "async-lock", + "async-lock 2.8.0", "async-task", "atomic-waker", "fastrand 1.9.0", @@ -1120,6 +1131,27 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite 0.2.12", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite 0.2.12", +] + [[package]] name = "eyre" version = "0.6.12" @@ -3044,7 +3076,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38aabbeafa6f6dead8cebf246fe9fae1f9215c8d29b3a69f93bd62a9e4a3dcd6" dependencies = [ - "event-listener", + "event-listener 2.5.3", ] [[package]] @@ -3353,7 +3385,8 @@ dependencies = [ [[package]] name = "tagged-base64" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/tagged-base64.git?tag=v0.4.0#eb449140f2feb597983ebaf0ee2464ed6cee322a" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b74bbf1db405a3fd2c6f8cd403bfa14727faa145925efe3012fa270b61551f1" dependencies = [ "ark-serialize", "ark-std", @@ -3368,7 +3401,8 @@ dependencies = [ [[package]] name = "tagged-base64-macros" version = "0.4.0" -source = "git+https://github.com/EspressoSystems/tagged-base64.git?tag=v0.4.0#eb449140f2feb597983ebaf0ee2464ed6cee322a" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcdea3c0150898fad2f7196a173ec3264f7fc455ba570939163c558f48ae85ac" dependencies = [ "quote", "syn 1.0.109", @@ -4040,7 +4074,8 @@ dependencies = [ [[package]] name = "vbs" version = "0.1.4" -source = "git+https://github.com/EspressoSystems/versioned-binary-serialization.git?tag=v0.1.4#50c93e6dd650484688077542c467a134a033893c" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "971bcbd6c41e4e53fa9eab95b2a8ddaf1826be2f3e86b4101efebc8c3a17fde0" dependencies = [ "anyhow", "bincode", diff --git a/Cargo.toml b/Cargo.toml index e149c584..0f221f7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,7 +54,7 @@ signal-hook = "0.3.14" snafu = "0.8" strum = "0.26" strum_macros = "0.26" -tagged-base64 = { git = "https://github.com/EspressoSystems/tagged-base64.git", tag = "v0.4.0" } +tagged-base64 = "0.4" tide = { version = "0.16.0", default-features = false } tide-websockets = "0.4.0" toml = "0.8" @@ -64,10 +64,10 @@ tracing-futures = "0.2" tracing-log = "0.2" tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json"] } url = "2.5.0" -vbs = { git = "https://github.com/EspressoSystems/versioned-binary-serialization.git", tag = "v0.1.4" } +vbs = "0.1" # Dependencies enabled by feature `testing` -async-compatibility-layer = { git = "https://github.com/EspressoSystems/async-compatibility-layer.git", tag = "1.4.2", features = ["logging-utils"], optional = true } +async-compatibility-layer = { version = "1.1", features = ["logging-utils"], optional = true } async-tungstenite = { version = "0.25", features = ["async-std-runtime"], optional = true } [target.'cfg(not(windows))'.dependencies] @@ -76,6 +76,6 @@ signal-hook-async-std = "0.2.2" [dev-dependencies] ark-serialize = { version = "0.4", features = ["derive"] } ark-std = "0.4.0" -async-compatibility-layer = { git = "https://github.com/EspressoSystems/async-compatibility-layer.git", tag = "1.4.2", features = ["logging-utils"] } +async-compatibility-layer = { version = "1.1", features = ["logging-utils"] } async-tungstenite = { version = "0.25", features = ["async-std-runtime"] } portpicker = "0.1"