Skip to content

Commit 552d658

Browse files
committed
implement NPM
Signed-off-by: Jefferson <jefferson.rios.caro@gmail.com>
1 parent 0caa634 commit 552d658

3 files changed

Lines changed: 55 additions & 43 deletions

File tree

.github/ISSUE_TEMPLATE.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
---
22
title: "{{ env.VULN_ID }} ({{ env.VULN_DEP_NAME }}) found on {{ env.NODEJS_STREAM }}"
3-
labels:
4-
- "{{ env.NODEJS_STREAM }}"
5-
{% if env.VULN_SOURCE == 'npm' %}- "NPM"{% endif %}
6-
{% if env.VULN_SEVERITY and env.VULN_SEVERITY != 'null' %}- "{{ env.VULN_SEVERITY | upper }}"{% endif %}
7-
{% if env.RUNTIME_VERSION %}- "{{ env.RUNTIME_VERSION }}"{% endif %}
8-
{% if env.NSOLID_VERSION %}- "nsolid-{{ env.NSOLID_VERSION }}"{% endif %}
3+
labels: {{ env.ISSUE_LABELS }}
94
assignees:
105
---
116

.github/workflows/check-vulns.yml

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -99,25 +99,51 @@ jobs:
9999
echo "Dependency: ${{ matrix.vulnerabilities.dependency }}"
100100
echo "Source: ${{ matrix.vulnerabilities.source }}"
101101
echo "Labels: ${{ join(matrix.vulnerabilities.labels, ', ') }}"
102-
echo "ISSUE_LABELS (comma-separated): ${{ join(matrix.vulnerabilities.labels, ', ') }}"
103-
echo "VULN_SEVERITY: ${{ matrix.vulnerabilities.severity }}"
104-
echo "RUNTIME_VERSION: ${{ matrix.vulnerabilities.runtime_version }}"
105-
echo "NSOLID_VERSION: ${{ matrix.vulnerabilities.nsolid_version }}"
106-
- uses: dblock/create-a-github-issue@v3
107-
with:
108-
update_existing: false
109-
search_existing: open
102+
echo "ISSUE_LABELS: ${{ join(matrix.vulnerabilities.labels, ',') }}"
103+
104+
- name: Create or update GitHub issue
110105
env:
111106
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
112-
VULN_ID: ${{ matrix.vulnerabilities.id }}
113-
VULN_URL: ${{ matrix.vulnerabilities.url }}
114-
VULN_SEVERITY: ${{ matrix.vulnerabilities.severity }}
115-
RUNTIME_VERSION: ${{ matrix.vulnerabilities.runtime_version }}
116-
NSOLID_VERSION: ${{ matrix.vulnerabilities.nsolid_version }}
117-
VULN_DEP_NAME: ${{ matrix.vulnerabilities.dependency }}
118-
VULN_DEP_VERSION: ${{ matrix.vulnerabilities.version }}
119-
VULN_SOURCE: ${{ matrix.vulnerabilities.source }}
120-
VULN_MAIN_DEP_NAME: ${{ matrix.vulnerabilities.main_dep_name }}
121-
VULN_MAIN_DEP_PATH: ${{ matrix.vulnerabilities.main_dep_path }}
122-
NODEJS_STREAM: ${{ inputs.nsolidStream }}
123-
ACTION_URL: "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
107+
run: |
108+
# Set variables
109+
VULN_ID="${{ matrix.vulnerabilities.id }}"
110+
VULN_URL="${{ matrix.vulnerabilities.url }}"
111+
VULN_DEP_NAME="${{ matrix.vulnerabilities.dependency }}"
112+
VULN_DEP_VERSION="${{ matrix.vulnerabilities.version }}"
113+
VULN_SOURCE="${{ matrix.vulnerabilities.source }}"
114+
VULN_MAIN_DEP_NAME="${{ matrix.vulnerabilities.main_dep_name }}"
115+
VULN_MAIN_DEP_PATH="${{ matrix.vulnerabilities.main_dep_path }}"
116+
NODEJS_STREAM="${{ inputs.nsolidStream }}"
117+
ACTION_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
118+
LABELS="${{ join(matrix.vulnerabilities.labels, ',') }}"
119+
120+
# Create issue title
121+
ISSUE_TITLE="${VULN_ID} (${VULN_DEP_NAME}) found on ${NODEJS_STREAM}"
122+
123+
# Create issue body
124+
ISSUE_BODY="A new vulnerability for ${VULN_DEP_NAME} ${VULN_DEP_VERSION} was found:
125+
Vulnerability ID: ${VULN_ID}
126+
Vulnerability URL: ${VULN_URL}"
127+
128+
# Add npm-specific info if applicable
129+
if [ "${VULN_SOURCE}" = "npm" ] && [ -n "${VULN_MAIN_DEP_NAME}" ]; then
130+
ISSUE_BODY="${ISSUE_BODY}
131+
Main Dependency: ${VULN_MAIN_DEP_NAME}
132+
Main Dependency Path: ${VULN_MAIN_DEP_PATH}"
133+
fi
134+
135+
ISSUE_BODY="${ISSUE_BODY}
136+
Failed run: ${ACTION_URL}"
137+
138+
# Check if issue already exists
139+
EXISTING_ISSUE=$(gh issue list --search "in:title ${ISSUE_TITLE}" --state open --json number,title --jq '.[] | select(.title == "'"${ISSUE_TITLE}"'") | .number')
140+
141+
if [ -n "${EXISTING_ISSUE}" ]; then
142+
echo "Updating existing issue #${EXISTING_ISSUE}: ${ISSUE_TITLE}"
143+
gh issue edit "${EXISTING_ISSUE}" --body "${ISSUE_BODY}"
144+
echo "Updated issue: https://github.com/${{ github.repository }}/issues/${EXISTING_ISSUE}"
145+
else
146+
echo "Creating new issue: ${ISSUE_TITLE}"
147+
ISSUE_NUMBER=$(gh issue create --title "${ISSUE_TITLE}" --body "${ISSUE_BODY}" --label "${LABELS}" --json number --jq .number)
148+
echo "Created issue: https://github.com/${{ github.repository }}/issues/${ISSUE_NUMBER}"
149+
fi

.github/workflows/format_matrix.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,40 +53,31 @@ def build_vulnerability_matrix(vulnerabilities_data: Dict[str, Any], nsolid_stre
5353

5454
matrix_include = []
5555

56-
# Extract runtime and nsolid versions from stream
57-
runtime_match = re.search(r'node-(v[0-9]+\.x)', nsolid_stream)
58-
runtime_version = runtime_match.group(1) if runtime_match else ""
59-
60-
nsolid_match = re.search(r'nsolid-(v[0-9]+\.x)', nsolid_stream)
61-
nsolid_version = nsolid_match.group(1) if nsolid_match else ""
62-
6356
for vuln in vulnerabilities:
6457
labels = generate_labels_for_vulnerability(vuln, nsolid_stream)
6558

66-
vuln_data = {
59+
matrix_entry = {
6760
"id": vuln["id"],
6861
"url": vuln["url"],
6962
"dependency": vuln["dependency"],
7063
"version": vuln["version"],
7164
"source": vuln["source"],
72-
"labels": labels,
73-
"runtime_version": runtime_version,
74-
"nsolid_version": nsolid_version
65+
"labels": labels
7566
}
7667

7768
# Add npm-specific fields if they exist
7869
if "severity" in vuln and vuln["severity"] is not None:
79-
vuln_data["severity"] = vuln["severity"]
70+
matrix_entry["severity"] = vuln["severity"]
8071
if "via" in vuln and vuln["via"]:
81-
vuln_data["via"] = vuln["via"]
72+
matrix_entry["via"] = vuln["via"]
8273
if "main_dep_name" in vuln and vuln["main_dep_name"] is not None:
83-
vuln_data["main_dep_name"] = vuln["main_dep_name"]
74+
matrix_entry["main_dep_name"] = vuln["main_dep_name"]
8475
if "main_dep_path" in vuln and vuln["main_dep_path"] is not None:
85-
vuln_data["main_dep_path"] = vuln["main_dep_path"]
76+
matrix_entry["main_dep_path"] = vuln["main_dep_path"]
8677
if "fix_available" in vuln and vuln["fix_available"] is not None:
87-
vuln_data["fix_available"] = vuln["fix_available"]
78+
matrix_entry["fix_available"] = vuln["fix_available"]
8879

89-
matrix_include.append({"vulnerabilities": vuln_data})
80+
matrix_include.append({"vulnerabilities": matrix_entry})
9081

9182
return {"include": matrix_include}
9283

0 commit comments

Comments
 (0)