npm bricht ab, sobald eine Version wie 0.19.2-threadnet.6 ohne --tag veroeffentlicht werden soll - der Suffix macht sie zur Prerelease. "threadnet" statt "latest", denn latest soll nicht auf eine Vorabversion zeigen. Refs axion1337.chat/threadnet-call#2
78 lines
3.1 KiB
YAML
78 lines
3.1 KiB
YAML
# GitLab-CI fuer den threadnet-call-Fork (Lab-GitLab; siehe docs/axion1337-fork.md).
|
|
# Ersetzt die geerbten, hier nie lauffaehigen Upstream-Workflows (threadnet-call#1).
|
|
# Trigger-Schema wie ThreadNet-Web: Pushes pruefen nur bei relevanten Pfaden,
|
|
# Veroeffentlichen ist ein bewusster manueller Akt.
|
|
|
|
stages:
|
|
- build
|
|
- publish
|
|
|
|
build_embedded:
|
|
stage: build
|
|
image: node:24-bullseye
|
|
rules:
|
|
- if: $CI_COMMIT_TAG =~ /^v/
|
|
- if: $CI_COMMIT_BRANCH
|
|
changes:
|
|
- src/**/*
|
|
- embedded/**/*
|
|
- public/**/*
|
|
- package.json
|
|
- pnpm-lock.yaml
|
|
- vite*.config.*
|
|
# .env.production setzt VITE_PRODUCT_NAME und landet damit im Bundle - ohne
|
|
# diesen Eintrag aendert man den Produktnamen und die CI baut gar nicht erst.
|
|
- .env.production
|
|
- .gitlab-ci.yml
|
|
before_script:
|
|
- corepack enable
|
|
script:
|
|
- pnpm install --frozen-lockfile
|
|
# baut mit der media_quality-Konfiguration aus vite-embedded.config.ts
|
|
# (1440p-Defaults, h264 - siehe docs/axion1337-fork.md)
|
|
- pnpm build:embedded
|
|
# Vite schreibt nach dist/, das npm-Paket (embedded/web/package.json, files: [dist])
|
|
# erwartet es aber unter embedded/web/dist. Upstream loest das ueber den Zielpfad des
|
|
# Artefakt-Downloads (.github/workflows/publish-embedded-packages.yaml); hier
|
|
# verschieben wir direkt, damit publish_npm es per needs:artifacts vorfindet.
|
|
- mv dist embedded/web/dist
|
|
artifacts:
|
|
paths:
|
|
- embedded/web/dist
|
|
expire_in: 1 week
|
|
|
|
# Publisht das Embedded-Package in die Gitea-npm-Registry auf rohana - dort MUSS es
|
|
# bleiben, solange ThreadNet-Webs pnpm-lock.yaml die Tarball-URL darauf pinnt
|
|
# (Konsument: apps/web-Dependency @sorb/threadnet-call-embedded).
|
|
# Versionierung: package.json-Version in embedded/web VOR dem Publish per Commit bumpen.
|
|
# Auth: CI-Variable GITEA_NPM_TOKEN (Gitea-Token, Scope write:package) - ersetzt die
|
|
# fruehere lokale, untracked .npmrc mit Klartext-Token (Rotationsliste CFGMON-11).
|
|
publish_npm:
|
|
stage: publish
|
|
image: node:24-bullseye
|
|
needs:
|
|
- job: build_embedded
|
|
artifacts: true
|
|
rules:
|
|
- if: $CI_COMMIT_TAG =~ /^v/
|
|
when: manual
|
|
allow_failure: true
|
|
- if: $CI_COMMIT_BRANCH == "main"
|
|
when: manual
|
|
allow_failure: true
|
|
script:
|
|
- test -n "$GITEA_NPM_TOKEN" || { echo "CI-Variable GITEA_NPM_TOKEN fehlt (Gitea-Token mit write:package)"; exit 1; }
|
|
- |
|
|
cat > embedded/web/.npmrc <<EOF
|
|
@sorb:registry=https://rohana.axion1337.de/api/packages/sorb/npm/
|
|
//rohana.axion1337.de/api/packages/sorb/npm/:_authToken=${GITEA_NPM_TOKEN}
|
|
EOF
|
|
- cd embedded/web
|
|
# --tag ist Pflicht, nicht Geschmack: unsere Versionen tragen den Suffix
|
|
# -threadnet.N und gelten npm damit als Prerelease. Ohne expliziten dist-tag
|
|
# bricht npm ab ("You must specify a tag using --tag when publishing a
|
|
# prerelease version"). "threadnet" statt "latest" ist dabei das Richtige -
|
|
# latest soll nicht auf eine Vorabversion zeigen. Fuer den Konsumenten ist es
|
|
# ohnehin unerheblich, ThreadNet-Webs pnpm-lock.yaml pinnt die Tarball-URL.
|
|
- npm publish --access public --tag threadnet
|