104 lines
4.3 KiB
Markdown
104 lines
4.3 KiB
Markdown
# Gitea releases for this fork
|
|
|
|
The release destination is
|
|
https://server2.sorokin-oleg-edu.xyz/replicated/learnharness.
|
|
Version **0.4.0 targets Linux x64**. Windows is deferred until a native Windows
|
|
builder is available. The upstream GitHub workflow and three-platform packaging
|
|
configuration remain available as reference in `.github/workflows/release.yml`
|
|
and `electron-builder.yml`.
|
|
|
|
Official fork packages use `electron-builder.gitea.yml`, which inherits the
|
|
upstream packaging and replaces its update origin with:
|
|
|
|
```
|
|
https://server2.sorokin-oleg-edu.xyz/replicated/learnharness/releases/download/latest
|
|
```
|
|
|
|
Gitea's `latest` alias resolves the most recent published, non-prerelease release.
|
|
Drafts do not become updates. The repository and published downloads must be
|
|
public; no API credential is embedded in the application.
|
|
|
|
## Preparing Linux packages
|
|
|
|
Use Node **26**, matching upstream's release gates. Build from a clean checkout
|
|
of the intended release commit. Keep `.env*`, local keys, and application data out
|
|
of the build directory. Next can copy loaded environment files after tracing;
|
|
`build-server.mjs` refuses a payload containing them. A clean worktree avoids
|
|
loading these files in the first place.
|
|
|
|
```sh
|
|
npm ci
|
|
npm run typecheck
|
|
npm test
|
|
npm run lint
|
|
ELECTRON_RUN_AS_NODE=1 npx electron --import tsx --test tests/pdf-native-render.test.ts tests/pdf-ops.test.ts tests/svg-native-render.test.ts tests/browser-service.test.ts
|
|
npm run desktop:release:linux
|
|
```
|
|
|
|
The release script builds the standalone server, initializes providers offline,
|
|
curates the payload, boots it under Electron's bundled Node, packages AppImage
|
|
and Debian installers, checks the packaged Gitea updater configuration, creates SHA-256 checksums, and verifies update metadata
|
|
against the actual installer bytes.
|
|
|
|
Run the packaged-runtime gates too:
|
|
|
|
```sh
|
|
node scripts/smoke-provider-runtime.mjs --standalone dist/linux-unpacked/resources/server/standalone
|
|
node scripts/smoke-provider-runtime.mjs --standalone dist/linux-unpacked/resources/server/standalone --runtime dist/linux-unpacked/learnharness
|
|
xvfb-run -a node scripts/smoke-demo-runtime.mjs --standalone dist/linux-unpacked/resources/server/standalone --runtime dist/linux-unpacked/learnharness --browser
|
|
```
|
|
|
|
The Linux 0.4.0 release has exactly four attachments:
|
|
|
|
- `LearnHarness-0.4.0-x86_64.AppImage`
|
|
- `LearnHarness-0.4.0-amd64.deb`
|
|
- `latest-linux.yml`
|
|
- `SHA256SUMS`
|
|
|
|
## Preparing the Gitea draft
|
|
|
|
Commit and push the release source, then push its exact annotated tag:
|
|
|
|
```sh
|
|
git tag -a v0.4.0 -m 'LearnHarness 0.4.0'
|
|
git push gitea main v0.4.0
|
|
```
|
|
|
|
Supply `GITEA_TOKEN` only to the upload command. A token file may remain outside
|
|
the clean build checkout:
|
|
|
|
```sh
|
|
node --env-file=/path/to/private/release.env scripts/gitea-release.mjs upload dist
|
|
```
|
|
|
|
The tool requires the tag to exist in Gitea, creates or reuses one draft at that
|
|
tag, uploads missing assets, and downloads every attachment to verify its actual
|
|
SHA-256 against the local verified build. Existing mismatched attachments and
|
|
published releases are refused. It never publishes or changes repository
|
|
visibility. Release notes come from `docs/release-0.4.0.md`.
|
|
|
|
A separate verification can be repeated without changing the draft:
|
|
|
|
```sh
|
|
node --env-file=/path/to/private/release.env scripts/gitea-release.mjs verify-remote dist
|
|
```
|
|
|
|
Review the verified draft before publication. Only after publication will the
|
|
public `latest` feed and in-app automatic updates expose this version.
|
|
|
|
## Gitea Actions
|
|
|
|
`.gitea/workflows/release.yml` provides the same Linux gates through a manual
|
|
workflow with an existing release tag as input. It requires a native Linux x64
|
|
runner labeled `ubuntu-24.04`, the label used by upstream's Linux release job,
|
|
plus the native Electron dependencies and `xvfb-run`. There were no runners
|
|
registered when 0.4.0 was prepared, so its packages are built locally. A tag push
|
|
does not queue a job that cannot run.
|
|
|
|
The workflow uses the repository's ephemeral `GITEA_TOKEN` with release-write
|
|
permission only in the final upload step. It checks out the requested tag without
|
|
persisting credentials and leaves the result as a verified draft. Public pull
|
|
requests cannot trigger this publishing workflow. Add Windows only with a native
|
|
Windows build and its corresponding smoke checks; do not substitute a Linux
|
|
standalone payload into a Windows installer.
|