From c523748c3e6e8b8ee21584bd3d647fdfaf32d1d3 Mon Sep 17 00:00:00 2001 From: "Matthew (mbg)" Date: Fri, 1 Mar 2024 15:43:49 -0800 Subject: [PATCH] ci: add github workflows (#3) Add CI workflows for docs, compile, test, and audit. Dependabot also included. --- .github/dependabot.yml | 8 +++++ .github/workflows/build.yml | 68 +++++++++++++++++++++++++++++++++++++ .github/workflows/docs.yml | 34 +++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/docs.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..1332f8eb --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: +- package-ecosystem: cargo + directory: "/" + schedule: + interval: daily + time: "13:00" + open-pull-requests-limit: 10 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..6e913529 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,68 @@ +on: [push, pull_request] + +name: build + +jobs: + pingora: + strategy: + matrix: + # TODO: add nightly + toolchain: [stable] + profile: [minimal, default] + runs-on: ubuntu-latest + # Only run on "pull_request" event for external PRs. This is to avoid + # duplicate builds for PRs created from internal branches. + if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository + steps: + - name: Checkout sources + uses: actions/checkout@v3 + with: + submodules: 'recursive' + + - name: Install build dependencies + run: | + sudo apt update + sudo apt install -y cmake libclang-dev wget gnupg ca-certificates lsb-release --no-install-recommends + # openresty is used for convenience in tests as a server. + wget -O - https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/openresty.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/openresty.gpg] http://openresty.org/package/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/openresty.list > /dev/null + sudo apt update + sudo apt install -y openresty --no-install-recommends + + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.toolchain }} + profile: ${{ matrix.profile }} + components: rustfmt, clippy + override: true + default: true + + - name: Run cargo fmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: -- --check + + - name: Run cargo test + uses: actions-rs/cargo@v1 + with: + command: test + args: --verbose --lib --bins --tests --no-fail-fast + + # Need to run doc tests separately. + # (https://github.com/rust-lang/cargo/issues/6669) + - name: Run cargo doc test + uses: actions-rs/cargo@v1 + with: + command: test + args: --verbose --doc + + - name: Run cargo clippy + uses: actions-rs/cargo@v1 + with: + command: clippy + args: --all-targets --all -- --deny=warnings + + - name: Run cargo audit + uses: actions-rust-lang/audit@v1 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..32d1facc --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,34 @@ +on: + push: + branches: + - master + +name: Docs + +jobs: + docs: + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v3 + with: + submodules: 'recursive' + + - name: Install build dependencies + run: | + sudo apt update + sudo apt install -y cmake libclang-dev + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + default: true + + - name: Run cargo doc + uses: actions-rs/cargo@v1 + with: + command: doc + args: --no-deps --all-features