Files
element-call/.gitea/workflows/ci.yml
T
Lotus CIandClaude Opus 4.8 b1fed78283
CI / Build embedded bundle (push) Failing after 46s
CI / Publish to Gitea npm registry (push) Has been skipped
ci: stage embedded dist into embedded/web/dist before publish
build:embedded outputs to repo-root dist/; the publish job and smoke-check
expected embedded/web/dist (the publish template's files entry), which was
never created in CI — so a tagged publish would fail its smoke-check or ship
an empty tarball. Copy dist -> embedded/web/dist in both jobs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 22:45:20 -04:00

119 lines
4.1 KiB
YAML

name: CI
# Build + publish the Lotus fork of Element Call's embedded web bundle.
# Models LotusGuild/cinny's .gitea/workflows/ci.yml. Web bundle only, so
# Linux-only (the Windows worker is for cinny-desktop / Tauri, not needed here).
#
# - PRs and pushes to `lotus` -> build + smoke-check the embedded dist
# - Pushes of a tag `v*` -> build + publish @lotusguild/element-call-embedded
# to the Gitea npm registry
#
# Versioning mirrors upstream: the in-repo package.json stays 0.0.0; the
# published version is derived from the git tag at publish time.
on:
push:
branches: [lotus]
tags: ['v*']
pull_request:
branches: [lotus]
env:
# element-call's build:full sets 16384 already; keep parity for safety.
NODE_OPTIONS: '--max-old-space-size=16384'
jobs:
build:
name: Build embedded bundle
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.node-version' # Node 24
# registry-url wires up the Gitea-scoped registry + auth for publish
registry-url: 'https://code.lotusguild.org/api/packages/LotusGuild/npm/'
scope: '@lotusguild'
- name: Enable corepack (pnpm from packageManager field)
run: corepack enable
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build embedded
# build:embedded writes to the repo-root dist/ (vite default outDir).
# Stage it into embedded/web/dist — the publish template's "files" entry
# — so the smoke-check, artifact upload, and npm publish all see the
# bundle. (embedded/web/dist is gitignored, hence the explicit copy.)
run: |
pnpm run build:embedded
rm -rf embedded/web/dist
cp -r dist embedded/web/dist
- name: Smoke-check output
run: |
test -f embedded/web/dist/index.html
test -d embedded/web/dist/assets
echo "### Embedded bundle" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
du -sh embedded/web/dist >> "$GITHUB_STEP_SUMMARY"
ls embedded/web/dist >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
- name: Upload dist artifact
uses: actions/upload-artifact@v4
with:
name: element-call-embedded-dist
path: embedded/web/dist
retention-days: 7
publish:
name: Publish to Gitea npm registry
needs: build
# Only on a version tag push, never on PRs.
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.node-version'
registry-url: 'https://code.lotusguild.org/api/packages/LotusGuild/npm/'
scope: '@lotusguild'
- name: Enable corepack
run: corepack enable
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build embedded
# build:embedded writes to the repo-root dist/ (vite default outDir).
# Stage it into embedded/web/dist — the publish template's "files" entry
# — so the smoke-check, artifact upload, and npm publish all see the
# bundle. (embedded/web/dist is gitignored, hence the explicit copy.)
run: |
pnpm run build:embedded
rm -rf embedded/web/dist
cp -r dist embedded/web/dist
- name: Set published version from tag
working-directory: embedded/web
run: |
TAG="${GITHUB_REF_NAME#v}" # v0.20.1 -> 0.20.1
npm version "$TAG" --no-git-tag-version --allow-same-version
- name: Publish
working-directory: embedded/web
env:
NODE_AUTH_TOKEN: ${{ secrets.GITEA_NPM_TOKEN }}
run: npm publish --access public