Sanitized snapshot of private source e6784dc71e34681eca4ac52b0f9fe9efc9ce26ca.\n\nAI-assisted implementation reviewed by Cole Speelman. Signed-off-by: Cole Speelman <crspeelman@gmail.com>
This commit is contained in:
@@ -1,54 +0,0 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
name: cross-platform-release-gate
|
||||
on:
|
||||
workflow_dispatch:
|
||||
permissions:
|
||||
contents: read
|
||||
jobs:
|
||||
verify:
|
||||
name: ${{ matrix.os }} / Go ${{ matrix.go }}
|
||||
runs-on: ${{ matrix.runner }}
|
||||
timeout-minutes: 30
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: Linux
|
||||
runner: himesan-go1266
|
||||
go: '1.26.6'
|
||||
- os: Windows
|
||||
runner: himesan-windows-go1266
|
||||
go: '1.26.6'
|
||||
steps:
|
||||
- name: Require the repository owner on Linux
|
||||
if: matrix.os != 'Windows'
|
||||
run: test "$GITHUB_ACTOR" = gamertan
|
||||
- name: Require the repository owner on Windows
|
||||
if: matrix.os == 'Windows'
|
||||
shell: pwsh
|
||||
run: if ($env:GITHUB_ACTOR -ne 'gamertan') { throw 'untrusted actor' }
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Assert the pinned runner toolchain
|
||||
if: matrix.os != 'Windows'
|
||||
run: test "$(go env GOVERSION)" = "go${{ matrix.go }}"
|
||||
- name: Assert the pinned Windows toolchain
|
||||
if: matrix.os == 'Windows'
|
||||
shell: pwsh
|
||||
run: if ((& go env GOVERSION) -ne 'go${{ matrix.go }}') { throw 'unexpected Go toolchain' }
|
||||
- name: Verify on Linux
|
||||
if: matrix.os != 'Windows'
|
||||
run: ./scripts/verify.sh
|
||||
- name: Verify on Windows
|
||||
if: matrix.os == 'Windows'
|
||||
shell: pwsh
|
||||
run: ./scripts/verify.ps1
|
||||
- name: Require an unchanged checkout on Linux
|
||||
if: matrix.os != 'Windows'
|
||||
run: test -z "$(git status --porcelain=v1 --untracked-files=all)"
|
||||
- name: Require an unchanged checkout on Windows
|
||||
if: matrix.os == 'Windows'
|
||||
shell: pwsh
|
||||
run: if (& git status --porcelain=v1 --untracked-files=all) { throw 'dirty checkout' }
|
||||
@@ -17,6 +17,11 @@ The first preview targets modest Linux servers, local files, SQLite, and normal
|
||||
Go binaries. It requires no Redis, message broker, hosted identity provider,
|
||||
telemetry service, or JavaScript framework.
|
||||
|
||||
Linux is the required and supported release platform. WSL may be used as a
|
||||
Linux development environment. Native Windows is not a release gate or support
|
||||
promise; downstream users may evaluate the ordinary Go packages elsewhere
|
||||
without turning that portability into a maintained compatibility claim.
|
||||
|
||||
## Packages
|
||||
|
||||
- `requestmeta`: trusted-proxy resolution, HTTPS/origin metadata, and request IDs.
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
.gitattributes
|
||||
.gitea/workflows/assurance.yml
|
||||
.gitea/workflows/cross-platform.yml
|
||||
.gitea/workflows/verify.yml
|
||||
.gitignore
|
||||
CHANGELOG.md
|
||||
@@ -47,7 +46,6 @@ scripts/export-public.sh
|
||||
scripts/public-snapshot.allow
|
||||
scripts/test-public-snapshot.sh
|
||||
scripts/verify.sh
|
||||
scripts/verify.ps1
|
||||
starters/basic/.env.example
|
||||
starters/basic/README.md
|
||||
starters/basic/main.go
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
$ErrorActionPreference = "Stop"
|
||||
$root = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
|
||||
Push-Location $root
|
||||
try {
|
||||
$failed = $false
|
||||
Get-ChildItem -Recurse -File | ForEach-Object {
|
||||
$relative = [IO.Path]::GetRelativePath($root, $_.FullName).Replace('\', '/')
|
||||
if ($relative.StartsWith('.git/') -or $relative.StartsWith('LICENSES/') -or $relative -eq 'go.sum') { return }
|
||||
if ($relative.StartsWith('starters/') -or $relative.StartsWith('examples/')) { $expected = '0BSD' }
|
||||
elseif ($relative.StartsWith('scripts/') -or $relative.StartsWith('.gitea/') -or $relative.StartsWith('services/')) { $expected = 'AGPL-3.0-only' }
|
||||
else { $expected = 'MPL-2.0' }
|
||||
$header = (Get-Content -LiteralPath $_.FullName -TotalCount 5) -join "`n"
|
||||
if (-not $header.Contains("SPDX-License-Identifier: $expected")) {
|
||||
Write-Error "license mismatch: $relative expected $expected"
|
||||
$failed = $true
|
||||
}
|
||||
}
|
||||
if ($failed) { throw "license boundary failed" }
|
||||
|
||||
$unformatted = & gofmt -l .
|
||||
if ($LASTEXITCODE -ne 0 -or $unformatted) { throw "gofmt check failed: $unformatted" }
|
||||
& go test ./...
|
||||
if ($LASTEXITCODE -ne 0) { throw "go test failed" }
|
||||
& go test -race ./...
|
||||
if ($LASTEXITCODE -ne 0) { throw "race test failed" }
|
||||
& go vet ./...
|
||||
if ($LASTEXITCODE -ne 0) { throw "go vet failed" }
|
||||
$build = Join-Path ([IO.Path]::GetTempPath()) ("gamertan-web-" + [guid]::NewGuid().ToString('N'))
|
||||
New-Item -ItemType Directory -Path $build | Out-Null
|
||||
try {
|
||||
& go build -trimpath -o (Join-Path $build 'basic.exe') ./starters/basic
|
||||
if ($LASTEXITCODE -ne 0) { throw "starter build failed" }
|
||||
} finally {
|
||||
Remove-Item -LiteralPath $build -Recurse -Force
|
||||
}
|
||||
& git diff --check
|
||||
if ($LASTEXITCODE -ne 0) { throw "git diff check failed" }
|
||||
} finally {
|
||||
Pop-Location
|
||||
}
|
||||
Reference in New Issue
Block a user