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: split workflow and use bot to commit formatting and cargo lock changes #50

Merged
merged 6 commits into from
Nov 22, 2023
Merged
Show file tree
Hide file tree
Changes from 5 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
136 changes: 136 additions & 0 deletions .github/workflows/CI-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
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
Chethan-rao marked this conversation as resolved.
Show resolved Hide resolved
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
Chethan-rao marked this conversation as resolved.
Show resolved Hide resolved
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
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/[email protected]
with:
crate: cargo-hack

- uses: Swatinem/[email protected]

- 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
10 changes: 0 additions & 10 deletions .github/workflows/CI.yml → .github/workflows/CI-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,6 @@ on:
branches:
- main

pull_request:
types:
- opened
- ready_for_review
- reopened
- synchronize

jobs:
formatting:
name: Check formatting
Expand Down Expand Up @@ -56,8 +49,6 @@ jobs:
crate: cargo-hack

- uses: Swatinem/[email protected]
with:
save-if: ${{ github.event_name == 'push' }}

- name: Deny warnings
shell: bash
Expand All @@ -68,7 +59,6 @@ jobs:
run: cargo clippy --all-features --all-targets

- name: Cargo hack
if: ${{ github.event_name == 'push' }}
Chethan-rao marked this conversation as resolved.
Show resolved Hide resolved
shell: bash
run: cargo hack check --each-feature --no-dev-deps

Expand Down