mirror of
https://github.com/graycoreio/github-actions-magento2.git
synced 2026-06-08 19:46:41 +00:00
feat(sansec-ecomscan): add sansec ecomscan feature (#235)
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
name: Sansec eComscan Security Scan
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- ".github/workflows/_internal-sansec-ecomscan.yaml"
|
||||||
|
- "sansec-ecomscan/**"
|
||||||
|
- "!(**/*.md)"
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- ".github/workflows/_internal-sansec-ecomscan.yaml"
|
||||||
|
- "sansec-ecomscan/**"
|
||||||
|
- "!(**/*.md)"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
MAGENTO_COMPOSER_REPO: "https://mirror.mage-os.org/"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
compute_matrix:
|
||||||
|
if: "!startsWith(github.head_ref, 'release-please')"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
matrix: ${{ steps.supported-version.outputs.matrix }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- uses: ./supported-version
|
||||||
|
with:
|
||||||
|
kind: currently-supported
|
||||||
|
id: supported-version
|
||||||
|
|
||||||
|
run-ecomscan:
|
||||||
|
needs: compute_matrix
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ fromJSON(needs.compute_matrix.outputs.matrix) }}
|
||||||
|
fail-fast: false
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- uses: ./setup-magento
|
||||||
|
id: setup-magento
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
tools: composer:v${{ matrix.composer }}
|
||||||
|
mode: extension
|
||||||
|
magento_repository: ${{ env.MAGENTO_COMPOSER_REPO }}
|
||||||
|
magento_version: ${{ matrix.magento }}
|
||||||
|
composer_auth: ${{ secrets.COMPOSER_AUTH }}
|
||||||
|
|
||||||
|
- uses: ./cache-magento
|
||||||
|
with:
|
||||||
|
composer_cache_key: ${{ matrix.magento }}
|
||||||
|
|
||||||
|
- name: Composer install
|
||||||
|
shell: bash
|
||||||
|
run: composer install
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }}
|
||||||
|
|
||||||
|
- uses: ./sansec-ecomscan
|
||||||
|
with:
|
||||||
|
license: ${{ secrets.SANSEC_LICENSE_KEY }}
|
||||||
|
path: ${{ steps.setup-magento.outputs.path }}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# Sansec eComscan Security Scan Action
|
||||||
|
|
||||||
|
A Github Action that runs the [Sansec eComscan](https://sansec.io/ecomscan) security scanner.
|
||||||
|
|
||||||
|
## Inputs
|
||||||
|
|
||||||
|
See the [action.yml](./action.yml)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The caller is responsible for checking out the repository before calling this action. A valid Sansec license key must be passed via the `ecomscan_key` input.
|
||||||
|
|
||||||
|
The `path` input should point to the root of the Magento installation — the directory that contains `app/`, `vendor/`, etc. It defaults to `.` (the current working directory).
|
||||||
|
|
||||||
|
```yml
|
||||||
|
name: Sansec eComscan Security Scan
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request_target:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
run-ecomscan:
|
||||||
|
# Skip if it's a push event on a PR (it can't access secrets)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/sansec-ecomscan@7.1.0
|
||||||
|
with:
|
||||||
|
license: ${{ secrets.SANSEC_LICENSE_KEY }}
|
||||||
|
```
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
name: "Sansec eComscan Security Scan"
|
||||||
|
author: "Graycore"
|
||||||
|
description: "A Github Action that runs the Sansec eComscan security scanner."
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
license:
|
||||||
|
required: true
|
||||||
|
description: "Sansec license key (ECOMSCAN_KEY)"
|
||||||
|
|
||||||
|
path:
|
||||||
|
required: true
|
||||||
|
default: '.'
|
||||||
|
description: "The directory to scan."
|
||||||
|
|
||||||
|
skip_database:
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
|
description: "Skip the database scan (--skip-database). Defaults to true."
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Download eComscan
|
||||||
|
shell: bash
|
||||||
|
run: wget https://ecomscan.com/downloads/linux-amd64/ecomscan
|
||||||
|
|
||||||
|
- name: Fix permissions
|
||||||
|
shell: bash
|
||||||
|
run: chmod +x ecomscan
|
||||||
|
|
||||||
|
- name: Run eComscan
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
ECOMSCAN_KEY: ${{ inputs.license }}
|
||||||
|
run: |
|
||||||
|
FLAGS=(--no-auto-update --deep --format=csv)
|
||||||
|
[ "${{ inputs.skip_database }}" = "true" ] && FLAGS+=(--skip-database)
|
||||||
|
output=$(./ecomscan "${FLAGS[@]}" "${{ inputs.path }}")
|
||||||
|
if [ -n "$output" ]; then
|
||||||
|
echo "Security issues found:"
|
||||||
|
echo "$output"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
branding:
|
||||||
|
icon: "shield"
|
||||||
|
color: "red"
|
||||||
Reference in New Issue
Block a user