diff --git a/.github/workflows/mega-linter.yaml b/.github/workflows/mega-linter.yaml new file mode 100644 index 0000000..1d2c7f0 --- /dev/null +++ b/.github/workflows/mega-linter.yaml @@ -0,0 +1,111 @@ +--- +name: megalinter + +on: + workflow_call: + inputs: + runner: + description: runner name + type: string + default: ubuntu-latest + required: false + flavor: + description: flavor + type: string + default: "" + required: false + log-level: + description: log-level + type: string + default: info + required: false + secrets: + github-client-id: + description: github app client id + required: false + github-app-key: + description: github app private key + required: false + +jobs: + megalinter: + runs-on: ${{ inputs.runner }} + permissions: + contents: write + issues: write + pull-requests: write + steps: + # https://github.com/marketplace/actions/harden-runner + - name: harden runner + uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1 + with: + egress-policy: audit + + # https://github.com/marketplace/actions/create-github-app-token + - name: generate token + id: generate-token + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 + with: + client-id: ${{ secrets.github-client-id }} + private-key: ${{ secrets.github-app-key }} + + # https://github.com/marketplace/actions/checkout + - name: checkout repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + # https://github.com/marketplace/actions/megalinter + - name: megalinter cupcake + uses: oxsecurity/megalinter/flavors/cupcake@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == 'cupcake' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: megalinter documentation + uses: oxsecurity/megalinter/flavors/documentation@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == 'documentation' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: megalinter go + uses: oxsecurity/megalinter/flavors/go@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == 'go' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: megalinter javascript + uses: oxsecurity/megalinter/flavors/javascript@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == 'javascript' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: megalinter python + uses: oxsecurity/megalinter/flavors/python@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == 'python' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: megalinter security + uses: oxsecurity/megalinter/flavors/security@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == 'security' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: megalinter terraform + uses: oxsecurity/megalinter/flavors/terraform@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == 'terraform' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: megalinter full + uses: oxsecurity/megalinter@15e5b45552097e318c93de385779ce3b1084052c # v10.0.0 + if: inputs.flavor == '' || inputs.flavor == 'full' + env: + LOG_LEVEL: ${{ inputs.log-level || 'info' }} + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}