Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: set up CI #1

Merged
merged 3 commits into from
Nov 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Security audit
on:
push:
paths:
- '**/Cargo.toml'
- '**/Cargo.lock'

permissions:
issues: write
checks: write
contents: read

jobs:
security_audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache dependencies
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 #v2.7.3
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Configure sccache
run: |
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af #v0.0.5
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Install Protoc
uses: arduino/setup-protoc@v3
- uses: rustsec/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
22 changes: 22 additions & 0 deletions .github/workflows/conventional-commits.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: "Lint PR"

on:
pull_request:

jobs:
conventional-commits-check:
name: Check conventional commits
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5
with:
python-version: "3.10"
- name: Install commitizen
run: pip install commitizen
- name: commitizen check
run: cz check --rev-range ${{ github.event.pull_request.base.sha }}..HEAD
32 changes: 32 additions & 0 deletions .github/workflows/license_headers_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: License headers check

on:
push:
branches: [main]
pull_request:
workflow_dispatch:

jobs:
check:
name: License headers check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install addlicense
run: |
wget https://github.com/google/addlicense/releases/download/v1.1.1/addlicense_1.1.1_Linux_x86_64.tar.gz
tar -xzf addlicense_1.1.1_Linux_x86_64.tar.gz
sudo mv addlicense /usr/local/bin
- name: Check license headers
run: >
addlicense \
-check \
-c "Semiotic AI, Inc." \
-l "apache" \
-s=only \
-ignore '.github/workflows/*.yml' \
-ignore '.github/*.yml' \
-ignore '.github/workflows/*.yaml' \
-ignore '.github/*.yaml' \
-ignore 'protos/firehose.proto' \
.
122 changes: 122 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
name: tests

on:
push:
branches: [main]
pull_request:
workflow_dispatch:

jobs:
fmt:
name: cargo fmt
runs-on: ubuntu-latest
container:
image: rust:1.82-bookworm
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- run: |
rustup component add rustfmt
cargo fmt --all -- --check

clippy:
name: cargo clippy
runs-on: ubuntu-latest
container:
image: rust:1.82-bookworm
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Cache dependencies
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 #v2.7.3
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Configure sccache
run: |
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af #v0.0.5
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Install Protoc
uses: arduino/setup-protoc@v3
- run: |
rustup component add clippy
# Temporarily allowing dead-code, while denying all other warnings
cargo clippy --all-features --all-targets -- -A dead-code -D warnings

test:
name: cargo test
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
actions: read
container:
image: rust:1.82-bookworm
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Cache dependencies
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 #v2.7.3
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Configure sccache
run: |
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af #v0.0.5
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Install Protoc
uses: arduino/setup-protoc@v3
- name: Run tests
run: cargo test --all-features --workspace

# Cannot do with llvm-cov, see https://github.com/taiki-e/cargo-llvm-cov/issues/2
test-docs:
name: cargo test docs code snippets
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
actions: read
container:
image: rust:1.82-bookworm
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Cache dependencies
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 #v2.7.3
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Configure sccache
run: |
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af #v0.0.5
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Install Protoc
uses: arduino/setup-protoc@v3
- name: Test documentation code snippets
run: cargo test --doc --all-features --workspace

build:
name: cargo check
runs-on: ubuntu-latest
container:
image: rust:1.82-bookworm
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Cache dependencies
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 #v2.7.3
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Configure sccache
run: |
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af #v0.0.5
if: ${{ !startsWith(github.head_ref, 'renovate/') }}
- name: Install Protoc
uses: arduino/setup-protoc@v3
- name: Cargo check
run: cargo check
11 changes: 4 additions & 7 deletions build.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// Copyright 2024-, Semiotic AI, Inc.
// SPDX-License-Identifier: Apache-2.0

use prost_build::Config;
use std::{env, path::PathBuf};

Expand All @@ -17,12 +20,6 @@ fn main() {
tonic_build::configure()
.build_client(true)
.file_descriptor_set_path(out_dir.join("descriptors.bin"))
.compile_protos_with_config(
config,
&[
"protos/firehose.proto",
],
&["protos/"],
)
.compile_protos_with_config(config, &["protos/firehose.proto"], &["protos/"])
.unwrap();
}
3 changes: 3 additions & 0 deletions src/firehose_v2/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// Copyright 2024-, Semiotic AI, Inc.
// SPDX-License-Identifier: Apache-2.0

pub mod request;

tonic::include_proto!("sf.firehose.v2");
9 changes: 6 additions & 3 deletions src/firehose_v2/request.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// Copyright 2024-, Semiotic AI, Inc.
// SPDX-License-Identifier: Apache-2.0

use std::fmt::Display;

use crate::BlockNumber;
Expand Down Expand Up @@ -33,7 +36,7 @@ impl SingleBlockRequest {
///
/// # Example
///
/// ```rust
/// ```rust,ignore
/// use firehose_client::HasNumberOrSlot;
///
/// #[derive(Clone)]
Expand Down Expand Up @@ -95,7 +98,7 @@ pub trait HasNumberOrSlot: Clone + Send + 'static {
///
/// # Example
///
/// ```rust,
/// ```rust,ignore
/// use firehose_client::FromResponse;
/// use firehose_protos::Response;
///
Expand All @@ -120,7 +123,7 @@ pub trait HasNumberOrSlot: Clone + Send + 'static {
/// methods, such as `stream_blocks`, allowing these methods to work with
/// different block types by specifying the type parameter:
///
/// ```rust
/// ```rust, ignore
/// let stream = client
/// .stream_blocks_generic::<FirehoseBeaconBlock>(start, total)
/// .await?;
Expand Down
Loading