From ba4d71613b8c5d8061f00941f2877024368bd4d9 Mon Sep 17 00:00:00 2001 From: mandalore Date: Tue, 22 Sep 2026 15:14:49 -0500 Subject: [PATCH] Replace GitLab CI with Gitea Actions workflows GitLab CE was migrated off to reduce memory pressure on the host, so .gitlab-ci.yml is dead. Split into one workflow file per site (shared, 40k-rankings, aos-rankings, kingmaker, scouting, events) since Gitea/ GitHub Actions path filters are workflow-level, not job-level like GitLab's rules.changes. Build+deploy are combined into a single job per site rather than separate build/deploy stages, since both run on the same host and there's no need to round-trip artifacts between them. The weekly ELO refresh job's schedule (Wed 02:00 Atlantic/Azores) is approximated as a fixed 02:00 UTC cron, since Actions cron has no DST handling. Co-Authored-By: Claude Sonnet 5 --- .gitea/workflows/deploy-40k-rankings.yml | 23 +++ .gitea/workflows/deploy-aos-rankings.yml | 23 +++ .gitea/workflows/deploy-events.yml | 23 +++ .gitea/workflows/deploy-kingmaker.yml | 23 +++ .gitea/workflows/deploy-scouting.yml | 23 +++ .gitea/workflows/deploy-shared.yml | 18 ++ .gitea/workflows/refresh-elo.yml | 30 ++++ .gitlab-ci.yml | 211 ----------------------- 8 files changed, 163 insertions(+), 211 deletions(-) create mode 100644 .gitea/workflows/deploy-40k-rankings.yml create mode 100644 .gitea/workflows/deploy-aos-rankings.yml create mode 100644 .gitea/workflows/deploy-events.yml create mode 100644 .gitea/workflows/deploy-kingmaker.yml create mode 100644 .gitea/workflows/deploy-scouting.yml create mode 100644 .gitea/workflows/deploy-shared.yml create mode 100644 .gitea/workflows/refresh-elo.yml delete mode 100644 .gitlab-ci.yml diff --git a/.gitea/workflows/deploy-40k-rankings.yml b/.gitea/workflows/deploy-40k-rankings.yml new file mode 100644 index 0000000..3cec471 --- /dev/null +++ b/.gitea/workflows/deploy-40k-rankings.yml @@ -0,0 +1,23 @@ +name: Deploy 40k-rankings + +on: + push: + branches: [main] + paths: + - 'sites/40k-rankings/**' + - 'shared/**' + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: host + steps: + - uses: actions/checkout@v4 + - name: Build + working-directory: sites/40k-rankings + run: | + npm ci + npm run build + - name: Deploy + run: | + rsync -avz --delete --exclude images --exclude footer.html sites/40k-rankings/dist/ /var/www/domains/gateway-gamers.net/40k-rankings/ diff --git a/.gitea/workflows/deploy-aos-rankings.yml b/.gitea/workflows/deploy-aos-rankings.yml new file mode 100644 index 0000000..8b9b5ea --- /dev/null +++ b/.gitea/workflows/deploy-aos-rankings.yml @@ -0,0 +1,23 @@ +name: Deploy aos-rankings + +on: + push: + branches: [main] + paths: + - 'sites/aos-rankings/**' + - 'shared/**' + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: host + steps: + - uses: actions/checkout@v4 + - name: Build + working-directory: sites/aos-rankings + run: | + npm ci + npm run build + - name: Deploy + run: | + rsync -avz --delete --exclude images --exclude footer.html sites/aos-rankings/dist/ /var/www/domains/gateway-gamers.net/aos-rankings/ diff --git a/.gitea/workflows/deploy-events.yml b/.gitea/workflows/deploy-events.yml new file mode 100644 index 0000000..a098532 --- /dev/null +++ b/.gitea/workflows/deploy-events.yml @@ -0,0 +1,23 @@ +name: Deploy events + +on: + push: + branches: [main] + paths: + - 'sites/events/**' + - 'shared/**' + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: host + steps: + - uses: actions/checkout@v4 + - name: Build + working-directory: sites/events + run: | + npm ci + npm run build + - name: Deploy + run: | + rsync -avz --delete --exclude images --exclude footer.html sites/events/dist/ /var/www/domains/gateway-gamers.net/events/ diff --git a/.gitea/workflows/deploy-kingmaker.yml b/.gitea/workflows/deploy-kingmaker.yml new file mode 100644 index 0000000..da1b304 --- /dev/null +++ b/.gitea/workflows/deploy-kingmaker.yml @@ -0,0 +1,23 @@ +name: Deploy kingmaker + +on: + push: + branches: [main] + paths: + - 'sites/kingmaker/**' + - 'shared/**' + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: host + steps: + - uses: actions/checkout@v4 + - name: Build + working-directory: sites/kingmaker + run: | + npm ci + npm run build + - name: Deploy + run: | + rsync -avz --delete --exclude images --exclude footer.html sites/kingmaker/dist/ /var/www/domains/gateway-gamers.net/kingmaker/ diff --git a/.gitea/workflows/deploy-scouting.yml b/.gitea/workflows/deploy-scouting.yml new file mode 100644 index 0000000..8e01097 --- /dev/null +++ b/.gitea/workflows/deploy-scouting.yml @@ -0,0 +1,23 @@ +name: Deploy scouting + +on: + push: + branches: [main] + paths: + - 'sites/scouting/**' + - 'shared/**' + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: host + steps: + - uses: actions/checkout@v4 + - name: Build + working-directory: sites/scouting + run: | + npm ci + npm run build + - name: Deploy + run: | + rsync -avz --delete --exclude images --exclude footer.html sites/scouting/dist/ /var/www/domains/gateway-gamers.net/scouting/ diff --git a/.gitea/workflows/deploy-shared.yml b/.gitea/workflows/deploy-shared.yml new file mode 100644 index 0000000..63ca0d8 --- /dev/null +++ b/.gitea/workflows/deploy-shared.yml @@ -0,0 +1,18 @@ +name: Deploy shared assets + +on: + push: + branches: [main] + paths: + - 'shared/**' + workflow_dispatch: + +jobs: + deploy: + runs-on: host + steps: + - uses: actions/checkout@v4 + - name: Deploy shared assets + run: | + rsync -avz --delete shared/images/ /var/www/domains/gateway-gamers.net/shared/images/ + rsync -avz shared/footer.html /var/www/domains/gateway-gamers.net/shared/footer.html diff --git a/.gitea/workflows/refresh-elo.yml b/.gitea/workflows/refresh-elo.yml new file mode 100644 index 0000000..705d8a4 --- /dev/null +++ b/.gitea/workflows/refresh-elo.yml @@ -0,0 +1,30 @@ +name: Weekly ELO Sync + +# Original GitLab pipeline schedule ran Wednesdays 02:00 Atlantic/Azores. +# Actions cron is always UTC with no DST handling, so this is a fixed +# approximation (02:00 UTC) rather than an exact equivalent year-round. +on: + schedule: + - cron: '0 2 * * 3' + workflow_dispatch: + +jobs: + refresh: + runs-on: host + steps: + - uses: actions/checkout@v4 + - name: Refresh ELO data + working-directory: sites/40k-rankings/statcheck-elo-scraper + run: python3 refresh_elo.py + - name: Commit and push if changed + env: + GITEA_ACCESS_TOKEN: ${{ secrets.GITEA_ACCESS_TOKEN }} + run: | + git config user.email "gitea-actions@gateway-gamers.net" + git config user.name "Gitea Actions" + git remote set-url origin "https://mandalore:${GITEA_ACCESS_TOKEN}@gl.mando.club/mandalore/gateway-gamers.net.git" + git add sites/40k-rankings/public/elo-data.json + if ! git diff --cached --quiet; then + git commit -m "data: refresh stat-check ELO rankings" + git push origin HEAD:main + fi diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 29288ce..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,211 +0,0 @@ -stages: - - build - - deploy - - refresh - -.build_script: &build_script - - cd sites/${SITE} - - npm ci - - npm run build - -# --------------------------------------------------------------------------- -# shared assets (images + footer.html) — deployed once to a shared dir that -# every site's nginx server block points at via `alias`, so a photo/logo -# update only has to land in one place instead of four. -# --------------------------------------------------------------------------- - -deploy:shared: - stage: deploy - script: - - rsync -avz --delete shared/images/ /var/www/domains/gateway-gamers.net/shared/images/ - - rsync -avz shared/footer.html /var/www/domains/gateway-gamers.net/shared/footer.html - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - shared/**/* - environment: - name: production/shared - -# --------------------------------------------------------------------------- -# 40k-rankings -# --------------------------------------------------------------------------- - -build:40k-rankings: - stage: build - variables: - SITE: 40k-rankings - script: *build_script - artifacts: - paths: - - sites/40k-rankings/dist/ - expire_in: 1 hour - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/40k-rankings/**/* - - shared/**/* - -deploy:40k-rankings: - stage: deploy - needs: ["build:40k-rankings"] - script: - - rsync -avz --delete --exclude images --exclude footer.html sites/40k-rankings/dist/ /var/www/domains/gateway-gamers.net/40k-rankings/ - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/40k-rankings/**/* - - shared/**/* - environment: - name: production - url: https://40k-rankings.gateway-gamers.net - -refresh-elo: - stage: refresh - image: python:3.12-slim - variables: - GIT_STRATEGY: clone - script: - - (cd sites/40k-rankings/statcheck-elo-scraper && python refresh_elo.py) - - git config user.email "gitlab-ci@gateway-gamers.net" - - git config user.name "GitLab CI" - - git remote set-url origin "https://oauth2:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git" - - git add sites/40k-rankings/public/elo-data.json - - | - if ! git diff --cached --quiet; then - git commit -m "data: refresh stat-check ELO rankings" - git push origin HEAD:main - fi - only: - - schedules - -# --------------------------------------------------------------------------- -# aos-rankings -# --------------------------------------------------------------------------- - -build:aos-rankings: - stage: build - variables: - SITE: aos-rankings - script: *build_script - artifacts: - paths: - - sites/aos-rankings/dist/ - expire_in: 1 hour - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/aos-rankings/**/* - - shared/**/* - -deploy:aos-rankings: - stage: deploy - needs: ["build:aos-rankings"] - script: - - rsync -avz --delete --exclude images --exclude footer.html sites/aos-rankings/dist/ /var/www/domains/gateway-gamers.net/aos-rankings/ - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/aos-rankings/**/* - - shared/**/* - environment: - name: production - url: https://aos-rankings.gateway-gamers.net - -# --------------------------------------------------------------------------- -# kingmaker -# --------------------------------------------------------------------------- - -build:kingmaker: - stage: build - variables: - SITE: kingmaker - script: *build_script - artifacts: - paths: - - sites/kingmaker/dist/ - expire_in: 1 hour - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/kingmaker/**/* - - shared/**/* - -deploy:kingmaker: - stage: deploy - needs: ["build:kingmaker"] - script: - - rsync -avz --delete --exclude images --exclude footer.html sites/kingmaker/dist/ /var/www/domains/gateway-gamers.net/kingmaker/ - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/kingmaker/**/* - - shared/**/* - environment: - name: production - url: https://kingmaker.gateway-gamers.net - -# --------------------------------------------------------------------------- -# scouting -# --------------------------------------------------------------------------- - -build:scouting: - stage: build - variables: - SITE: scouting - script: *build_script - artifacts: - paths: - - sites/scouting/dist/ - expire_in: 1 hour - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/scouting/**/* - - shared/**/* - -deploy:scouting: - stage: deploy - needs: ["build:scouting"] - script: - - rsync -avz --delete --exclude images --exclude footer.html sites/scouting/dist/ /var/www/domains/gateway-gamers.net/scouting/ - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/scouting/**/* - - shared/**/* - environment: - name: production - url: https://scouting.gateway-gamers.net - -# --------------------------------------------------------------------------- -# events -# --------------------------------------------------------------------------- - -build:events: - stage: build - variables: - SITE: events - script: *build_script - artifacts: - paths: - - sites/events/dist/ - expire_in: 1 hour - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/events/**/* - - shared/**/* - -deploy:events: - stage: deploy - needs: ["build:events"] - script: - - rsync -avz --delete --exclude images --exclude footer.html sites/events/dist/ /var/www/domains/gateway-gamers.net/events/ - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - changes: - - sites/events/**/* - - shared/**/* - environment: - name: production - url: https://events.gateway-gamers.net