diff --git a/.github/workflows/mega-linter-for-runner.yml b/.github/workflows/mega-linter-for-runner.yml index 13ebc7920f5..48c580762e0 100644 --- a/.github/workflows/mega-linter-for-runner.yml +++ b/.github/workflows/mega-linter-for-runner.yml @@ -125,7 +125,8 @@ jobs: ( github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository - ) + ) && + !contains(github.event.head_commit.message, 'skip fix') }}" >> "${GITHUB_ENV}" # Set APPLY_FIXES_IF_* vars for use in future steps diff --git a/.github/workflows/mega-linter.yml b/.github/workflows/mega-linter.yml index 075187d7c79..46840eeb5a6 100644 --- a/.github/workflows/mega-linter.yml +++ b/.github/workflows/mega-linter.yml @@ -125,7 +125,9 @@ jobs: ( github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository - ) + ) && + !contains(github.event.head_commit.message, 'skip fix') + }}" >> "${GITHUB_ENV}" # Set APPLY_FIXES_IF_* vars for use in future steps diff --git a/TEMPLATES/mega-linter.yml b/TEMPLATES/mega-linter.yml index c37d9af669d..337a28f7092 100644 --- a/TEMPLATES/mega-linter.yml +++ b/TEMPLATES/mega-linter.yml @@ -120,7 +120,8 @@ jobs: ( github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository - ) + ) && + !contains(github.event.head_commit.message, 'skip fix') }}" >> "${GITHUB_ENV}" # Set APPLY_FIXES_IF_* vars for use in future steps diff --git a/mega-linter-runner/generators/mega-linter/templates/mega-linter.yml b/mega-linter-runner/generators/mega-linter/templates/mega-linter.yml index 1b1376bd274..7197c89a1fd 100644 --- a/mega-linter-runner/generators/mega-linter/templates/mega-linter.yml +++ b/mega-linter-runner/generators/mega-linter/templates/mega-linter.yml @@ -3,8 +3,8 @@ --- name: MegaLinter -# Trigger mega-linter at every push. Action will also be visible from -# Pull Requests to main +# Trigger mega-linter at every push. Action will also be visible from Pull +# Requests to main on: # Comment this line to trigger action only on pull-requests # (not recommended if you don't pay for GH Actions) @@ -41,16 +41,17 @@ jobs: runs-on: ubuntu-latest # Give the default GITHUB_TOKEN write permission to commit and push, comment - # issues, and post new Pull Requests; remove the ones you do not need + # issues & post new PR; remove the ones you do not need permissions: contents: write issues: write pull-requests: write steps: + # Git Checkout - name: Checkout Code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }} @@ -62,14 +63,15 @@ jobs: - name: MegaLinter # You can override MegaLinter flavor used to have faster performances - # More info at https://megalinter.io/latest/flavors/ + # More info at https://megalinter.io/flavors/ uses: <%= GITHUB_ACTION_NAME %>@<%= GITHUB_ACTION_VERSION %> id: ml # All available variables are described in documentation - # https://megalinter.io/latest/config-file/ + # https://megalinter.io/configuration/ env: + # Validates all source when push on main, else just the git diff with # main. Override with true if you always want to lint all sources # @@ -80,15 +82,18 @@ jobs: # VALIDATE_ALL_CODEBASE: >- # ${{ # github.event_name == 'push' && - # github.ref == 'refs/heads/main' + # contains(fromJSON('["refs/heads/main", "refs/heads/master"]'), github.ref) # }} VALIDATE_ALL_CODEBASE: <%- VALIDATE_ALL_CODE_BASE_GHA %> GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # ADD YOUR CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF + # ADD YOUR CUSTOM ENV VARIABLES HERE OR DEFINE THEM IN A FILE # .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY + # Uncomment to disable copy-paste and spell checks + # DISABLE: COPYPASTE,SPELL + # Upload MegaLinter artifacts - name: Archive production artifacts uses: actions/upload-artifact@v3 @@ -99,23 +104,41 @@ jobs: megalinter-reports mega-linter.log + # Set APPLY_FIXES_IF var for use in future steps + - name: Set APPLY_FIXES_IF var + run: | + printf 'APPLY_FIXES_IF=%s\n' "${{ + steps.ml.outputs.has_updated_sources == 1 && + ( + env.APPLY_FIXES_EVENT == 'all' || + env.APPLY_FIXES_EVENT == github.event_name + ) && + ( + github.event_name == 'push' || + github.event.pull_request.head.repo.full_name == github.repository + ) && + !contains(github.event.head_commit.message, 'skip fix') + }}" >> "${GITHUB_ENV}" + + # Set APPLY_FIXES_IF_* vars for use in future steps + - name: Set APPLY_FIXES_IF_* vars + run: | + printf 'APPLY_FIXES_IF_PR=%s\n' "${{ + env.APPLY_FIXES_IF == 'true' && + env.APPLY_FIXES_MODE == 'pull_request' + }}" >> "${GITHUB_ENV}" + printf 'APPLY_FIXES_IF_COMMIT=%s\n' "${{ + env.APPLY_FIXES_IF == 'true' && + env.APPLY_FIXES_MODE == 'commit' && + (!contains(fromJSON('["refs/heads/main", "refs/heads/master"]'), github.ref)) + }}" >> "${GITHUB_ENV}" + # Create pull request if applicable # (for now works only on PR from same repository, not from forks) - name: Create Pull Request with applied fixes uses: peter-evans/create-pull-request@v5 id: cpr - if: >- - steps.ml.outputs.has_updated_sources == 1 && - ( - env.APPLY_FIXES_EVENT == 'all' || - env.APPLY_FIXES_EVENT == github.event_name - ) && - env.APPLY_FIXES_MODE == 'pull_request' && - ( - github.event_name == 'push' || - github.event.pull_request.head.repo.full_name == github.repository - ) && - !contains(github.event.head_commit.message, 'skip fix') + if: env.APPLY_FIXES_IF_PR == 'true' with: token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }} commit-message: "[MegaLinter] Apply linters automatic fixes" @@ -123,18 +146,7 @@ jobs: labels: bot - name: Create PR output - if: >- - steps.ml.outputs.has_updated_sources == 1 && - ( - env.APPLY_FIXES_EVENT == 'all' || - env.APPLY_FIXES_EVENT == github.event_name - ) && - env.APPLY_FIXES_MODE == 'pull_request' && - ( - github.event_name == 'push' || - github.event.pull_request.head.repo.full_name == github.repository - ) && - !contains(github.event.head_commit.message, 'skip fix') + if: env.APPLY_FIXES_IF_PR == 'true' run: | echo "PR Number - ${{ steps.cpr.outputs.pull-request-number }}" echo "PR URL - ${{ steps.cpr.outputs.pull-request-url }}" @@ -142,36 +154,12 @@ jobs: # Push new commit if applicable # (for now works only on PR from same repository, not from forks) - name: Prepare commit - if: >- - steps.ml.outputs.has_updated_sources == 1 && - ( - env.APPLY_FIXES_EVENT == 'all' || - env.APPLY_FIXES_EVENT == github.event_name - ) && - env.APPLY_FIXES_MODE == 'commit' && - github.ref != 'refs/heads/main' && - ( - github.event_name == 'push' || - github.event.pull_request.head.repo.full_name == github.repository - ) && - !contains(github.event.head_commit.message, 'skip fix') + if: env.APPLY_FIXES_IF_COMMIT == 'true' run: sudo chown -Rc $UID .git/ - name: Commit and push applied linter fixes uses: stefanzweifel/git-auto-commit-action@v4 - if: >- - steps.ml.outputs.has_updated_sources == 1 && - ( - env.APPLY_FIXES_EVENT == 'all' || - env.APPLY_FIXES_EVENT == github.event_name - ) && - env.APPLY_FIXES_MODE == 'commit' && - github.ref != 'refs/heads/main' && - ( - github.event_name == 'push' || - github.event.pull_request.head.repo.full_name == github.repository - ) && - !contains(github.event.head_commit.message, 'skip fix') + if: env.APPLY_FIXES_IF_COMMIT == 'true' with: branch: >- ${{