From 649b73b3f86f59d2f7d045fdd5f77ca140246d1a Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Wed, 4 Mar 2026 15:01:55 +0100 Subject: [PATCH] UPDATE_SERVER url update --- .woodpecker.yml | 2 +- Makefile | 2 +- infra.md | 289 ------------------------------------------------ 3 files changed, 2 insertions(+), 291 deletions(-) delete mode 100644 infra.md diff --git a/.woodpecker.yml b/.woodpecker.yml index aa3bd4a..e103b89 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -53,7 +53,7 @@ steps: - name: update image: alpine environment: - UPDATE_SERVER: https://games.vps.teletype.hu + UPDATE_SERVER: https://games.teletype.hu UPDATE_SECRET: from_secret: update_secret_key commands: diff --git a/Makefile b/Makefile index 41c5fc2..86e963b 100644 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ DROPAREA_HOST ?= vps.teletype.hu DROPAREA_PORT ?= 2223 DROPAREA_TARGET_PATH ?= /home/drop DROPAREA_USER ?= drop -UPDATE_SERVER ?= https://games.vps.teletype.hu +UPDATE_SERVER ?= https://games.teletype.hu all: build diff --git a/infra.md b/infra.md deleted file mode 100644 index 1455d86..0000000 --- a/infra.md +++ /dev/null @@ -1,289 +0,0 @@ -# Server -```mermaid -graph TD - Internet --> Nginx - - Nginx --> Traefik - Traefik --> Gitea - Gitea --> GiteaDB[(Gitea data / SQLite)] - - Traefik --> WoodpeckerServer - WoodpeckerServer --> WoodpeckerDB[(Woodpecker data / SQLite)] - WoodpeckerServer --> WoodpeckerAgent - WoodpeckerAgent --> DockerSocket[(Docker)] - - Traefik --> WebApp - WebApp --> MySQL[(MySQL)] - WebApp --> Softwares[(Volume)] - - Droparea --> Softwares - - Nginx --> Discourse - Discourse --> ForumDB[(Postgres)] - Discourse --> Redis[(Redis)] - - Nginx --> Wiki - Wiki --> WikiDB[(Postgres)] -``` - -# TIC-80 Pipeline - -This document describes the Woodpecker CI pipeline used to build, export, upload, and publish a TIC-80 game project. - ---- - -## Overview - -The pipeline performs the following steps: - -1. **Build** the TIC-80 project using a custom Docker image -2. **Export** the game to `.tic` and HTML formats -3. **Upload artifacts** to a remote server via SCP -4. **Notify an update server** to publish the new version - -The pipeline is driven by environment variables so it can be reused across projects. - ---- - -## Global Environment - -```yaml -environment: &environment - GAME_NAME: mranderson - GAME_LANG: lua -``` - -- **GAME_NAME**: Project name (used for all outputs) -- **GAME_LANG**: Source language used by TIC-80 (Lua) - -The anchor (`&environment`) allows reuse across steps. - ---- - -## Step 1: Build & Export - -```yaml -- name: build - image: git.teletype.hu/internal/tic80pro:latest - environment: - <<: *environment - XDG_RUNTIME_DIR: /tmp - commands: - - make build - - make export -``` - -**What it does:** - -- Uses a custom TIC-80 Pro Docker image hosted in Gitea -- Runs the Makefile `build` target to assemble source files -- Runs the `export` target to generate: - - `.tic` cartridge - - `.html.zip` web build - ---- - -## Step 2: Artifact Upload - -```yaml -- name: artifact - image: alpine - environment: - <<: *environment - DROPAREA_HOST: vps.teletype.hu - DROPAREA_PORT: 2223 - DROPAREA_TARGET_PATH: /home/drop - DROPAREA_USER: drop - DROPAREA_SSH_PASSWORD: - from_secret: droparea_ssh_password - commands: - - apk add --no-cache openssh-client sshpass - - mkdir -p /root/.ssh - - sshpass -p $DROPAREA_SSH_PASSWORD scp -o StrictHostKeyChecking=no -P $DROPAREA_PORT \ - $GAME_NAME.$GAME_LANG \ - $GAME_NAME.tic \ - $GAME_NAME.html.zip \ - $DROPAREA_USER@$DROPAREA_HOST:$DROPAREA_TARGET_PATH -``` - -**What it does:** - -- Installs SCP tooling in a minimal Alpine container -- Uploads: - - Source file - - TIC-80 cartridge - - HTML export ZIP -- Uses secrets for SSH authentication - ---- - -## Step 3: Update Notification - -```yaml -- name: update - image: alpine - environment: - <<: *environment - UPDATE_SERVER: https://games.vps.teletype.hu - UPDATE_SECRET: - from_secret: update_secret_key - commands: - - apk add --no-cache curl - - curl "$UPDATE_SERVER/update?secret=$UPDATE_SECRET&name=$GAME_NAME&platform=tic80" -``` - -**What it does:** - -- Sends an HTTP request to the update server -- Notifies that a new TIC-80 build is available -- Uses a secret key to authorize the update - ---- - -## Result - -After a successful run: - -- The game is built and exported -- Artifacts are uploaded to the server -- The public game index is updated automatically - -This pipeline enables **fully automated TIC-80 releases** using open tools and infrastructure. - - -# TIC-80 Makefile Project Builder - -This Makefile provides a simple, reproducible workflow for building **TIC-80 Lua projects** from multiple source files. It is designed for small indie or experimental projects where the source code is split into logical parts and then merged into a single `.lua` cartridge. - ---- - -## Overview - -The workflow is based on four core ideas: - -- Source code is split into multiple Lua files inside an `inc/` directory -- A project-specific `.inc` file defines the **build order** -- All source files are concatenated into one final `.lua` file -- TIC-80 is used in CLI mode to export runnable artifacts - -This approach keeps the codebase modular while remaining compatible with TIC-80’s single-file cartridge model. - ---- - -## Project Structure - -```text -project-root/ -├── inc/ -│ ├── core.lua -│ ├── player.lua -│ └── world.lua -├── mranderson.inc -├── Makefile -└── README.md -``` - -- `inc/` contains all Lua source fragments -- `.inc` defines the order in which files are merged -- `.lua` is generated automatically - ---- - -## The `.inc` File - -The `.inc` file is a **plain text file** listing Lua source files in build order: - -```text -core.lua -player.lua -world.lua -``` - -The order matters. Files listed earlier are concatenated first and must define any globals used later. - ---- - -## Usage - -### Build (default) - -```sh -make build -``` - -- Reads `mranderson.inc` -- Concatenates files from `inc/` -- Produces `mranderson.lua` - -### Export (TIC-80) - -```sh -make export -``` - -- Loads the generated Lua file into TIC-80 (CLI mode) -- Saves a `.tic` cartridge -- Exports an HTML build - -### Export Assets - -```sh -make export_assets -``` - -- **Purpose**: Extracts asset sections (PALETTE, TILES, SPRITES, MAP, SFX, MUSIC) from the compiled `.lua` file. -- **Mechanism**: Uses `sed` to directly parse the generated `.lua` and saves the extracted data into `inc/meta/meta.assets.lua`. This file can then be used to embed the asset data directly into other parts of the project or for version control of visual assets. - -### Import Assets - -The `import_assets` target was considered during development but is currently not part of the build workflow. Asset handling for TIC-80 projects within this Makefile relies solely on direct extraction (`export_assets`) from the built Lua cartridge, rather than importing external asset definitions. This target may be implemented in the future if a need for pre-build asset injection arises. - -### Watch Mode - -```sh -make watch -``` - -- Performs an initial build -- Watches the `inc/` directory and `.inc` file -- Rebuilds automatically on any change - -Requires `fswatch` to be installed. - ---- - -## Generated Artifacts - -| File | Description | -|-----|-------------| -| `.lua` | Merged Lua source (input for TIC-80) | -| `.tic` | TIC-80 cartridge | -| `.html` | Web export | -| `.html.zip` | Packaged HTML build | - ---- - -## Design Goals - -- Keep TIC-80 projects modular -- Avoid manual copy-paste between files -- Enable fast iteration and experimentation -- Remain fully compatible with open-source tooling - -This Makefile is intentionally minimal and transparent, favoring simplicity over abstraction. - ---- - -## Requirements - -- `make` -- `tic80` available in PATH -- `fswatch` (only for watch mode) - ---- - -## License - -MIT License — free to use, modify, and redistribute. - -