Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .deploy/mta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ID: tutorials-ims
# Bump this on each release you deploy — it's the version shown by `cf mtas`
# and in the mtar filename (tutorials-ims_<version>.mtar). Deploy is manual:
# `cd .deploy && mbt build && cf deploy mta_archives/tutorials-ims_<version>.mtar -e ../deploy/<env>.mtaext -f`.
version: 1.41.2
version: 1.41.3

# Top-level parameters (overridable per-env via deploy/<env>.mtaext).
parameters:
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/rebuild-content-qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,14 @@ jobs:
# infra run and file a false failure issue.
if: ${{ steps.source_errors.outputs.bad_slug == '' }}
env:
APPROUTER_URL: ${{ secrets.APPROUTER_URL_QA }}
# QA is a feature of PRODUCTION, not a separate environment: /tutorials-qa/*
# is routed by the MAIN (prod) approuter (approuter/xs-app.json → srv-qa-api
# destination), so the QA HTML is dressed by the PROD approuter. The asset
# guard must probe that same approuter. There is no APPROUTER_URL_QA secret
# (only _DEV / _PROD); referencing it resolved to an empty string and the
# guard die()d with "missing --approuter-url" on every full QA rebuild
# (2026-10-25).
APPROUTER_URL: ${{ secrets.APPROUTER_URL_PROD }}
# Match the publish step's PUBLISH_SLUG / PUBLISH_SLUGS expressions
# EXACTLY (lines 424/431) so the probe scope tracks the publish scope:
# a force-publish run ships the WHOLE catalog, so it must NOT pin the
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,19 @@ jobs:
# available to all workers unconditionally, matching what the MTA
# before-all and local dev do.
run: node scripts/bundle-shared.cjs
- name: Generate fingerprinted CSS (sap-fundamental + icon subset) required by the Hugo build test
# test/unit/hugo-homepage-partials.test.ts spawns a real Hugo build, and
# hugo/layouts/partials/head.html:27 does
# resources.Get "css/fundamental-styles-icon.css" | minify | fingerprint
# Since ac6b7e39f ("stop committing generated CSS so deploy & rebuild
# agree on fingerprint") both sap-fundamental.css and
# fundamental-styles-icon.css are gitignored build outputs — absent on a
# fresh checkout. Without them `resources.Get` misses the asset, `minify`
# receives a non-transformable resource.Resource, and the Hugo build exits
# 1 → 7 test files fail. rebuild-content.yml already regenerates these
# before its Hugo build; mirror that here so the unit suite does too.
run: |
npm run build:icon-subset
npm run build:css
- name: Run unit tests
run: npm test
54 changes: 53 additions & 1 deletion hugo/data/whats_new.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"generatedAt": "2026-10-25T12:04:13.836Z",
"generatedAt": "2026-10-25T13:42:26.548Z",
"repos": [
{
"key": "tutorials-ims",
Expand All @@ -8,6 +8,58 @@
}
],
"entries": [
{
"id": "tutorials-ims#2923",
"repo": "tutorials-ims",
"label": "Developer Portal",
"number": 2923,
"title": "fix(ci): QA asset guard probes PROD approuter (QA is a feature of prod)",
"summary": "Fixed the QA author-preview rebuild so its asset check targets the correct approuter, unblocking QA content refreshes.",
"category": "Maintenance",
"mergedAt": "2026-10-25T13:37:15Z",
"week": "2026-W43",
"weekStart": "2026-10-19",
"url": "https://github.com/sap-tutorials/tutorials-ims/pull/2923"
},
{
"id": "tutorials-ims#2922",
"repo": "tutorials-ims",
"label": "Developer Portal",
"number": 2922,
"title": "fix(ci): regenerate gitignored CSS before unit-test Hugo build",
"summary": "Unit-test build now regenerates its CSS first, so the test suite runs reliably on a clean checkout.",
"category": "Maintenance",
"mergedAt": "2026-10-25T12:48:25Z",
"week": "2026-W43",
"weekStart": "2026-10-19",
"url": "https://github.com/sap-tutorials/tutorials-ims/pull/2922"
},
{
"id": "tutorials-ims#2921",
"repo": "tutorials-ims",
"label": "Developer Portal",
"number": 2921,
"title": "TypeScript glossary entry corrected",
"summary": "Corrected the glossary definition for TypeScript so the term reads accurately for learners.",
"category": "Fix",
"mergedAt": "2026-10-25T12:23:58Z",
"week": "2026-W43",
"weekStart": "2026-10-19",
"url": "https://github.com/sap-tutorials/tutorials-ims/pull/2921"
},
{
"id": "tutorials-ims#2919",
"repo": "tutorials-ims",
"label": "Developer Portal",
"number": 2919,
"title": "release v1.41.2 DEV to main promotion",
"summary": "Release 1.41.2 promoted the QA content-pipeline fix from DEV to the production branch.",
"category": "Maintenance",
"mergedAt": "2026-10-25T12:05:49Z",
"week": "2026-W43",
"weekStart": "2026-10-19",
"url": "https://github.com/sap-tutorials/tutorials-ims/pull/2919"
},
{
"id": "tutorials-ims#2918",
"repo": "tutorials-ims",
Expand Down
2 changes: 1 addition & 1 deletion mta-mcp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ _schema-version: 3.3.0
# This file lives at repo root → path: gen/srv-mcp (root-relative, no ../).
# before-all runs from ROOT (no cd ..) — mbt uses the descriptor's directory as cwd.
ID: tutorials-mcp
version: 1.1.2
version: 1.1.3

# Destinations are subaccount-level, so DEV and PROD (sharing one subaccount)
# need DISTINCT destination names. `dest-main-srv` defaults to the PROD name;
Expand Down
Loading