Skip to content

Commit 911b4d6

Browse files
committed
ci: harden heuristic PR build (corepack, non-fatal builds, tarball)
- Enable corepack; prep yarn if yarn.lock present - Make Node/Rust/Go builds best-effort (won't fail the job) - Use tar.gz instead of zip to avoid zip dependency - Keep scanning entire dist-pr directory with --scan-archive=yes
1 parent 43d5102 commit 911b4d6

1 file changed

Lines changed: 19 additions & 15 deletions

File tree

.github/workflows/clam-av-scan.yml

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ jobs:
3737
with:
3838
node-version: '20'
3939

40+
- name: Enable Corepack (Node)
41+
if: steps.meta.outputs.has_package_json == 'true'
42+
run: |
43+
npm i -g corepack || true
44+
corepack enable || true
45+
if [ "${{ steps.meta.outputs.has_yarn_lock }}" = "true" ]; then corepack prepare yarn@stable --activate || true; fi
46+
4047
- name: Setup pnpm
4148
if: steps.meta.outputs.has_pnpm_lock == 'true'
4249
uses: pnpm/action-setup@v4
@@ -46,24 +53,22 @@ jobs:
4653
- name: Install deps (Node)
4754
if: steps.meta.outputs.has_package_json == 'true'
4855
run: |
49-
if [ "${{ steps.meta.outputs.has_pnpm_lock }}" = "true" ]; then pnpm install --frozen-lockfile || pnpm install; exit 0; fi
50-
if [ "${{ steps.meta.outputs.has_package_lock }}" = "true" ]; then npm ci || npm i; exit 0; fi
51-
if [ "${{ steps.meta.outputs.has_yarn_lock }}" = "true" ]; then yarn install --frozen-lockfile || yarn install; exit 0; fi
52-
echo "No Node lockfile found; skipping install"
56+
if [ "${{ steps.meta.outputs.has_pnpm_lock }}" = "true" ]; then pnpm install --frozen-lockfile || pnpm install || true; fi
57+
if [ "${{ steps.meta.outputs.has_package_lock }}" = "true" ]; then npm ci || npm i || true; fi
58+
if [ "${{ steps.meta.outputs.has_yarn_lock }}" = "true" ]; then (yarn --version || true) && (yarn install --frozen-lockfile || yarn install || true); fi
5359
5460
- name: Build (Node)
5561
if: steps.meta.outputs.has_package_json == 'true'
5662
run: |
57-
set -e
58-
pnpm run -c build || pnpm -r build || pnpm -w build || \n npm run build || yarn build || echo 'No Node build script succeeded; continuing'
63+
pnpm run -c build || pnpm -r build || pnpm -w build || npm run build || yarn build || true
5964
6065
- name: Setup Rust
6166
if: steps.meta.outputs.has_cargo == 'true'
6267
uses: dtolnay/rust-toolchain@stable
6368

6469
- name: Build (Rust)
6570
if: steps.meta.outputs.has_cargo == 'true'
66-
run: cargo build --release
71+
run: cargo build --release || true
6772

6873
- name: Setup Go
6974
if: steps.meta.outputs.has_go == 'true'
@@ -74,22 +79,21 @@ jobs:
7479
- name: Build (Go)
7580
if: steps.meta.outputs.has_go == 'true'
7681
run: |
77-
set -e
7882
mkdir -p dist
7983
if ls cmd >/dev/null 2>&1; then
80-
for d in cmd/*; do name=$(basename "$d"); go build -o "dist/$name" "./$d"; done
84+
for d in cmd/*; do name=$(basename "$d"); go build -o "dist/$name" "./$d" || true; done
8185
else
82-
go build -o dist/opencode ./...
86+
go build -o dist/opencode ./... || true
8387
fi
8488
8589
- name: Package build outputs
8690
run: |
8791
set -e
8892
mkdir -p dist-pr
89-
if [ -d dist ]; then zip -qr dist-pr/scan.zip dist
90-
elif [ -d build ]; then zip -qr dist-pr/scan.zip build
91-
elif [ -d target/release ]; then zip -qr dist-pr/scan.zip target/release
92-
else zip -qr dist-pr/scan.zip . -x '.git/*' '.github/*'
93+
if [ -d dist ]; then tar -czf dist-pr/scan.tgz -C dist .
94+
elif [ -d build ]; then tar -czf dist-pr/scan.tgz -C build .
95+
elif [ -d target/release ]; then tar -czf dist-pr/scan.tgz -C target/release .
96+
else tar -czf dist-pr/scan.tgz --exclude=.git --exclude=.github .
9397
fi
9498
9599
- name: Install ClamAV
@@ -109,7 +113,7 @@ jobs:
109113
name: clamav-pr-scan-results
110114
path: |
111115
clamav-pr.log
112-
dist-pr/scan.zip
116+
dist-pr/scan.tgz
113117
114118
clamav-scan:
115119
if: github.event_name == 'release' || github.event_name == 'workflow_dispatch'

0 commit comments

Comments
 (0)