From c7a9102d863c6740700cfaeb4460db29dcf471a1 Mon Sep 17 00:00:00 2001 From: Madison Grubb Date: Wed, 4 Mar 2026 12:14:38 -0500 Subject: [PATCH] replace woodpecker with gitea actions --- .gitea/workflows/pr.yml | 43 ++++++++++++++++++ .gitea/workflows/release.yml | 85 ++++++++++++++++++++++++++++++++++++ .woodpecker/pr.yml | 19 -------- .woodpecker/release.yml | 61 -------------------------- 4 files changed, 128 insertions(+), 80 deletions(-) create mode 100644 .gitea/workflows/pr.yml create mode 100644 .gitea/workflows/release.yml delete mode 100644 .woodpecker/pr.yml delete mode 100644 .woodpecker/release.yml diff --git a/.gitea/workflows/pr.yml b/.gitea/workflows/pr.yml new file mode 100644 index 0000000..003cd5c --- /dev/null +++ b/.gitea/workflows/pr.yml @@ -0,0 +1,43 @@ +name: PR + +on: + pull_request: + +jobs: + lint: + name: lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: https://github.com/actions/checkout@v6 + + - name: Setup Node + uses: https://github.com/actions/setup-node@v6 + with: + node-version: "24" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Lint + run: npm run lint + + test-coverage: + name: test-coverage + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: https://github.com/actions/checkout@v6 + + - name: Setup Node + uses: https://github.com/actions/setup-node@v6 + with: + node-version: "24" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Test with coverage + run: npm run test:coverage diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..a2351af --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,85 @@ +name: Release + +on: + push: + branches: [main] + schedule: + - cron: "0 0 * * *" + +jobs: + generate-dungeon: + name: generate-dungeon + runs-on: ubuntu-latest + container: + image: ghcr.io/puppeteer/puppeteer:latest + env: + OLLAMA_API_URL: ${{ secrets.OLLAMA_API_URL }} + OLLAMA_API_KEY: ${{ secrets.OLLAMA_API_KEY }} + COMFYUI_URL: ${{ secrets.COMFYUI_URL }} + steps: + - name: Checkout + uses: https://github.com/actions/checkout@v6 + + - name: Setup Node + uses: https://github.com/actions/setup-node@v6 + with: + node-version: "24" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Generate dungeon PDF + run: npm start + + - name: Upload PDF artifact + uses: https://github.com/actions/upload-artifact@v6 + with: + name: release-pdf + path: "*.pdf" + + upload-to-gitea-release: + name: upload-to-gitea-release + runs-on: ubuntu-latest + needs: generate-dungeon + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + steps: + - name: Download PDF artifact + uses: https://github.com/actions/download-artifact@v8 + with: + name: release-pdf + + - name: Create release and upload PDF + run: | + api_base="https://git.keligrubb.com/api/v1/repos/${{ gitea.repository }}" + pdf=$(ls *.pdf | head -n1) + tag=$(date +%F) + echo "Creating release for tag $tag..." + create_resp=$(curl -s -w "%{http_code}" -o /tmp/create.json -X POST \ + -H "Authorization: token $GITEA_TOKEN" \ + -H "Content-Type: application/json" \ + -d "{\"tag_name\":\"$tag\",\"name\":\"$tag\"}" \ + "$api_base/releases") + echo "Create release HTTP status: $create_resp" + echo "Fetching release ID..." + release_id=$(curl -s \ + -H "Authorization: token $GITEA_TOKEN" \ + "$api_base/releases/tags/$tag" | + awk -F: '/"id"[ ]*:/ {gsub(/[^0-9]/,"",$2); print $2; exit}') + echo "Release ID = $release_id" + echo "Checking if asset $pdf already exists..." + assets=$(curl -s -H "Authorization: token $GITEA_TOKEN" \ + "$api_base/releases/$release_id/assets") + echo "Assets response: $assets" + if echo "$assets" | grep -q "\"name\":\"$pdf\""; then + echo "Asset $pdf already uploaded, skipping." + exit 0 + fi + echo "Uploading $pdf to release $release_id..." + upload_resp=$(curl -s -w "%{http_code}" -o /tmp/upload.json -X POST \ + -H "Authorization: token $GITEA_TOKEN" \ + -F "attachment=@$pdf" \ + "$api_base/releases/$release_id/assets") + echo "Upload HTTP status: $upload_resp" + echo "Upload response: $(cat /tmp/upload.json)" diff --git a/.woodpecker/pr.yml b/.woodpecker/pr.yml deleted file mode 100644 index 40a10da..0000000 --- a/.woodpecker/pr.yml +++ /dev/null @@ -1,19 +0,0 @@ -workspace: - base: /woodpecker - path: pr - -when: - - event: pull_request - -steps: - - name: lint - image: node:24-slim - commands: - - npm ci - - npm run lint - - - name: test-coverage - image: node:24-slim - commands: - - npm ci - - npm run test:coverage diff --git a/.woodpecker/release.yml b/.woodpecker/release.yml deleted file mode 100644 index 44aad5f..0000000 --- a/.woodpecker/release.yml +++ /dev/null @@ -1,61 +0,0 @@ -workspace: - base: /woodpecker - path: release - -when: - - event: cron - branch: main - - event: push - branch: main - -steps: - - name: generate-dungeon - image: ghcr.io/puppeteer/puppeteer:latest - environment: - OLLAMA_API_URL: - from_secret: OLLAMA_API_URL - OLLAMA_API_KEY: - from_secret: OLLAMA_API_KEY - COMFYUI_URL: - from_secret: COMFYUI_URL - commands: - - npm ci - - npm start - - - name: upload-to-gitea-release - image: curlimages/curl:latest - environment: - GITEA_TOKEN: - from_secret: GITEA_TOKEN - commands: - - pdf=$(ls *.pdf | head -n1) - - tag=$(date +%F) - - | - echo "Creating release for tag $tag..." - create_resp=$(curl -s -w "%{http_code}" -o /tmp/create.json -X POST \ - -H "Authorization: token $GITEA_TOKEN" \ - -H "Content-Type: application/json" \ - -d "{\"tag_name\":\"$tag\",\"name\":\"$tag\"}" \ - https://git.keligrubb.com/api/v1/repos/keligrubb/scrollsmith/releases) - echo "Create release HTTP status: $create_resp" - echo "Fetching release ID..." - release_id=$(curl -s \ - -H "Authorization: token $GITEA_TOKEN" \ - https://git.keligrubb.com/api/v1/repos/keligrubb/scrollsmith/releases/tags/$tag | - awk -F: '/"id"[ ]*:/ {gsub(/[^0-9]/,"",$2); print $2; exit}') - echo "Release ID = $release_id" - echo "Checking if asset $pdf already exists..." - assets=$(curl -s -H "Authorization: token $GITEA_TOKEN" \ - https://git.keligrubb.com/api/v1/repos/keligrubb/scrollsmith/releases/$release_id/assets) - echo "Assets response: $assets" - if echo "$assets" | grep -q "\"name\":\"$pdf\""; then - echo "Asset $pdf already uploaded, skipping." - exit 0 - fi - echo "Uploading $pdf to release $release_id..." - upload_resp=$(curl -s -w "%{http_code}" -o /tmp/upload.json -X POST \ - -H "Authorization: token $GITEA_TOKEN" \ - -F "attachment=@$pdf" \ - https://git.keligrubb.com/api/v1/repos/keligrubb/scrollsmith/releases/$release_id/assets) - echo "Upload HTTP status: $upload_resp" - echo "Upload response: $(cat /tmp/upload.json)"