Align website tooling with govoplan-website rename
Dependency Audit / dependency-audit (push) Successful in 1m57s
Deployment Installer / deployment-installer (push) Successful in 7s
Security Audit / security-audit (push) Failing after 12m18s

This commit is contained in:
2026-09-30 14:56:55 +02:00
parent 2ffdb23f69
commit 01162bfc5e
24 changed files with 55 additions and 55 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan" git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan"
- name: Bootstrap GovOPlaN repositories - name: Bootstrap GovOPlaN repositories
working-directory: govoplan working-directory: govoplan
run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo addideas-govoplan-website run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo govoplan-website
- name: Install backend dev audit dependencies - name: Install backend dev audit dependencies
working-directory: govoplan working-directory: govoplan
run: | run: |
+1 -1
View File
@@ -44,7 +44,7 @@ jobs:
git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan" git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan"
- name: Bootstrap GovOPlaN repositories - name: Bootstrap GovOPlaN repositories
working-directory: govoplan working-directory: govoplan
run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo addideas-govoplan-website run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo govoplan-website
- name: Install backend release dependencies - name: Install backend release dependencies
working-directory: govoplan working-directory: govoplan
run: | run: |
+1 -1
View File
@@ -24,7 +24,7 @@ jobs:
git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan" git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan"
- name: Bootstrap GovOPlaN repositories - name: Bootstrap GovOPlaN repositories
working-directory: govoplan working-directory: govoplan
run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo addideas-govoplan-website run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo govoplan-website
- name: Validate package publication contracts - name: Validate package publication contracts
working-directory: govoplan working-directory: govoplan
run: | run: |
+1 -1
View File
@@ -109,7 +109,7 @@ jobs:
git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan" git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan"
- name: Bootstrap release sources - name: Bootstrap release sources
working-directory: govoplan working-directory: govoplan
run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo addideas-govoplan-website run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo govoplan-website
- name: Build release wheel roots and WebUI - name: Build release wheel roots and WebUI
working-directory: govoplan working-directory: govoplan
env: env:
+1 -1
View File
@@ -32,7 +32,7 @@ jobs:
python-version: "3.12" python-version: "3.12"
- name: Bootstrap GovOPlaN repositories - name: Bootstrap GovOPlaN repositories
working-directory: govoplan working-directory: govoplan
run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo addideas-govoplan-website run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo govoplan-website
- name: Run whole-system security audit - name: Run whole-system security audit
working-directory: govoplan working-directory: govoplan
run: tools/checks/security-audit/run.sh --mode "$SECURITY_AUDIT_MODE" --scope "$SECURITY_AUDIT_SCOPE" --reports-dir audit-reports run: tools/checks/security-audit/run.sh --mode "$SECURITY_AUDIT_MODE" --scope "$SECURITY_AUDIT_SCOPE" --reports-dir audit-reports
+1 -1
View File
@@ -235,5 +235,5 @@ The target shape is:
What doesn't belong here: What doesn't belong here:
- `addideas-govoplan-website/docker-compose.yml`: public website serving - `govoplan-website/docker-compose.yml`: public website serving
profile; this one stays with the website repository. profile; this one stays with the website repository.
+1 -1
View File
@@ -19,4 +19,4 @@ Module-specific Docker test beds remain in their owning repositories:
Website-specific serving profiles remain with the public website repository: Website-specific serving profiles remain with the public website repository:
- `addideas-govoplan-website/docker-compose.yml` - `govoplan-website/docker-compose.yml`
+2 -2
View File
@@ -519,8 +519,8 @@ Regenerate the browsable module directory from an existing catalog/keyring:
```sh ```sh
./.venv/bin/python tools/release/release-catalog.py module-directory \ ./.venv/bin/python tools/release/release-catalog.py module-directory \
--catalog ../addideas-govoplan-website/public/catalogs/v1/channels/stable.json \ --catalog ../govoplan-website/public/catalogs/v1/channels/stable.json \
--keyring ../addideas-govoplan-website/public/catalogs/v1/keyring.json \ --keyring ../govoplan-website/public/catalogs/v1/keyring.json \
--output-dir runtime/module-directory-preview \ --output-dir runtime/module-directory-preview \
--channel stable --channel stable
``` ```
+1 -1
View File
@@ -98,4 +98,4 @@ Generated from `repositories.json`. Use that JSON file as the machine-readable s
| Repository | Subtype | Local path | Gitea | | Repository | Subtype | Local path | Gitea |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `addideas-govoplan-website` | `public-site` | `../addideas-govoplan-website` | [addideas-govoplan-website](https://git.add-ideas.de/add-ideas/addideas-govoplan-website) | | `govoplan-website` | `public-site` | `../govoplan-website` | [govoplan-website](https://git.add-ideas.de/add-ideas/govoplan-website) |
+5 -5
View File
@@ -49,7 +49,7 @@ installed into a GovOPlaN runtime.
Current website repository: Current website repository:
- `addideas-govoplan-website`: public website and release catalog publication target. - `govoplan-website`: public website and release catalog publication target.
## Meta Repository Role ## Meta Repository Role
@@ -93,7 +93,7 @@ Current shared profiles:
- `dev/postgres` - `dev/postgres`
- `dev/production-like` - `dev/production-like`
Website-specific serving profiles stay with `addideas-govoplan-website`. Website-specific serving profiles stay with `govoplan-website`.
Module-specific test beds stay in the owning module repository. Examples: Module-specific test beds stay in the owning module repository. Examples:
@@ -104,13 +104,13 @@ Module-specific test beds stay in the owning module repository. Examples:
This keeps local module tests close to the code while giving operators one This keeps local module tests close to the code while giving operators one
repository for product deployment. repository for product deployment.
## addideas-govoplan-website and Release Logic ## govoplan-website and Release Logic
`addideas-govoplan-website` should be treated as the public website and catalog publication `govoplan-website` should be treated as the public website and catalog publication
target, not as the release orchestrator. target, not as the release orchestrator.
The release workflow should be invoked from `govoplan`. It may write signed The release workflow should be invoked from `govoplan`. It may write signed
catalog artifacts into `addideas-govoplan-website/public/catalogs/...` and then build or catalog artifacts into `govoplan-website/public/catalogs/...` and then build or
deploy the website. deploy the website.
A separate `govoplan-release` repository should only be introduced if release A separate `govoplan-release` repository should only be introduced if release
+1 -1
View File
@@ -76,7 +76,7 @@
{"name": "govoplan-views", "category": "module", "subtype": "platform", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-views.git", "path": "govoplan-views"}, {"name": "govoplan-views", "category": "module", "subtype": "platform", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-views.git", "path": "govoplan-views"},
{"name": "govoplan-voting", "category": "module", "subtype": "domain", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-voting.git", "path": "govoplan-voting"}, {"name": "govoplan-voting", "category": "module", "subtype": "domain", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-voting.git", "path": "govoplan-voting"},
{"name": "govoplan-wiki", "category": "module", "subtype": "domain", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-wiki.git", "path": "govoplan-wiki"}, {"name": "govoplan-wiki", "category": "module", "subtype": "domain", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-wiki.git", "path": "govoplan-wiki"},
{"name": "addideas-govoplan-website", "category": "website", "subtype": "public-site", "remote": "git@git.add-ideas.de:add-ideas/addideas-govoplan-website.git", "path": "addideas-govoplan-website", "bootstrap_transport": "registered"}, {"name": "govoplan-website", "category": "website", "subtype": "public-site", "remote": "git@git.add-ideas.de:add-ideas/govoplan-website.git", "path": "govoplan-website", "bootstrap_transport": "registered"},
{"name": "govoplan-workflow", "category": "module", "subtype": "platform", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-workflow.git", "path": "govoplan-workflow"}, {"name": "govoplan-workflow", "category": "module", "subtype": "platform", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-workflow.git", "path": "govoplan-workflow"},
{"name": "govoplan-workflow-engine", "category": "module", "subtype": "platform", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-workflow-engine.git", "path": "govoplan-workflow-engine"}, {"name": "govoplan-workflow-engine", "category": "module", "subtype": "platform", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-workflow-engine.git", "path": "govoplan-workflow-engine"},
{"name": "govoplan-xoev", "category": "connector", "subtype": "standard", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-xoev.git", "path": "govoplan-xoev"}, {"name": "govoplan-xoev", "category": "connector", "subtype": "standard", "remote": "git@git.add-ideas.de:GovOPlaN/govoplan-xoev.git", "path": "govoplan-xoev"},
+2 -2
View File
@@ -82,7 +82,7 @@ def environment(tmp_path, monkeypatch):
if step.get("repo"): if step.get("repo"):
step["source_binding"] = receipt(step["repo"]) step["source_binding"] = receipt(step["repo"])
elif step["id"] == "catalog:validate-sign-publish": elif step["id"] == "catalog:validate-sign-publish":
step["source_binding"] = receipt("addideas-govoplan-website", target_tag="") step["source_binding"] = receipt("govoplan-website", target_tag="")
return result return result
monkeypatch.setattr(api, "build_dashboard", dashboard) monkeypatch.setattr(api, "build_dashboard", dashboard)
@@ -432,7 +432,7 @@ def test_catalog_generation_and_publication_use_exact_durable_receipts(environme
generator = Mock(side_effect=generated) generator = Mock(side_effect=generated)
publisher = Mock(side_effect=published) publisher = Mock(side_effect=published)
website = receipt("addideas-govoplan-website", target_tag="") website = receipt("govoplan-website", target_tag="")
monkeypatch.setattr(api, "generate_catalog_candidate", generator) monkeypatch.setattr(api, "generate_catalog_candidate", generator)
monkeypatch.setattr(api, "publish_received_candidate", publisher) monkeypatch.setattr(api, "publish_received_candidate", publisher)
monkeypatch.setattr(api, "verify_catalog_publication_precondition", Mock(return_value=website)) monkeypatch.setattr(api, "verify_catalog_publication_precondition", Mock(return_value=website))
+1 -1
View File
@@ -44,7 +44,7 @@ class FullRegistryCatalogTests(unittest.TestCase):
self.temp = tempfile.TemporaryDirectory() self.temp = tempfile.TemporaryDirectory()
self.addCleanup(self.temp.cleanup) self.addCleanup(self.temp.cleanup)
self.root = Path(self.temp.name) self.root = Path(self.temp.name)
self.web = self.root / "addideas-govoplan-website" self.web = self.root / "govoplan-website"
self.wheels = self.root / "wheels" self.wheels = self.root / "wheels"
self.npm = self.root / "npm" self.npm = self.root / "npm"
self.wheels.mkdir(mode=0o700) self.wheels.mkdir(mode=0o700)
+3 -3
View File
@@ -1411,7 +1411,7 @@ class ReleaseRunApiTests(unittest.TestCase):
patch( patch(
"server.app.verify_catalog_publication_precondition", "server.app.verify_catalog_publication_precondition",
return_value=repository_receipt( return_value=repository_receipt(
repo="addideas-govoplan-website", target_tag="" repo="govoplan-website", target_tag=""
), ),
), ),
patch("server.app.default_signing_keys", return_value=("key=/private",)), patch("server.app.default_signing_keys", return_value=("key=/private",)),
@@ -1473,7 +1473,7 @@ class ReleaseRunApiTests(unittest.TestCase):
workspace_root=Path(temp_dir), workspace_root=Path(temp_dir),
remote="origin", remote="origin",
expected_website_receipt=repository_receipt( expected_website_receipt=repository_receipt(
repo="addideas-govoplan-website", target_tag="" repo="govoplan-website", target_tag=""
), ),
) )
@@ -2199,7 +2199,7 @@ def bind_test_plan_source_states(**kwargs: object) -> dict[str, object]:
step["source_binding"] = repository_receipt() step["source_binding"] = repository_receipt()
elif step.get("id") == "catalog:validate-sign-publish": elif step.get("id") == "catalog:validate-sign-publish":
step["source_binding"] = repository_receipt( step["source_binding"] = repository_receipt(
repo="addideas-govoplan-website", target_tag="" repo="govoplan-website", target_tag=""
) )
return plan return plan
+2 -2
View File
@@ -253,7 +253,7 @@ class RepositoryBootstrapTests(unittest.TestCase):
"path": "website", "path": "website",
"remote": ( "remote": (
"git@git.add-ideas.de:" "git@git.add-ideas.de:"
"add-ideas/addideas-govoplan-website.git" "add-ideas/govoplan-website.git"
), ),
"bootstrap_transport": (bootstrap.REGISTERED_TRANSPORT), "bootstrap_transport": (bootstrap.REGISTERED_TRANSPORT),
} }
@@ -278,7 +278,7 @@ class RepositoryBootstrapTests(unittest.TestCase):
self.assertEqual(0, status) self.assertEqual(0, status)
command = runner.call_args.args[0] command = runner.call_args.args[0]
self.assertEqual( self.assertEqual(
"git@git.add-ideas.de:add-ideas/addideas-govoplan-website.git", "git@git.add-ideas.de:add-ideas/govoplan-website.git",
command[-2], command[-2],
) )
+2 -2
View File
@@ -16,7 +16,7 @@ from gitea_common import GiteaClient, GiteaError, infer_target, label_ids_by_nam
DEFAULT_PRODUCT_BACKLOG = pathlib.Path("/mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md") DEFAULT_PRODUCT_BACKLOG = pathlib.Path("/mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md")
DEFAULT_WEB_TODO = pathlib.Path("/mnt/DATA/git/addideas-govoplan-website/TODO.md") DEFAULT_WEB_TODO = pathlib.Path("/mnt/DATA/git/govoplan-website/TODO.md")
REPO_ROOTS = { REPO_ROOTS = {
"core": pathlib.Path("/mnt/DATA/git/govoplan-core"), "core": pathlib.Path("/mnt/DATA/git/govoplan-core"),
@@ -24,7 +24,7 @@ REPO_ROOTS = {
"mail": pathlib.Path("/mnt/DATA/git/govoplan-mail"), "mail": pathlib.Path("/mnt/DATA/git/govoplan-mail"),
"files": pathlib.Path("/mnt/DATA/git/govoplan-files"), "files": pathlib.Path("/mnt/DATA/git/govoplan-files"),
"campaign": pathlib.Path("/mnt/DATA/git/govoplan-campaign"), "campaign": pathlib.Path("/mnt/DATA/git/govoplan-campaign"),
"web": pathlib.Path("/mnt/DATA/git/addideas-govoplan-website"), "web": pathlib.Path("/mnt/DATA/git/govoplan-website"),
} }
MODULE_LABELS = { MODULE_LABELS = {
+1 -1
View File
@@ -251,7 +251,7 @@ def is_excluded_repo_file(path: pathlib.Path) -> bool:
return True return True
if text.endswith("/docs/GOVOPLAN_MASTER_ROADMAP.md"): if text.endswith("/docs/GOVOPLAN_MASTER_ROADMAP.md"):
return True return True
if text.endswith("/addideas-govoplan-website/TODO.md"): if text.endswith(("/govoplan-website/TODO.md", "/addideas-govoplan-website/TODO.md")):
return True return True
return False return False
+1 -1
View File
@@ -30,7 +30,7 @@ MODULE_LABEL_BY_REPO = {
"govoplan-mail": "module/mail", "govoplan-mail": "module/mail",
"govoplan-files": "module/files", "govoplan-files": "module/files",
"govoplan-campaign": "module/campaign", "govoplan-campaign": "module/campaign",
"addideas-govoplan-website": "area/marketing", "govoplan-website": "area/marketing",
} }
+1 -1
View File
@@ -325,7 +325,7 @@ def infer_module_label(root: pathlib.Path) -> str:
"govoplan-mail": "module/mail", "govoplan-mail": "module/mail",
"govoplan-files": "module/files", "govoplan-files": "module/files",
"govoplan-campaign": "module/campaign", "govoplan-campaign": "module/campaign",
"addideas-govoplan-website": "area/marketing", "govoplan-website": "area/marketing",
} }
if root.name in known: if root.name in known:
return known[root.name] return known[root.name]
@@ -167,7 +167,7 @@ def executor_spec(plan_step: dict[str, Any]) -> ExecutorSpec | None:
spec spec
if plan_step.get("repo") is None if plan_step.get("repo") is None
and isinstance(binding, dict) and isinstance(binding, dict)
and binding.get("repo") == "addideas-govoplan-website" and binding.get("repo") == "govoplan-website"
else None else None
) )
repo = plan_step.get("repo") repo = plan_step.get("repo")
@@ -233,7 +233,7 @@ def bind_plan_source_states(
bindings[repo] = None bindings[repo] = None
try: try:
website_binding = repository_state_receipt( website_binding = repository_state_receipt(
repo="addideas-govoplan-website", repo="govoplan-website",
target_tag="", target_tag="",
workspace_root=workspace_root, workspace_root=workspace_root,
include_website=True, include_website=True,
@@ -1665,7 +1665,7 @@ def verify_catalog_publication_precondition(
*, plan_step: dict[str, Any], workspace_root: Path *, plan_step: dict[str, Any], workspace_root: Path
) -> dict[str, Any]: ) -> dict[str, Any]:
current = repository_state_receipt( current = repository_state_receipt(
repo="addideas-govoplan-website", repo="govoplan-website",
target_tag="", target_tag="",
workspace_root=workspace_root, workspace_root=workspace_root,
include_website=True, include_website=True,
@@ -3052,7 +3052,7 @@ def reconciled_catalog_publication_receipt(
web_root = website_root(workspace_root) web_root = website_root(workspace_root)
current = repository_state_receipt( current = repository_state_receipt(
repo="addideas-govoplan-website", repo="govoplan-website",
target_tag="", target_tag="",
workspace_root=workspace_root, workspace_root=workspace_root,
include_website=True, include_website=True,
@@ -3181,7 +3181,7 @@ def _validated_website_binding(value: object) -> dict[str, Any]:
if ( if (
not isinstance(value, dict) not isinstance(value, dict)
or value.get("kind") != "repository_state" or value.get("kind") != "repository_state"
or value.get("repo") != "addideas-govoplan-website" or value.get("repo") != "govoplan-website"
or value.get("remote") != DURABLE_REMOTE or value.get("remote") != DURABLE_REMOTE
or value.get("target_tag") != "" or value.get("target_tag") != ""
or value.get("tag_object") is not None or value.get("tag_object") is not None
+1 -1
View File
@@ -56,4 +56,4 @@ def core_root(workspace_root: Path) -> Path:
def website_root(workspace_root: Path) -> Path: def website_root(workspace_root: Path) -> Path:
return workspace_root / "addideas-govoplan-website" return workspace_root / "govoplan-website"
+13 -13
View File
@@ -7,8 +7,8 @@ Usage:
tools/release/publish-release-catalog.sh --version <x.y.z> --catalog-signing-key <key-id=/path/private.pem> [options] tools/release/publish-release-catalog.sh --version <x.y.z> --catalog-signing-key <key-id=/path/private.pem> [options]
Generates a signed module package catalog for a GovOPlaN release, writes it into Generates a signed module package catalog for a GovOPlaN release, writes it into
addideas-govoplan-website/public/catalogs/v1, validates it, optionally builds the website, govoplan-website/public/catalogs/v1, validates it, optionally builds the website,
and optionally commits/tags/pushes addideas-govoplan-website. and optionally commits/tags/pushes govoplan-website.
Options: Options:
--version <x.y.z> Release version without leading v. --version <x.y.z> Release version without leading v.
@@ -19,15 +19,15 @@ Options:
--catalog-signing-key <key-id=/path/private.pem> --catalog-signing-key <key-id=/path/private.pem>
Ed25519 private key. May be repeated for rotation. Ed25519 private key. May be repeated for rotation.
--core-root <path> govoplan-core checkout. Defaults to ../govoplan-core. --core-root <path> govoplan-core checkout. Defaults to ../govoplan-core.
--web-root <path> addideas-govoplan-website checkout. Defaults to ../addideas-govoplan-website. --web-root <path> govoplan-website checkout. Defaults to ../govoplan-website.
--public-base-url <url> Public website URL. Defaults to https://govoplan.add-ideas.de. --public-base-url <url> Public website URL. Defaults to https://govoplan.add-ideas.de.
--npm <path> npm executable used for optional web build. --npm <path> npm executable used for optional web build.
--build-web Run npm run build in addideas-govoplan-website after generating files. --build-web Run npm run build in govoplan-website after generating files.
--commit Commit generated catalog files in addideas-govoplan-website. --commit Commit generated catalog files in govoplan-website.
--tag Tag addideas-govoplan-website with catalog-v<x.y.z>. Implies --commit. --tag Tag govoplan-website with catalog-v<x.y.z>. Implies --commit.
--push Push addideas-govoplan-website branch and tag. Implies --commit. --push Push govoplan-website branch and tag. Implies --commit.
--remote <name> Git remote for push. Defaults to origin. --remote <name> Git remote for push. Defaults to origin.
--branch <name> Branch to push. Defaults to current addideas-govoplan-website branch. --branch <name> Branch to push. Defaults to current govoplan-website branch.
-n, --dry-run Print commands and validate inputs without writing git changes. -n, --dry-run Print commands and validate inputs without writing git changes.
-h, --help Show this help. -h, --help Show this help.
USAGE USAGE
@@ -42,7 +42,7 @@ META_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
PARENT="$(dirname "$META_ROOT")" PARENT="$(dirname "$META_ROOT")"
CORE_ROOT="${GOVOPLAN_CORE_ROOT:-$PARENT/govoplan-core}" CORE_ROOT="${GOVOPLAN_CORE_ROOT:-$PARENT/govoplan-core}"
CORE_ROOT="$(cd "$CORE_ROOT" && pwd)" CORE_ROOT="$(cd "$CORE_ROOT" && pwd)"
WEB_ROOT="$PARENT/addideas-govoplan-website" WEB_ROOT="$PARENT/govoplan-website"
VERSION="" VERSION=""
CHANNEL="stable" CHANNEL="stable"
SEQUENCE="" SEQUENCE=""
@@ -176,14 +176,14 @@ done
[[ "$PROFILE" == "base" || "$PROFILE" == "full" ]] || fail "profile must be base or full: $PROFILE" [[ "$PROFILE" == "base" || "$PROFILE" == "full" ]] || fail "profile must be base or full: $PROFILE"
[[ ${#SIGNING_KEYS[@]} -gt 0 ]] || fail "at least one --catalog-signing-key is required" [[ ${#SIGNING_KEYS[@]} -gt 0 ]] || fail "at least one --catalog-signing-key is required"
[[ -d "$CORE_ROOT/.git" ]] || fail "not a govoplan-core git repo: $CORE_ROOT" [[ -d "$CORE_ROOT/.git" ]] || fail "not a govoplan-core git repo: $CORE_ROOT"
[[ -d "$WEB_ROOT/.git" ]] || fail "not an addideas-govoplan-website git repo: $WEB_ROOT" [[ -d "$WEB_ROOT/.git" ]] || fail "not an govoplan-website git repo: $WEB_ROOT"
command -v "$PYTHON" >/dev/null 2>&1 || fail "Python not found: $PYTHON" command -v "$PYTHON" >/dev/null 2>&1 || fail "Python not found: $PYTHON"
command -v "$NPM_BIN" >/dev/null 2>&1 || fail "npm not found: $NPM_BIN" command -v "$NPM_BIN" >/dev/null 2>&1 || fail "npm not found: $NPM_BIN"
if [[ -z "$BRANCH" ]]; then if [[ -z "$BRANCH" ]]; then
BRANCH="$(git -C "$WEB_ROOT" symbolic-ref --quiet --short HEAD || true)" BRANCH="$(git -C "$WEB_ROOT" symbolic-ref --quiet --short HEAD || true)"
fi fi
[[ -n "$BRANCH" ]] || fail "cannot infer addideas-govoplan-website branch; pass --branch" [[ -n "$BRANCH" ]] || fail "cannot infer govoplan-website branch; pass --branch"
CATALOG_PATH="$WEB_ROOT/public/catalogs/v1/channels/$CHANNEL.json" CATALOG_PATH="$WEB_ROOT/public/catalogs/v1/channels/$CHANNEL.json"
KEYRING_PATH="$WEB_ROOT/public/catalogs/v1/keyring.json" KEYRING_PATH="$WEB_ROOT/public/catalogs/v1/keyring.json"
@@ -257,7 +257,7 @@ if [[ "$COMMIT" -eq 1 ]]; then
run git -C "$WEB_ROOT" add -A "$CATALOG_PATH" "$KEYRING_PATH" "$MODULE_DIRECTORY_PATH" run git -C "$WEB_ROOT" add -A "$CATALOG_PATH" "$KEYRING_PATH" "$MODULE_DIRECTORY_PATH"
if [[ "$DRY_RUN" -eq 0 ]]; then if [[ "$DRY_RUN" -eq 0 ]]; then
if git -C "$WEB_ROOT" diff --cached --quiet; then if git -C "$WEB_ROOT" diff --cached --quiet; then
echo "No addideas-govoplan-website catalog changes to commit." echo "No govoplan-website catalog changes to commit."
else else
run git -C "$WEB_ROOT" commit -m "Publish GovOPlaN v$VERSION $CHANNEL catalog" run git -C "$WEB_ROOT" commit -m "Publish GovOPlaN v$VERSION $CHANNEL catalog"
fi fi
@@ -268,7 +268,7 @@ fi
if [[ "$TAG_WEB" -eq 1 ]]; then if [[ "$TAG_WEB" -eq 1 ]]; then
if git -C "$WEB_ROOT" rev-parse --quiet --verify "refs/tags/$TAG_NAME" >/dev/null; then if git -C "$WEB_ROOT" rev-parse --quiet --verify "refs/tags/$TAG_NAME" >/dev/null; then
fail "addideas-govoplan-website tag already exists: $TAG_NAME" fail "govoplan-website tag already exists: $TAG_NAME"
fi fi
run git -C "$WEB_ROOT" tag -a "$TAG_NAME" -m "Publish GovOPlaN v$VERSION $CHANNEL catalog" run git -C "$WEB_ROOT" tag -a "$TAG_NAME" -m "Publish GovOPlaN v$VERSION $CHANNEL catalog"
fi fi
+6 -6
View File
@@ -30,9 +30,9 @@ Options:
latest migration release baseline. latest migration release baseline.
--skip-migration-audit Do not run the release migration audit. --skip-migration-audit Do not run the release migration audit.
--publish-web-catalog After core/modules are pushed, publish a signed release --publish-web-catalog After core/modules are pushed, publish a signed release
catalog into addideas-govoplan-website. catalog into govoplan-website.
--web-root <path> addideas-govoplan-website checkout for --publish-web-catalog. --web-root <path> govoplan-website checkout for --publish-web-catalog.
Defaults to ../addideas-govoplan-website. Defaults to ../govoplan-website.
--catalog-signing-key <key-id=/path/private.pem> --catalog-signing-key <key-id=/path/private.pem>
Catalog signing key for --publish-web-catalog. May be Catalog signing key for --publish-web-catalog. May be
repeated during key rotation. repeated during key rotation.
@@ -44,7 +44,7 @@ Options:
--catalog-public-url <url> --catalog-public-url <url>
Public website URL. Defaults to Public website URL. Defaults to
https://govoplan.add-ideas.de. https://govoplan.add-ideas.de.
--build-web-catalog Run npm run build in addideas-govoplan-website before committing the --build-web-catalog Run npm run build in govoplan-website before committing the
catalog update. catalog update.
--npm <path> npm executable for lockfile generation. --npm <path> npm executable for lockfile generation.
-y, --yes Do not prompt before committing, tagging, and pushing. -y, --yes Do not prompt before committing, tagging, and pushing.
@@ -174,7 +174,7 @@ GENERATE_RELEASE_LOCK=1
MIGRATION_AUDIT_MODE="auto" MIGRATION_AUDIT_MODE="auto"
NPM_BIN="${NPM:-}" NPM_BIN="${NPM:-}"
PUBLISH_WEB_CATALOG=0 PUBLISH_WEB_CATALOG=0
WEB_ROOT="$PARENT/addideas-govoplan-website" WEB_ROOT="$PARENT/govoplan-website"
CATALOG_CHANNEL="stable" CATALOG_CHANNEL="stable"
CATALOG_SEQUENCE="" CATALOG_SEQUENCE=""
CATALOG_EXPIRES_DAYS="90" CATALOG_EXPIRES_DAYS="90"
@@ -813,7 +813,7 @@ if ! command -v "$NPM_BIN" >/dev/null 2>&1; then
fail "npm executable not found: $NPM_BIN" fail "npm executable not found: $NPM_BIN"
fi fi
if [[ "$PUBLISH_WEB_CATALOG" -eq 1 ]]; then if [[ "$PUBLISH_WEB_CATALOG" -eq 1 ]]; then
[[ -d "$WEB_ROOT/.git" ]] || fail "addideas-govoplan-website repo not found: $WEB_ROOT" [[ -d "$WEB_ROOT/.git" ]] || fail "govoplan-website repo not found: $WEB_ROOT"
[[ -x "$META_ROOT/tools/release/publish-release-catalog.sh" ]] || fail "missing executable catalog publisher: $META_ROOT/tools/release/publish-release-catalog.sh" [[ -x "$META_ROOT/tools/release/publish-release-catalog.sh" ]] || fail "missing executable catalog publisher: $META_ROOT/tools/release/publish-release-catalog.sh"
fi fi
+1 -1
View File
@@ -521,7 +521,7 @@ def migration_findings(migration_audits: dict[str, dict[str, Any]], *, target_ve
def collect_catalog_state(*, workspace_root: Path, target_version: str | None, online: bool) -> dict[str, Any]: def collect_catalog_state(*, workspace_root: Path, target_version: str | None, online: bool) -> dict[str, Any]:
web_root = workspace_root / "addideas-govoplan-website" web_root = workspace_root / "govoplan-website"
catalog_path = web_root / "public" / "catalogs" / "v1" / "channels" / "stable.json" catalog_path = web_root / "public" / "catalogs" / "v1" / "channels" / "stable.json"
keyring_path = web_root / "public" / "catalogs" / "v1" / "keyring.json" keyring_path = web_root / "public" / "catalogs" / "v1" / "keyring.json"
state: dict[str, Any] = { state: dict[str, Any] = {