From 6aac0a48aed56eb48f0a4d7413da696c0482e19a Mon Sep 17 00:00:00 2001 From: Fabian Seitz Date: Sat, 21 Jan 2023 10:52:17 +0100 Subject: [PATCH] Use GitHub Actions to improve the coding --- .github/.powershell-psscriptanalyzer.psd1 | 16 ++++ .github/WORKFLOWS/automerge-dependabot.yml | 21 +++++ .github/WORKFLOWS/dependabot.yml | 8 ++ .github/WORKFLOWS/mega-linter.yml | 93 ++++++++++++++++++++++ .github/cspell.json | 18 +++++ 5 files changed, 156 insertions(+) create mode 100644 .github/.powershell-psscriptanalyzer.psd1 create mode 100644 .github/WORKFLOWS/automerge-dependabot.yml create mode 100644 .github/WORKFLOWS/dependabot.yml create mode 100644 .github/WORKFLOWS/mega-linter.yml create mode 100644 .github/cspell.json diff --git a/.github/.powershell-psscriptanalyzer.psd1 b/.github/.powershell-psscriptanalyzer.psd1 new file mode 100644 index 0000000..6128b5c --- /dev/null +++ b/.github/.powershell-psscriptanalyzer.psd1 @@ -0,0 +1,16 @@ +#Documentation: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/docs/markdown/Invoke-ScriptAnalyzer.md#-settings +@{ + ExcludeRules = @( + 'PSMissingModuleManifestField', + 'PSUseLiteralInitializerForHashtable', + 'MissingPropertyName' + 'PSAvoidGlobalVars', + 'PSAvoidUsingPositionalParameters', + 'PSAvoidUsingWriteHost', + 'PSAvoidUsingEmptyCatchBlock', + 'PSPossibleIncorrectComparisonWithNull', + 'PSAvoidTrailingWhitespace', + 'PSUseApprovedVerbs', + 'PSAvoidUsingWMICmdlet' + ) +} \ No newline at end of file diff --git a/.github/WORKFLOWS/automerge-dependabot.yml b/.github/WORKFLOWS/automerge-dependabot.yml new file mode 100644 index 0000000..167d567 --- /dev/null +++ b/.github/WORKFLOWS/automerge-dependabot.yml @@ -0,0 +1,21 @@ +--- +name: "Dependabot Automerge - Action" + +on: + pull_request: + +permissions: + contents: write + pull-requests: write + +jobs: + auto-merge: + name: DependabotMerge + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'}} # Detect that the PR author is dependabot + steps: + - name: Enable auto-merge for Dependabot PRs + run: gh pr merge --auto --merge "$PR_URL" # Use Github CLI to merge automatically the PR + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} \ No newline at end of file diff --git a/.github/WORKFLOWS/dependabot.yml b/.github/WORKFLOWS/dependabot.yml new file mode 100644 index 0000000..458b688 --- /dev/null +++ b/.github/WORKFLOWS/dependabot.yml @@ -0,0 +1,8 @@ +--- +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: weekly + time: "06:00" diff --git a/.github/WORKFLOWS/mega-linter.yml b/.github/WORKFLOWS/mega-linter.yml new file mode 100644 index 0000000..adc7703 --- /dev/null +++ b/.github/WORKFLOWS/mega-linter.yml @@ -0,0 +1,93 @@ +--- +# MegaLinter GitHub Action configuration file +# More info at https://megalinter.github.io +name: MegaLinter + +on: + # Trigger mega-linter at every push. Action will also be visible from Pull Requests to main + push: # Comment this line to trigger action only on pull-requests (not recommended if you don't pay for GH Actions) + pull_request: + branches: [master, main] + +permissions: + contents: write + pull-requests: write + +env: # Comment env block if you do not want to apply fixes + # Apply linter fixes configuration + APPLY_FIXES: all # When active, APPLY_FIXES must also be defined as environment variable (in github/workflows/mega-linter.yml or other CI tool) + APPLY_FIXES_EVENT: all # Decide which event triggers application of fixes in a commit or a PR (pull_request, push, all) + APPLY_FIXES_MODE: pull_request # If APPLY_FIXES is used, defines if the fixes are directly committed (commit) or posted in a PR (pull_request) + +concurrency: + group: ${{ github.ref }}-${{ github.workflow }} + cancel-in-progress: true + +jobs: + build: + name: MegaLinter + runs-on: ubuntu-latest + continue-on-error: true + steps: + # Git Checkout + - name: Checkout Code + uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 + + # MegaLinter + - name: MegaLinter + id: ml + # You can override MegaLinter flavor used to have faster performances + # More info at https://megalinter.github.io/flavors/ + uses: megalinter/megalinter@v6 + env: + # All available variables are described in documentation + # https://megalinter.github.io/configuration/ + VALIDATE_ALL_CODEBASE: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} # 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 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SPELL_CSPELL_CONFIG_FILE: .github/cspell.json + SPELL_MISSPELL_ARGUMENTS: -i "mosquitto" + DISABLE_LINTERS: REPOSITORY_SEMGREP,BASH_EXEC,HTML_HTMLHINT + DISABLE_ERRORS_LINTERS: SPELL_CSPELL,SPELL_PROSELINT,COPYPASTE_JSCPD,REPOSITORY_DEVSKIM,MARKDOWN_MARKDOWN_LINK_CHECK + FILTER_REGEX_EXCLUDE: (.github/workflows/) + DISABLE_ERRORS: true + + # Upload MegaLinter artifacts + - name: Archive production artifacts + if: ${{ success() }} || ${{ failure() }} + uses: actions/upload-artifact@v3 + with: + name: MegaLinter reports + path: | + report + mega-linter.log + if-no-files-found: ignore + + # Create pull request if applicable (for now works only on PR from same repository, not from forks) + - name: Create Pull Request with applied fixes + 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') + uses: peter-evans/create-pull-request@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "[MegaLinter] Apply linters automatic fixes" + title: "[MegaLinter] Apply linters automatic fixes" + 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') + run: | + echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" + echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" + + # 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') + run: sudo chown -Rc $UID .git/ + - name: Commit and push applied linter fixes + 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') + uses: stefanzweifel/git-auto-commit-action@v4 + with: + branch: ${{ github.event.pull_request.head.ref || github.head_ref || github.ref }} + commit_message: "[MegaLinter] Apply linters fixes" diff --git a/.github/cspell.json b/.github/cspell.json new file mode 100644 index 0000000..1301469 --- /dev/null +++ b/.github/cspell.json @@ -0,0 +1,18 @@ +{ + "language": "en", + "words": [ + "WAU", + "soredake", + "msstore" + ], + "ignorePaths": [ + ".github/*", + ".git", + ".gitignore", + ".vscodeignore", + "*.lock", + "*.log", + "*.csv", + "*.txt" + ] +} \ No newline at end of file