Skip to content

Commit f866e22

Browse files
committed
release: v1.8.2 — harden release workflow against runner outages
Release workflow changes (.github/workflows/release.yml) - Binary jobs now have a 30-minute timeout and continue-on-error, so a scarce runner (e.g. macos-13 for darwin/x86_64) can no longer queue forever and cancel the entire release. - Bundle job runs with `if: always()` and gracefully skips any (os,arch) whose binary artifact wasn't produced, so the rest of the matrix still publishes. - Docker job matrix now also uses continue-on-error so one flavor regression doesn't kill the other two. - Publish job runs with `if: always()` on any v* tag, so it uploads whatever artifacts did succeed instead of being skipped when one matrix entry fails. Version bump: 1.8.1 -> 1.8.2.
1 parent 87a808c commit f866e22

3 files changed

Lines changed: 33 additions & 7 deletions

File tree

.github/workflows/release.yml

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ jobs:
2121
binaries:
2222
name: Binary (${{ matrix.os }} / ${{ matrix.arch }})
2323
runs-on: ${{ matrix.runner }}
24+
# Bound the job so that an unavailable runner (e.g. scarce macos-13) cannot
25+
# leave the job queued forever and cancel the whole release.
26+
timeout-minutes: 30
27+
continue-on-error: true
2428
strategy:
2529
fail-fast: false
2630
matrix:
@@ -93,8 +97,11 @@ jobs:
9397
bundles:
9498
name: Portable bundle (${{ matrix.os }})
9599
needs: binaries
100+
if: always()
96101
runs-on: ubuntu-latest
102+
continue-on-error: true
97103
strategy:
104+
fail-fast: false
98105
matrix:
99106
include:
100107
- os: linux
@@ -120,12 +127,25 @@ jobs:
120127
steps:
121128
- uses: actions/checkout@v4
122129

123-
- uses: actions/download-artifact@v4
130+
# If the matching binary job was skipped / cancelled / failed, the
131+
# artifact will not exist and this step returns an error. We swallow
132+
# that gracefully so the rest of the matrix still publishes.
133+
- name: Download binary artifact
134+
id: dl
135+
uses: actions/download-artifact@v4
136+
continue-on-error: true
124137
with:
125138
name: snispf-${{ matrix.os }}-${{ matrix.arch }}
126139
path: ./_bin
127140

141+
- name: Stop if binary is missing
142+
if: steps.dl.outcome != 'success'
143+
run: |
144+
echo "::warning::Binary for ${{ matrix.os }}/${{ matrix.arch }} was not produced; skipping bundle."
145+
exit 0
146+
128147
- name: Assemble bundle
148+
if: steps.dl.outcome == 'success'
129149
run: |
130150
set -eu
131151
NAME="snispf-${{ matrix.os }}-${{ matrix.arch }}"
@@ -142,14 +162,16 @@ jobs:
142162
fi
143163
144164
- name: Pack tar.gz
145-
if: matrix.archive == 'tar.gz'
165+
if: steps.dl.outcome == 'success' && matrix.archive == 'tar.gz'
146166
run: tar -czf "snispf-${{ matrix.os }}-${{ matrix.arch }}.tar.gz" "snispf-${{ matrix.os }}-${{ matrix.arch }}"
147167

148168
- name: Pack zip
149-
if: matrix.archive == 'zip'
169+
if: steps.dl.outcome == 'success' && matrix.archive == 'zip'
150170
run: zip -r "snispf-${{ matrix.os }}-${{ matrix.arch }}.zip" "snispf-${{ matrix.os }}-${{ matrix.arch }}"
151171

152-
- uses: actions/upload-artifact@v4
172+
- name: Upload bundle
173+
if: steps.dl.outcome == 'success'
174+
uses: actions/upload-artifact@v4
153175
with:
154176
name: bundle-${{ matrix.os }}-${{ matrix.arch }}
155177
path: snispf-${{ matrix.os }}-${{ matrix.arch }}.${{ matrix.archive }}
@@ -178,6 +200,7 @@ jobs:
178200
docker:
179201
name: Docker (${{ matrix.flavor }})
180202
runs-on: ubuntu-latest
203+
continue-on-error: true
181204
strategy:
182205
fail-fast: false
183206
matrix:
@@ -251,7 +274,10 @@ jobs:
251274
publish:
252275
name: Publish GitHub Release
253276
needs: [binaries, bundles, python-dist, docker]
254-
if: startsWith(github.ref, 'refs/tags/v')
277+
# Run as long as this is a version tag, even if one of the matrix jobs
278+
# above failed / was cancelled (e.g. scarce macos-13 runner). We
279+
# publish whatever artifacts we successfully produced.
280+
if: always() && startsWith(github.ref, 'refs/tags/v')
255281
runs-on: ubuntu-latest
256282
steps:
257283
- uses: actions/checkout@v4

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "snispf"
7-
version = "1.8.1"
7+
version = "1.8.2"
88
description = "SNISPF - Cross-platform DPI bypass tool via SNI spoofing"
99
readme = "README.md"
1010
license = {text = "MIT"}

sni_spoofing/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
SNISPF - Cross-platform SNI spoofing and DPI bypass tool.
33
"""
44

5-
__version__ = "1.8.1"
5+
__version__ = "1.8.2"
66
__author__ = "Rainman69"

0 commit comments

Comments
 (0)