Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions .github/workflows/qg.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Quality Gate Scan

on:
push:
branches:
- '**'

permissions:
contents: read

jobs:
quality-gate:
name: Quality Gate Scan
runs-on: ubuntu-latest
environment: ${{ (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main') && 'production' || 'test' }}
steps:
- name: Checkout
uses: actions/checkout@v4
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Pin the checkout action to a specific, immutable version to ensure deterministic builds and reduce supply-chain risk. [security]


- name: Fetch quality gates script
env:
API_BASE: https://api.codeant.ai
run: |
curl -sS -X GET "${API_BASE}/analysis/ci/quality-gates/script/get" \
--output quality_gates.sh.b64

- name: Make script executable
run: |
base64 -d quality_gates.sh.b64 > quality_gates.sh
chmod +x quality_gates.sh

Comment on lines +24 to +31
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Harden the remote download by using strict curl flags, optional checksum verification via EXPECTED_SHA256, decoding and validating the script in one step, and failing fast on any issue to mitigate supply-chain risks. [security]

- name: Start Quality Gate Scan
id: start-scan
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN_GITHUB }}
REPO_NAME: ${{ github.repository }}
COMMIT_ID: ${{ github.sha }}
run: |
echo "Starting quality gate scan..."
./quality_gates.sh \
-a "$ACCESS_TOKEN" \
-r "$REPO_NAME" \
-c "$COMMIT_ID" \
-s github \
-o start
echo "Quality gate scan initiated successfully"

- name: Poll for Quality Gate Results
id: poll-results
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN_GITHUB }}
REPO_NAME: ${{ github.repository }}
COMMIT_ID: ${{ github.sha }}
run: |
echo "Polling for quality gate results..."
./quality_gates.sh \
-a "$ACCESS_TOKEN" \
-r "$REPO_NAME" \
-c "$COMMIT_ID" \
-s github \
-o results \
-t 300 \
-p 15

- name: Quality Gate Status
if: always()
run: |
if [ "${{ job.status }}" = "success" ]; then
echo "✅ Quality Gate PASSED - No secrets detected"
echo "::notice title=Quality Gate::Quality gate passed successfully"
else
echo "❌ Quality Gate FAILED - Secrets detected or scan error"
echo "::error title=Quality Gate::Quality gate failed - please review the detected issues"
exit 1
fi
Loading