diff --git a/.github/workflows/catalog-sync-check.yml b/.github/workflows/catalog-sync-check.yml index e108764ed..c25a96efa 100644 --- a/.github/workflows/catalog-sync-check.yml +++ b/.github/workflows/catalog-sync-check.yml @@ -6,6 +6,10 @@ on: pull_request: branches: [ main ] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: validate-catalog: runs-on: ubuntu-latest @@ -18,6 +22,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.11' + cache: "pip" - name: Run Catalog Validation Script run: python scripts/validate_plugins_catalog.py \ No newline at end of file diff --git a/.github/workflows/check-artifacts.yml b/.github/workflows/check-artifacts.yml index 7f520594d..3a5d708d1 100644 --- a/.github/workflows/check-artifacts.yml +++ b/.github/workflows/check-artifacts.yml @@ -12,6 +12,10 @@ on: - "scripts/check-artifacts.sh" - ".github/workflows/check-artifacts.yml" +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: artifact-check: runs-on: ubuntu-latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6ed9d78b..28fa4e7e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,10 @@ on: push: pull_request: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + permissions: contents: read @@ -21,6 +25,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Fetch base branch for diff if: github.event_name == 'pull_request' run: git fetch origin "${{ github.base_ref }}" --depth=1 @@ -50,6 +55,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Validate issue template labels run: python scripts/validate_issue_template_labels.py @@ -60,6 +66,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Validate documentation anchors run: python scripts/validate_doc_anchors.py @@ -73,6 +80,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install backend system dependencies run: sudo apt-get update && sudo apt-get install -y libcairo2-dev pkg-config - name: Install backend development dependencies @@ -95,6 +103,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install backend system dependencies run: sudo apt-get update && sudo apt-get install -y libcairo2-dev pkg-config - name: Install backend dependencies @@ -117,6 +126,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install backend system dependencies run: sudo apt-get update && sudo apt-get install -y libcairo2-dev pkg-config - name: Install backend dependencies @@ -146,6 +156,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install backend system dependencies run: sudo apt-get update && sudo apt-get install -y libcairo2-dev pkg-config - name: Install backend dependencies @@ -177,6 +188,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install backend system dependencies run: sudo apt-get update && sudo apt-get install -y libcairo2-dev pkg-config - name: Install backend dependencies @@ -226,6 +238,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install backend system dependencies run: sudo apt-get update && sudo apt-get install -y libcairo2-dev pkg-config - name: Install backend dependencies diff --git a/.github/workflows/docker-hardening.yml b/.github/workflows/docker-hardening.yml index 412c7c763..b28412867 100644 --- a/.github/workflows/docker-hardening.yml +++ b/.github/workflows/docker-hardening.yml @@ -15,6 +15,10 @@ on: - ".github/workflows/docker-hardening.yml" workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: build: name: Build ${{ matrix.service }} image diff --git a/.github/workflows/plugin-integrity-check.yml b/.github/workflows/plugin-integrity-check.yml index 66160744b..a4bba187b 100644 --- a/.github/workflows/plugin-integrity-check.yml +++ b/.github/workflows/plugin-integrity-check.yml @@ -8,6 +8,10 @@ on: - 'scripts/refresh_plugin_checksum.py' - 'backend/secuscan/plugins.py' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: parser-integrity: runs-on: ubuntu-latest @@ -20,6 +24,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.11' + cache: "pip" - name: Verify all plugin parser hashes match metadata run: | diff --git a/.github/workflows/security-ci.yml b/.github/workflows/security-ci.yml index 8abb80e22..a6d134d75 100644 --- a/.github/workflows/security-ci.yml +++ b/.github/workflows/security-ci.yml @@ -6,6 +6,10 @@ on: pull_request: branches: [main] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + permissions: contents: read security-events: write @@ -19,6 +23,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install bandit run: pip install bandit[toml] - name: Run bandit security linter @@ -52,6 +57,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Check all API routers have authentication run: | python -c " @@ -86,6 +92,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Verify debug mode is off by default run: | python -c " @@ -176,6 +183,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Validate .env.example safe defaults run: | python -c " @@ -209,6 +217,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" - name: Install pip-audit run: pip install pip-audit - name: Audit Python dependencies diff --git a/.github/workflows/smoke-test.yml b/.github/workflows/smoke-test.yml index 491a16a19..e419f2d8e 100644 --- a/.github/workflows/smoke-test.yml +++ b/.github/workflows/smoke-test.yml @@ -27,6 +27,10 @@ on: - ".github/workflows/smoke-test.yml" workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: shell-smoke: name: start.sh shell smoke @@ -67,6 +71,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: "3.11" + cache: "pip" # ── 3. Set up Node.js ────────────────────────────────────────────────── # setup.sh checks for node + npm; frontend uses Vite on port 5173. diff --git a/.github/workflows/trivy-scan.yml b/.github/workflows/trivy-scan.yml index 492576a02..0521466d6 100644 --- a/.github/workflows/trivy-scan.yml +++ b/.github/workflows/trivy-scan.yml @@ -21,6 +21,10 @@ on: - cron: "0 6 * * 1" workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + permissions: contents: read security-events: write