From ac06fcf0d4b775018bc6fdaf6ac2868ee5588089 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Mon, 26 Jan 2026 21:32:34 +0100 Subject: [PATCH] pipeline update --- .woodpecker.yml | 34 +++++++--------------------------- Makefile | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 28 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index c6cf37f..26ef7fd 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -6,11 +6,8 @@ steps: - name: version image: alpine commands: - - 'META_HEADER_PATH=./inc/meta/meta.header.lua - - 'VERSION=$(sed -n "s/^-- version: //p" $META_HEADER_PATH | head -n 1 | tr -d "[:space:]")' - - 'echo VERSION is: $VERSION' - - 'echo $VERSION > .version' - - 'cat .version' + - 'apk add --no-cache make' + - 'make ci-version' - name: build image: git.teletype.hu/internal/tic80pro:latest @@ -18,14 +15,7 @@ steps: <<: *environment XDG_RUNTIME_DIR: /tmp commands: - - 'apt-get update && apt-get install -y zip' - - 'cat .version' - - 'export VERSION=$(cat .version)' - - 'echo Building version: $VERSION' - - 'make build' - - 'make export VERSION=$VERSION' - - 'echo Generated files:' - - 'ls -lh $GAME_NAME-*.* $GAME_NAME.tic $GAME_NAME.html.zip' + - 'make ci-export' - name: artifact image: alpine @@ -38,16 +28,8 @@ steps: DROPAREA_SSH_PASSWORD: from_secret: droparea_ssh_password commands: - - 'apk add --no-cache openssh-client sshpass' - - 'mkdir -p /root/.ssh' - - 'export VERSION=$(cat .version)' - - 'echo VERSION artifact step: $VERSION' - - 'echo SCP Target Path: $DROPAREA_TARGET_PATH/$GAME_NAME/$VERSION/' - - 'sshpass -p $DROPAREA_SSH_PASSWORD ssh -p $DROPAREA_PORT -o StrictHostKeyChecking=no $DROPAREA_USER@$DROPAREA_HOST mkdir -p $DROPAREA_TARGET_PATH/$GAME_NAME/$VERSION' - - 'echo Files to upload:' - - 'ls -lh $GAME_NAME-$VERSION.* $GAME_NAME.tic $GAME_NAME.html.zip' - - 'sshpass -p $DROPAREA_SSH_PASSWORD scp -o StrictHostKeyChecking=no -P $DROPAREA_PORT $GAME_NAME-$VERSION.tic $GAME_NAME-$VERSION.html.zip $DROPAREA_USER@$DROPAREA_HOST:$DROPAREA_TARGET_PATH/$GAME_NAME/$VERSION/' - - '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/$GAME_NAME/$VERSION/' + - 'apk add --no-cache make openssh-client sshpass' + - 'make ci-upload' - name: update image: alpine @@ -57,7 +39,5 @@ steps: UPDATE_SECRET: from_secret: update_secret_key commands: - - 'apk add --no-cache curl' - - 'export VERSION=$(cat .version)' - - 'echo Triggering update for version $VERSION' - - 'curl $UPDATE_SERVER/update?secret=$UPDATE_SECRET&name=$GAME_NAME&platform=tic80&version=$VERSION' \ No newline at end of file + - 'apk add --no-cache make curl' + - 'make ci-update' \ No newline at end of file diff --git a/Makefile b/Makefile index 330c5ec..8a97c73 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,15 @@ SRC = $(shell sed 's|^|$(SRC_DIR)/|' $(ORDER)) ASSETS_LUA = inc/meta/meta.assets.lua +# CI/CD variables +VERSION_FILE = .version +GAME_LANG ?= lua +DROPAREA_HOST ?= vps.teletype.hu +DROPAREA_PORT ?= 2223 +DROPAREA_TARGET_PATH ?= /home/drop +DROPAREA_USER ?= drop +UPDATE_SERVER ?= https://games.vps.teletype.hu + all: build build: $(OUTPUT) @@ -71,4 +80,31 @@ clean: @rm -f $(PROJECT)-*.tic $(PROJECT)-*.html.zip $(OUTPUT) @echo "==> Cleaned build artifacts" -.PHONY: all build export watch import_assets export_assets clean \ No newline at end of file +# CI/CD Targets +ci-version: + @echo "==> Extracting version" + @VERSION=$$(sed -n "s/^-- version: //p" inc/meta/meta.header.lua | head -n 1 | tr -d "[:space:]"); \ + echo "VERSION is: $$VERSION"; \ + echo $$VERSION > $(VERSION_FILE) + +ci-export: + @VERSION=$$(cat $(VERSION_FILE)); \ + echo "==> Building and exporting version $$VERSION"; \ + $(MAKE) export VERSION=$$VERSION + +ci-upload: + @VERSION=$$(cat $(VERSION_FILE)); \ + echo "==> Uploading artifacts for version $$VERSION"; \ + echo "SCP Target Path: $(DROPAREA_TARGET_PATH)/$(PROJECT)/$$VERSION/"; \ + sshpass -p "$(DROPAREA_SSH_PASSWORD)" ssh -p $(DROPAREA_PORT) -o StrictHostKeyChecking=no $(DROPAREA_USER)@$(DROPAREA_HOST) mkdir -p $(DROPAREA_TARGET_PATH)/$(PROJECT)/$$VERSION; \ + echo "Files to upload:"; \ + ls -lh $(PROJECT)-$$VERSION.* $(PROJECT).tic $(PROJECT).html.zip 2>/dev/null || true; \ + sshpass -p "$(DROPAREA_SSH_PASSWORD)" scp -o StrictHostKeyChecking=no -P $(DROPAREA_PORT) $(PROJECT)-$$VERSION.tic $(PROJECT)-$$VERSION.html.zip $(DROPAREA_USER)@$(DROPAREA_HOST):$(DROPAREA_TARGET_PATH)/$(PROJECT)/$$VERSION/; \ + sshpass -p "$(DROPAREA_SSH_PASSWORD)" scp -o StrictHostKeyChecking=no -P $(DROPAREA_PORT) $(OUTPUT) $(PROJECT).tic $(PROJECT).html.zip $(DROPAREA_USER)@$(DROPAREA_HOST):$(DROPAREA_TARGET_PATH)/$(PROJECT)/$$VERSION/; + +ci-update: + @VERSION=$$(cat $(VERSION_FILE)); \ + echo "==> Triggering update for version $$VERSION"; \ + curl "$(UPDATE_SERVER)/update?secret=$(UPDATE_SECRET)&name=$(PROJECT)&platform=tic80&version=$$VERSION" + +.PHONY: all build export watch import_assets export_assets clean ci-version ci-export ci-upload ci-update \ No newline at end of file