diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..5f362fc --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,16 @@ +--- +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + labels: + - dependabot + - actions + schedule: + interval: daily + groups: + action-dependencies: + patterns: + - '*' + commit-message: + prefix: 'build' diff --git a/.github/workflows/check-code.yml b/.github/workflows/check-code.yml new file mode 100644 index 0000000..03da708 --- /dev/null +++ b/.github/workflows/check-code.yml @@ -0,0 +1,54 @@ +--- +name: Checks +on: + pull_request: + paths: + - '**.py*' + - '.github/workflows/check-code.yml' +jobs: + lint: + strategy: + fail-fast: false + matrix: + linter: [ + {'name': 'flake8', 'format': 'flake8', 'cwd': '.', 'cmd': 'flake8 .'}, + {'name': 'mypy', 'format': 'mypy', 'cwd': '.', 'cmd': 'mypy .'}, + {'name': 'pylint', 'format': 'pylint', 'cwd': '.', 'cmd': 'pylint --load-plugins pylint_pytest $(Get-ChildItem -Filter *.py -Recurse .)'}, + ] + name: ${{ matrix.linter.name }} + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.12' + - name: Install Python dependencies + run: py -m pip install -r dev-requirements.txt + - name: Lint + run: cd ${{ matrix.linter.cwd }}; ${{ matrix.linter.cmd }} > lint.log + - name: Convert + uses: bugale/bugalint@v2 + if: always() + with: + inputFile: 'lint.log' + toolName: ${{ matrix.linter.name }} + inputFormat: ${{ matrix.linter.format }} + - name: Upload results + uses: github/codeql-action/upload-sarif@v3 + if: always() + with: + sarif_file: sarif.json + test: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.12' + - uses: FedericoCarboni/setup-ffmpeg@v2 + id: setup-ffmpeg + - name: Install test dependencies + run: py -m pip install -r dev-requirements.txt + - name: Test + run: pytest tests + \ No newline at end of file diff --git a/.github/workflows/check-docs.yml b/.github/workflows/check-docs.yml new file mode 100644 index 0000000..169fd4c --- /dev/null +++ b/.github/workflows/check-docs.yml @@ -0,0 +1,33 @@ +--- +name: Checks +on: + pull_request: + paths: + - '**.md' + - '**mdl*' + - '.github/workflows/check-docs.yml' +jobs: + markdownlint: + name: markdownlint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Lint + uses: avto-dev/markdown-lint@v1 + with: + args: '**/*.md' + output: 'lint.txt' + config: '.mdl.yml' + - name: Convert + uses: ./ + if: always() + with: + inputFile: 'lint.txt' + toolName: 'mdl' + inputFormat: 'mdl' + - name: Upload results + uses: github/codeql-action/upload-sarif@v3 + if: always() + with: + sarif_file: sarif.json diff --git a/.github/workflows/check-general.yml b/.github/workflows/check-general.yml new file mode 100644 index 0000000..1984f1a --- /dev/null +++ b/.github/workflows/check-general.yml @@ -0,0 +1,40 @@ +--- +name: Checks +on: + - pull_request +jobs: + check-commits: + name: Check Commits + runs-on: ubuntu-latest + steps: + - name: Install Dependencies + run: npm install -g @commitlint/cli @commitlint/config-conventional conventional-changelog-conventionalcommits + - name: Get Base + id: get-base + run: |- + count=$(gh api "/repos/${{ github.repository }}/pulls/${{ github.event.number }}/commits" --jq "length") + req=$(($count + 1)) + echo "count: $count, req: $req" + echo "commit-count=$count" >> $GITHUB_OUTPUT + echo "required=$req" >> $GITHUB_OUTPUT + env: + GH_TOKEN: ${{ github.token }} + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: ${{ steps.get-base.outputs.required }} + ref: ${{ github.event.pull_request.head.sha }} + - name: Check Commits + # yamllint disable-line rule:line-length + run: commitlint --from ${{ github.event.pull_request.head.sha }}~${{ steps.get-base.outputs.commit-count }} --to ${{ github.event.pull_request.head.sha }} + required: + runs-on: ubuntu-latest + name: Required Checks + steps: + - uses: bugale/bugroup-checks@v1 + with: + checks: |- + GitHub Action.* + Check.* + .*[lL]int.* + self: Required Checks diff --git a/.github/workflows/check-yml.yml b/.github/workflows/check-yml.yml new file mode 100644 index 0000000..58c4dd7 --- /dev/null +++ b/.github/workflows/check-yml.yml @@ -0,0 +1,27 @@ +--- +name: Checks +on: + pull_request: + paths: + - '**.yml' +jobs: + yamllint: + name: yamllint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: yamllint + run: yamllint --strict -f parsable . > lint.txt + - name: Convert + uses: bugale/bugalint@v2 + if: always() + with: + inputFile: 'lint.txt' + toolName: 'yamllint' + inputFormat: 'yamllint' + - name: Upload results + uses: github/codeql-action/upload-sarif@v3 + if: always() + with: + sarif_file: sarif.json diff --git a/.github/workflows/dependabot.yml b/.github/workflows/dependabot.yml new file mode 100644 index 0000000..1855519 --- /dev/null +++ b/.github/workflows/dependabot.yml @@ -0,0 +1,18 @@ +--- +name: Dependabot +on: + - pull_request +permissions: write-all +jobs: + auto-merge: + name: Auto-merge + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + - name: Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@v1 + - name: Enable auto-merge for Dependabot PRs + run: gh pr merge --auto --rebase "${{github.event.pull_request.html_url}}" + env: + GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 6a4bea0..0000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Lint - -on: - pull_request: - branches: [ main ] - -jobs: - lint: - strategy: - fail-fast: false - matrix: - linter: [ - {"name": "flake8", "format": "flake8", "cwd": ".", "cmd": "flake8 ."}, - {"name": "mypy", "format": "mypy", "cwd": ".", "cmd": "mypy ."}, - {"name": "pylint", "format": "pylint-json", "cwd": ".", "cmd": "pylint --load-plugins pylint_pytest $(Get-ChildItem -Filter *.py -Recurse .)"}, - ] - name: ${{ matrix.linter.name }} - runs-on: windows-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.12' - - name: Install Python dependencies - run: | - py -m pip install --upgrade pip - py -m pip install -r dev-requirements.txt - py -m pip install git+https://github.com/bugale/Bugalintly.git@bugalintly - - name: Lint - run: | - cd ${{ matrix.linter.cwd }} - ${{ matrix.linter.cmd }} > lint.log - $exitcode = $LASTEXITCODE - type lint.log | Lintly --log --no-request-changes --no-review-body --base-dir . --format=${{ matrix.linter.format }} --comment-tag=${{ matrix.linter.name }} - exit $exitcode - env: - LINTLY_API_KEY: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index ba9a2fa..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Test - -on: - pull_request: - branches: [ main ] - -jobs: - test: - runs-on: windows-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.12' - - uses: FedericoCarboni/setup-ffmpeg@v2 - id: setup-ffmpeg - - name: Install test dependencies - run: | - py -m pip install --upgrade pip - py -m pip install -r dev-requirements.txt - - name: Test - run: | - pytest tests