From fae88a756bec11f4998963f7195171ae7fe38006 Mon Sep 17 00:00:00 2001 From: Chethan Rao <70657455+Chethan-rao@users.noreply.github.com> Date: Thu, 23 Nov 2023 00:13:33 +0530 Subject: [PATCH] CI: split workflow and use bot to commit formatting and cargo lock changes (#50) Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com> --- .github/workflows/CI-pr.yml | 137 ++++++++++++++++++++++ .github/workflows/{CI.yml => CI-push.yml} | 10 -- 2 files changed, 137 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/CI-pr.yml rename .github/workflows/{CI.yml => CI-push.yml} (88%) diff --git a/.github/workflows/CI-pr.yml b/.github/workflows/CI-pr.yml new file mode 100644 index 0000000..4cb199a --- /dev/null +++ b/.github/workflows/CI-pr.yml @@ -0,0 +1,137 @@ +name: CI + +on: + pull_request: + types: + - opened + - ready_for_review + - reopened + - synchronize + +jobs: + formatting: + name: Check formatting + runs-on: ubuntu-latest + steps: + - name: Generate a token + if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }} + id: generate_token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.HYPERSWITCH_BOT_APP_ID }} + private-key: ${{ secrets.HYPERSWITCH_BOT_APP_PRIVATE_KEY }} + + - name: Checkout repository with token + if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }} + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.ref }} + token: ${{ steps.generate_token.outputs.token }} + + - name: Checkout repository for fork + if: ${{ github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name }} + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: nightly + components: rustfmt + + - name: Check formatting for forked pull requests + if: ${{ github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name }} + shell: bash + run: cargo +nightly fmt --all --check + + - name: Run formatter + if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }} + shell: bash + run: | + cargo +nightly fmt --all + if ! git diff --exit-code --quiet -- src; then + echo "::notice::Formatting check failed" + git config --local user.name 'hyperswitch-bot[bot]' + git config --local user.email '148525504+hyperswitch-bot[bot]@users.noreply.github.com' + git add src + git commit --message 'chore: run formatter' + git push + fi + + test: + name: Run tests on stable toolchain + runs-on: ubuntu-latest + + steps: + - name: Generate a token + if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }} + id: generate_token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.HYPERSWITCH_BOT_APP_ID }} + private-key: ${{ secrets.HYPERSWITCH_BOT_APP_PRIVATE_KEY }} + + - name: Checkout repository with token + if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }} + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.ref }} + token: ${{ steps.generate_token.outputs.token }} + + - name: Checkout repository for fork + if: ${{ github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name }} + uses: actions/checkout@v4 + + - name: Install mold linker + uses: rui314/setup-mold@v1 + if: ${{ runner.os == 'Linux' }} + with: + make-default: true + + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable 2 weeks ago + components: clippy + + - name: Install cargo-hack + uses: baptiste0928/cargo-install@v2.2.0 + with: + crate: cargo-hack + + - uses: Swatinem/rust-cache@v2.7.0 + + - name: Deny warnings + shell: bash + run: sed -i 's/rustflags = \[/rustflags = \[\n "-Dwarnings",/' .cargo/config.toml + + - name: Run clippy + shell: bash + run: cargo clippy --all-features --all-targets + + - name: Check Cargo.lock changed + if: ${{ (github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name) }} + shell: bash + run: | + if ! git diff --quiet --exit-code -- Cargo.lock ; then + git config --local user.name 'hyperswitch-bot[bot]' + git config --local user.email '148525504+hyperswitch-bot[bot]@users.noreply.github.com' + git add Cargo.lock + git commit --message 'chore: update Cargo.lock' + git push + fi + + - name: Cargo hack + shell: bash + run: cargo hack check --each-feature --no-dev-deps + + typos: + name: Spell check + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Spell check + uses: crate-ci/typos@master diff --git a/.github/workflows/CI.yml b/.github/workflows/CI-push.yml similarity index 88% rename from .github/workflows/CI.yml rename to .github/workflows/CI-push.yml index 40f5f38..d30343b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI-push.yml @@ -5,13 +5,6 @@ on: branches: - main - pull_request: - types: - - opened - - ready_for_review - - reopened - - synchronize - jobs: formatting: name: Check formatting @@ -56,8 +49,6 @@ jobs: crate: cargo-hack - uses: Swatinem/rust-cache@v2.7.0 - with: - save-if: ${{ github.event_name == 'push' }} - name: Deny warnings shell: bash @@ -68,7 +59,6 @@ jobs: run: cargo clippy --all-features --all-targets - name: Cargo hack - if: ${{ github.event_name == 'push' }} shell: bash run: cargo hack check --each-feature --no-dev-deps