From 1bff86e06e024c02c554e8a2af3df760982b4a92 Mon Sep 17 00:00:00 2001 From: Daniel von Atzigen Date: Tue, 5 Nov 2024 14:53:21 +0100 Subject: [PATCH] Add --- .github/workflows/code-quality.yml | 87 ++++++++++++++++++------------ 1 file changed, 53 insertions(+), 34 deletions(-) diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 73fd197b3..7092b8448 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -34,41 +34,11 @@ jobs: uses: actions/dependency-review-action@v4 - check-changelog: - name: "Check CHANGELOG" - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - # Fetch full history for comparison - fetch-depth: 0 - - name: Determine if branch is a feature branch - id: check_feature_branch - run: | - if [[ "${{ github.head_ref || github.ref_name }} " =~ ^feature/* ]]; then - echo "is_feature=true" >> $GITHUB_ENV - else - echo "is_feature=false" >> $GITHUB_ENV - fi - - name: Check if CHANGELOG.md has changed - if: env.is_feature == 'true' - run: | - # Compare the CHANGELOG.md file in the current branch with the `develop` branch - if git diff --name-only origin/develop...HEAD | grep -q '^CHANGELOG.md$'; then - echo "CHANGELOG.md has been updated." - else - echo "CHANGELOG.md has not been updated." - exit 1 - fi - - install-ui: name: "Install UI" runs-on: ubuntu-latest needs: - dependency-review - - check-changelog steps: - name: Checkout repository uses: actions/checkout@v4 @@ -165,7 +135,6 @@ jobs: runs-on: ubuntu-latest needs: - dependency-review - - check-changelog steps: - name: Checkout repository uses: actions/checkout@v4 @@ -210,9 +179,6 @@ jobs: rm -r tests/ echo "fn main() {}" > src/main.rs cargo build --all-targets --locked --quiet - - rustup component add rustfmt - rustup component add clippy check-api: @@ -264,6 +230,7 @@ jobs: toolchain: ${{ env.RUST_VERSION }} profile: minimal override: true + components: clippy, rustfmt - name: Restore cargo registry uses: actions/cache/restore@v4 with: @@ -346,3 +313,55 @@ jobs: run: | kill $(cat api.pid) docker compose down + + + check-changelog: + name: "Check CHANGELOG" + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Fetch full history for comparison + fetch-depth: 0 + - name: Determine if branch is a feature branch + id: check_feature_branch + run: | + if [[ "${{ github.head_ref || github.ref_name }} " =~ ^feature/* ]]; then + echo "is_feature=true" >> $GITHUB_ENV + else + echo "is_feature=false" >> $GITHUB_ENV + fi + - name: Check if CHANGELOG.md has changed + if: env.is_feature == 'true' + continue-on-error: true + run: | + # Compare the CHANGELOG.md file in the current branch with the `develop` branch + if git diff --name-only origin/develop...HEAD | grep -q '^CHANGELOG.md$'; then + echo "CHANGELOG.md has been updated." + else + echo "CHANGELOG.md has not been updated." + exit 1 + fi + + + require-single-commit: + name: "Require Single Commit" + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Fetch full history for comparison + fetch-depth: 0 + - name: Count commits + id: count_commits + run: | + commit_count=$(git rev-list --count HEAD ^origin/${{ github.event.pull_request.base.ref }}) + echo "commit_count=$commit_count" >> $GITHUB_ENV + - name: Fail if more than one commit + if: env.commit_count > 1 + continue-on-error: true + run: | + echo "Pull request contains more than one commit ($commit_count commits). Please squash your commits." + exit 1