Skip to content

Commit 1b1fdf8

Browse files
authored
chore: release prep for v1.24.0 (#144)
1 parent 319ea90 commit 1b1fdf8

File tree

11 files changed

+314
-181
lines changed

11 files changed

+314
-181
lines changed

.github/workflows/build-and-publish.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
- name: Set up Node.js
3939
uses: actions/setup-node@v6
4040
with:
41-
node-version: 22
41+
node-version: 24
4242
cache: npm
4343
cache-dependency-path: package-lock.json
4444

@@ -123,7 +123,7 @@ jobs:
123123
- name: Set up Node.js for npmjs
124124
uses: actions/setup-node@v6
125125
with:
126-
node-version: 22
126+
node-version: 24
127127
registry-url: https://registry.npmjs.org/
128128
cache: npm
129129
cache-dependency-path: package-lock.json
@@ -184,7 +184,7 @@ jobs:
184184
- name: Set up Node.js for GPR
185185
uses: actions/setup-node@v6
186186
with:
187-
node-version: 22
187+
node-version: 24
188188
registry-url: https://npm.pkg.github.com/
189189
cache: npm
190190
cache-dependency-path: package-lock.json

.github/workflows/lighthouse.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
- name: Setup Node.js
4545
uses: actions/setup-node@v6
4646
with:
47-
node-version: 22
47+
node-version: 24
4848
cache: npm
4949
cache-dependency-path: package-lock.json
5050

.github/workflows/meta-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
- name: Set up Node.js
2626
uses: actions/setup-node@v6
2727
with:
28-
node-version: 22
28+
node-version: 24
2929

3030
- name: Install dependencies
3131
run: npm ci

.github/workflows/publish-test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
- name: Set up Node.js
3737
uses: actions/setup-node@v6
3838
with:
39-
node-version: 22
39+
node-version: 24
4040
cache: npm
4141
cache-dependency-path: package-lock.json
4242

@@ -121,7 +121,7 @@ jobs:
121121
- name: Set up Node.js for npmjs
122122
uses: actions/setup-node@v6
123123
with:
124-
node-version: 22
124+
node-version: 24
125125
registry-url: https://registry.npmjs.org/
126126
cache: npm
127127
cache-dependency-path: package-lock.json
@@ -182,7 +182,7 @@ jobs:
182182
- name: Set up Node.js for GPR
183183
uses: actions/setup-node@v6
184184
with:
185-
node-version: 22
185+
node-version: 24
186186
registry-url: https://npm.pkg.github.com/
187187
cache: npm
188188
cache-dependency-path: package-lock.json

.github/workflows/secret-scan.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# .github/workflows/secret-scan.yml
2+
#
3+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
4+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
5+
# This file is part of Network Pro
6+
7+
name: Secret Scan (Gitleaks)
8+
9+
on:
10+
pull_request:
11+
schedule:
12+
- cron: '0 8 * * *' # nightly scan at 8 AM UTC
13+
workflow_dispatch:
14+
15+
jobs:
16+
gitleaks-scan:
17+
runs-on: ubuntu-24.04
18+
permissions:
19+
contents: read
20+
security-events: write
21+
steps:
22+
# ---------------------------------------------------------------------
23+
# Checkout the full repo history (needed for Gitleaks to scan all commits)
24+
# ---------------------------------------------------------------------
25+
- uses: actions/checkout@v5
26+
with:
27+
fetch-depth: 0
28+
29+
# ---------------------------------------------------------------------
30+
# Run Gitleaks scan
31+
# Uses org license key (safe because GitHub never passes secrets to forks)
32+
# ---------------------------------------------------------------------
33+
- name: Run Gitleaks scan
34+
id: gitleaks
35+
uses: gitleaks/gitleaks-action@v2
36+
env:
37+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38+
GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}
39+
GITLEAKS_REPORT_PATH: gitleaks-report.json
40+
41+
# ---------------------------------------------------------------------
42+
# LAYER 2: Secret-handling / fork guard
43+
# Upload artifact only if workflow runs in trusted context
44+
# (either not a PR, or a PR from the same repo)
45+
# ---------------------------------------------------------------------
46+
- name: Upload Gitleaks Report
47+
if: always() && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name != 'pull_request')
48+
uses: actions/upload-artifact@v4
49+
with:
50+
name: gitleaks-report
51+
path: gitleaks-report.json
52+
53+
# ---------------------------------------------------------------------
54+
# LAYER 1: Output redaction
55+
# Public-safe summary – shows only secret descriptions, hides file paths.
56+
# ---------------------------------------------------------------------
57+
- name: Post Gitleaks summary
58+
if: always()
59+
run: |
60+
echo "### 🧩 Gitleaks Scan Summary" >> $GITHUB_STEP_SUMMARY
61+
if [ -s gitleaks-report.json ]; then
62+
count=$(jq '.findings | length' gitleaks-report.json)
63+
if [ "$count" -gt 0 ]; then
64+
echo "🚨 **$count potential secret$( [ "$count" -ne 1 ] && echo "s" ) detected!**" >> $GITHUB_STEP_SUMMARY
65+
echo "" >> $GITHUB_STEP_SUMMARY
66+
# 🔒 Redacted output: no file paths or secret values
67+
jq -r '.findings[] | "- \(.Description) (at undisclosed path)"' gitleaks-report.json | head -n 10 >> $GITHUB_STEP_SUMMARY
68+
echo "" >> $GITHUB_STEP_SUMMARY
69+
echo "_Full report available in Artifacts section (maintainers only)._ " >> $GITHUB_STEP_SUMMARY
70+
else
71+
echo "✅ No secrets detected." >> $GITHUB_STEP_SUMMARY
72+
fi
73+
else
74+
echo "⚠️ No report file found." >> $GITHUB_STEP_SUMMARY
75+
fi
76+
77+
# ---------------------------------------------------------------------
78+
# LAYER 2: Secret-handling / fork guard
79+
# Create issue only in trusted repo context (avoids using tokens on forks)
80+
# ---------------------------------------------------------------------
81+
- name: Create issue for detected secrets
82+
if: failure() && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name != 'pull_request')
83+
uses: actions/github-script@v7
84+
with:
85+
github-token: ${{ secrets.GITHUB_TOKEN }}
86+
script: |
87+
const issueTitle = `🚨 Secret(s) detected in ${context.repo.repo}`;
88+
const issueBody = `Gitleaks found potential secrets in commit ${context.sha}.\n\nCheck workflow logs and artifacts for details.`;
89+
await github.rest.issues.create({
90+
owner: context.repo.owner,
91+
repo: context.repo.repo,
92+
title: issueTitle,
93+
body: issueBody,
94+
labels: ['security', 'gitleaks']
95+
});
96+
97+
# ---------------------------------------------------------------------
98+
# LAYER 2: Secret-handling / fork guard
99+
# Send ntfy alert only for trusted repo context.
100+
# ---------------------------------------------------------------------
101+
- name: Send ntfy notification
102+
if: failure() && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name != 'pull_request')
103+
run: |
104+
curl -d "🚨 Gitleaks found secrets in repo: $GITHUB_REPOSITORY on commit $GITHUB_SHA" \
105+
https://ntfy.neteng.pro/${{ secrets.NTFY_TOPIC }}

.github/workflows/templates/publish.template.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
- name: Set up Node.js
4747
uses: actions/setup-node@v6
4848
with:
49-
node-version: 22
49+
node-version: 24
5050
cache: npm
5151
cache-dependency-path: package-lock.json
5252

@@ -131,7 +131,7 @@ jobs:
131131
- name: Set up Node.js for npmjs
132132
uses: actions/setup-node@v6
133133
with:
134-
node-version: 22
134+
node-version: 24
135135
registry-url: https://registry.npmjs.org/
136136
cache: npm
137137
cache-dependency-path: package-lock.json
@@ -192,7 +192,7 @@ jobs:
192192
- name: Set up Node.js for GPR
193193
uses: actions/setup-node@v6
194194
with:
195-
node-version: 22
195+
node-version: 24
196196
registry-url: https://npm.pkg.github.com/
197197
cache: npm
198198
cache-dependency-path: package-lock.json

.node-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
22.21.1
1+
24.11.0

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
22.21.1
1+
24.11.0

CHANGELOG.md

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,47 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
2222

2323
---
2424

25+
## [1.24.0]
26+
27+
### Added
28+
29+
- Introduced [GitLeaks](https://github.com/gitleaks/gitleaks-action) secret scan CI action as `.github/workflows/secret-scan.yml`.
30+
- Introduced two-phase scan strategy:
31+
- **Pull Request scans** to detect secrets before merge.
32+
- **Nightly scheduled scans** (`cron: "0 4 * * *"`) for full-history coverage.
33+
- Added **artifact upload** for the `gitleaks-report.json` file, allowing maintainers to download complete results from the Actions UI.
34+
- Implemented **public-safe summary output** in `$GITHUB_STEP_SUMMARY`:
35+
- Displays secret descriptions only.
36+
- Redacts file paths and other sensitive details.
37+
- Provides a concise, readable summary of findings.
38+
- Added **GitHub Issue creation step** to automatically open a security issue when leaks are detected.
39+
- Integrated optional **ntfy.sh notifications** for real-time alerting on secret leaks.
40+
- Implemented **fork-safety guards** to prevent workflows triggered from untrusted forks from:
41+
- Accessing organization secrets (license keys, ntfy topic).
42+
- Uploading artifacts or creating issues.
43+
- Added descriptive comments and logical layer separation:
44+
- **Layer 1 – Output Redaction**
45+
- **Layer 2 – Secret / Fork Handling**
46+
47+
### Changed
48+
49+
- Bumped project version to `v1.23.1`.
50+
- Updated `.node-version` and `.nvmrc` to utilize **Node.js** `24.11.0` (LTS).
51+
- Updated CI workflows to utilize `node-version: 24`:
52+
- `build-and-publish.yml`
53+
- `lighthouse.yml`
54+
- `meta-check.yml`
55+
- `playwright.yml`
56+
- `publish-test.yml`
57+
- `templates/publish.template.yml`
58+
- Updated dependencies:
59+
- `@eslint/js` `^9.38.0``^9.39.0`
60+
- `eslint` `^9.38.0``^9.39.0`
61+
- `globals` `^16.4.0``^16.5.0`
62+
- `posthog-js` `^1.282.0``^1.284.0`
63+
64+
---
65+
2566
## [1.23.0] - 2025-10-30
2667

2768
### Documentation
@@ -1362,7 +1403,8 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
13621403

13631404
<!-- Link references -->
13641405

1365-
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.23.0...HEAD
1406+
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.24.0...HEAD
1407+
[1.24.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.0
13661408
[1.23.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.23.0
13671409
[1.22.2]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.22.2
13681410
[1.22.1]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.22.1

0 commit comments

Comments
 (0)