From df1d8933f3aa3347d2c89579ae52fb4fe0163f7a Mon Sep 17 00:00:00 2001 From: Splines Date: Tue, 14 Nov 2023 22:49:09 +0100 Subject: [PATCH] Redo whole workflow --- .github/workflows/linter.yml | 169 ++++++----------------------------- 1 file changed, 25 insertions(+), 144 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index dcf6ff132..7426ecef8 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -7,158 +7,39 @@ on: types: [synchronize] jobs: - anothertest: - name: Try out + + rubocop: + name: RuboCop runs-on: ubuntu-latest steps: - name: 'Checkout PR branch (with test merge-commit)' uses: actions/checkout@v3 with: - fetch-depth: 2 - - - name: 'Get a list of changed files to process' - run: git diff-tree --name-only --diff-filter 'AM' -r HEAD^1 HEAD - - changedfiles: - name: Get changed files in PR - runs-on: ubuntu-latest - outputs: - changedFiles: ${{ steps.changes.outputs.files}} - steps: - - name: Checkout repo - uses: actions/checkout@v4 - + fetch-depth: 2 # to also fetch parent of PR + + # Adapted from this great comment [1]. Git diff adapted from [2]. + # "|| test $? = 1;" is used to ignore the exit code of grep when no files + # are found matching the pattern. For the "three dots" ... syntax, see [3]. - name: Get changed files - id: changes run: | - echo "files=$(git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep '\.rb$' || test $? = 1;)" >> $GITHUB_OUTPUT - - # (!!!) https://github.com/actions/checkout/issues/520#issuecomment-1167205721 - rubocop: - name: RuboCop - runs-on: ubuntu-latest - needs: changedfiles - if: ${{needs.changedfiles.outputs.changedFiles}} - steps: - - name: Echo changed files - run: echo ${{needs.changedfiles.outputs.changedFiles}} - - # - name: Determine target branch - # run: | - # target_branch=${{ github.base_ref || 'mampf-next' }} - # echo "Target branch is: $target_branch" - # echo "TARGET_BRANCH=$target_branch" >> $GITHUB_ENV - - # # for the " + 1", see: - # # https://github.com/actions/checkout/issues/552#issuecomment-1167086216 - # - name: Calculate fetch depth - # run: | - # depth=$(( ${{ github.pull_request.commits }} + 1 )) - # echo "Fetch depth is: $depth" - # echo "PR_FETCH_DEPTH=$depth" >> $GITHUB_ENV - - # - name: 'Checkout PR branch and all PR commits' - # uses: actions/checkout@v3 - # with: - # ref: ${{ github.pull_request.head.ref }} - # fetch-depth: ${{ env.PR_FETCH_DEPTH }} + files=$(git diff --name-only --diff-filter=ACMR -r HEAD^1...HEAD | grep '\.rb$' || test $? = 1;) + printf "🎴 Changed ruby files: \n$files" + echo "CHANGED_FILES=\"$(echo ${files} | xargs)\"" >> $GITHUB_ENV - # - name: Fetch target branch with enough history for a common merge-base commit - # run: | - # git fetch origin ${{ github.pull_request.base.ref }} - - # - name: Set up Ruby 3 - # uses: ruby/setup-ruby@v1 - # with: - # ruby-version: 3.1.4 - # bundler-cache: true - - # If this action is not triggered from a PR, we use 'mampf-next' as default - # target branch to compare against. This might not cover all use cases. - # But in the end, one has to open a PR anyways and then the correct target - # branch is identified. - # TODO: rename to 'dev' when 'mampf-next' branch is renamed. - # - name: Fetch target branch - # run: | - # targetBranch=${{ github.base_ref || 'mampf-next' }} - # echo "Target branch is: $targetBranch" - # git fetch origin $targetBranch:$targetBranch --depth=1 - - # adapted from https://github.com/actions/checkout/issues/520#issuecomment-1167205721 - # and: https://robertfaldo.medium.com/commands-to-run-rubocop-and-specs-you-changed-in-your-branch-e6d2f2e4110b - # --diff-filter=d excludes deleted files - # "|| test $? = 1;" is used to ignore the exit code of grep when no files - # are found matching the pattern - # For the "three dots" ... syntax, see - # https://community.atlassian.com/t5/Bitbucket-questions/Git-diff-show-different-files-than-PR-Pull-Request/qaq-p/2331786 - # - name: Get changed ruby files (git diff) - # run: | - # changedFiles=$(git diff --name-only --diff-filter=d -r $targetBranch...HEAD | grep '\.rb$' || test $? = 1;) - # printf "Changed ruby files: \n$changedFiles" - # echo "CHANGED_FILES=\"$changedFiles\"" >> $GITHUB_ENV + - name: Set up Ruby 3 + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1.4 + bundler-cache: true - # See RuboCop command line flags here: - # https://docs.rubocop.org/rubocop/usage/basic_usage.html#command-line-flags - # - name: Run RuboCop - # if: env.CHANGED_FILES != '' - # run: $CHANGED_FILES | xargs bundle exec rubocop + - name: Run RuboCop + if: env.CHANGED_FILES != '' + run: | + echo "Changed files: $CHANGED_FILES" + bundle exec rubocop $CHANGED_FILES - # eslint: - # runs-on: ubuntu-latest - # name: A job to check eslint linter errors - # steps: - # - uses: actions/checkout@v2 - # - name: Linter count - # id: hello - # uses: henrixapp/linter-less-or-equal-action@v1.19 - # with: - # name: EsLint - # command: npx eslint - # total_regexp: \d+ problems - # errors_regexp: \d+ errors - # warnings_regexp: \d+ warnings - # compare_branch: mampf-next - # mode: changed - # include: .js - # coffee: - # runs-on: ubuntu-latest - # name: A job to check coffee linter errors - # steps: - # - uses: actions/checkout@v2 - # - name: Linter count - # id: hello - # uses: henrixapp/linter-less-or-equal-action@v1.19 - # with: - # name: Coffee - # command: npx coffeelint - # total_regexp: \d+ errors - # errors_regexp: \d+ errors - # warnings_regexp: \d+ warnings - # compare_branch: mampf-next - # mode: changed - # include: .coffee - # erblint: - # runs-on: ubuntu-latest - # name: A job to check erblint linter errors - # steps: - # - uses: actions/checkout@v2 - # - name: Set up Ruby 2.7 - # uses: ruby/setup-ruby@v1 - # with: - # ruby-version: 2.7 - # - name: Install gems # usual step to install the gems. - # run: | - # bin/bundle config path vendor/bundle - # bin/bundle config set without 'default doc job cable storage ujs test db' - # bin/bundle install --jobs 4 --retry 3 - # - name: Linter count - # id: hello - # uses: henrixapp/linter-less-or-equal-action@v1.1 - # with: - # name: Erblint - # command: bin/bundle exec erblint . - # total_regexp: \d+ error(s) - # errors_regexp: \d+ error(s) - # warnings_regexp: \d+ error(s) - # compare_branch: mampf-next +# Useful resources +# [1] https://github.com/actions/checkout/issues/520#issuecomment-1167205721 +# [2] https://robertfaldo.medium.com/commands-to-run-rubocop-and-specs-you-changed-in-your-branch-e6d2f2e4110b +# [3] https://community.atlassian.com/t5/Bitbucket-questions/Git-diff-show-different-files-than-PR-Pull-Request/qaq-p/2331786