EN /HU | Belépés

DOS

A DOS-programjaink C++98-ban készülnek, Open Watcom v2-vel fordítva: egy 16 bites DOS-programfájl (8086, large modell), és ahol van, egy 32 bites Win32-es konzolos build Windows 95-re és újabbra. Fej nélküli DOSBox Staging-ben és Wine alatt teszteljük őket, a közös kód a DOSLIB.

Open Watcom v2: https://github.com/open-watcom/open-watcom-v2 DOSBox Staging: https://www.dosbox-staging.org Eszközrepó: https://git.teletypegames.org/build/dos-tools Ezzel az eszközlánccal készülő programok: GMENU, DOSINST, BMAGIC, TTGWIKI


Egy program repója

Mint minden más platformon, egy DOS-program repójában egy egysoros marker és a metaadat van; a pipeline-t a teletypegames.org WarpEngine-je szolgálja ki, és minden, amit futtat, a builder image-ben van.

YAML
# .woodpecker.yaml
platform: dos
JSON
// metadata.json
{
  "name": "dosinst",
  "version": "0.6.1",
  "title": "DOSINST",
  "author": "Teletype Games",
  "desc": "Installs, updates and removes DOS programs from an FTP store.",
  "license": "GPL-3.0",
  "category": "tool",
  "dos": {
    "folder": "DOSINST",
    "files": ["DOSINST.EXE", "DOSINST.CFG", "README.md", "LICENSE"],
    "settings": ["DOSINST.CFG"],
    "store_name": "DOSInst Store",
    "store_description": "Installs, updates and removes DOS programs from this store.",
    "win32_folder": "DOSINSTW",
    "win32_files": ["DOSINSTW.EXE", "DOSINST.CFG", "README.md", "LICENSE"],
    "win32_store_name": "DOSInst Store for Windows",
    "win32_store_description": "DOSINST for Windows 95 and later."
  }
}

A dos szakasz mondja meg, mi kerül egy kiadásba: a mappa, amelyként a program települ, a benne lévő fájlok, a settings, amelyek a kiadás zipjében benne vannak, de egy bolti frissítésben soha (így egy frissítés megtartja a telepített program beállításait), és a név meg a szöveg, amit a DOSINST listája mutat. A win32_ kulcsok ugyanezek egy Win32-es buildhez, opcionálisan.

A többi konvenció: a SOURCE/build.sh a $WATCOM-beli Open Watcommal a repó gyökerébe fordítja a programfájlokat, a tesztek pedig ott vannak, ahol a parancsok keresik őket. A verzió a metadata.json version mezője, mint minden platformon; ha a SOURCE/app/version.h-ban van Version, annak egyeznie kell vele (a kettőt együtt emeld).

A pipeline

Push után a pipeline sorrendje: version → test → tag; a tagre: version → test → package → upload → publish → release. A version lépés az engine közös lépése, és a DOS csak tagből ad ki (release_rule "tag"), így a teszt utáni lépések csak tagre futnak. A taget a pipeline maga készíti (WarpEngine 1.9): a metadata.json új version-je a masterre pusholva a tag lépéstől megkapja a vX.Y.Z tagjét, és ez a tag adja ki. Egy push, amely nem emeli a verziót, csak tesztel; a masteren kívül a build dev-<verzió>-<ág>, és a dev-<ág> tagje áthelyeződik, ami a dev buildet a katalógusba kiadja, de a boltba soha (a polc a legújabb nem dev- kiadást veszi). 2026-10-27-ig a DOS-repók metadata.json-jában nem volt verzió, és kézi taggel adtak ki; a kézi tag ma is működik, és egyeznie kell a verzióval.

Lépés Parancs Mikor Mit csinál
test dos-check minden esemény kódstílus (a DOSLIB clang-format-burkolója), unit-tesztek (SOURCE/test/unit/run.sh), egy szerveroldal Python-tesztjei (server/test)
test dos-build minden esemény SOURCE/build.sh, utána a fájllisták minden .EXE-jének meg kell lennie
test dos-test minden esemény SOURCE/test/run.sh (DOS fej nélküli DOSBox Staging-ben), SOURCE/test/runw32.sh (Win32 Wine alatt), SOURCE/test/run.py (DOSBox-képernyőtesztek)
tag push után az engine közös lépése (1.9): egy új verzió megkapja a vX.Y.Z tagjét, és annak pipeline-ja futtatja a lenti sorokat; egy már tagelt verzió nem ad ki semmit; egy dev build az ága dev-<ág> tagjét helyezi át
package dos-pack egy tag a mappák zipjei és minden .EXE külön, a .release-assets-ben felsorolva
upload, publish egy tag a mappa zipje a cartridge asset, a Win32-es zip a win_x86; a feltöltött metaadat megtartja a dos szakaszt
release egy verziótag az engine közös kiadási lépése: a Gitea-kiadás a RELEASE_NOTES.md-vel, csatolva a .release-assets fájljait

Nincs store lépés és nincs deploy-kulcs: a titkok csak a globális application_token és gitea_token. Az FTP-bolt, a ftp://ftp.teletypegames.org/APPS, ahonnan a DOSINST telepít és frissít, a WarpEngine DOS-polca (layout: "folders"). Az engine minden publikáláskor a katalógusból építi újra: a zipből és a dos szakaszból megírja a mappákat a settings fájljaik nélkül, egy INFO.INI-vel és egy FILES.LST-vel. Egy a katalógusban elrejtett vagy törölt program kikerül a boltból.

A builder image

git.teletypegames.org/build/dos-builder (az eszközrepó builder.Dockerfile-ja): Open Watcom v2, DOSBox Staging (a /opt/dosbox-staging-ben, a PATH-on kívül) és a Debian DOSBoxa (a PATH-on, a képernyőtesztekhez), 32 bites Wine, g++, Python pyftpdlibbel, clang-format, zip, jq és curl, a dos-* parancsokkal. A rögzített verziók a /opt/dos-ci/versions-ben vannak. Ugyanez az image helyben is lefuttatja egy program ellenőrzéseit:

SH
docker run --rm -v "$PWD:/workspace" git.teletypegames.org/build/dos-builder:latest \
  sh -c 'dos-check && dos-build && dos-test && TAG=v1.2.3 dos-pack'